]> Dogcows Code - chaz/openbox/blobdiff - otk_c/gccache.c
make rect a proper pyobject. use "typesafety"
[chaz/openbox] / otk_c / gccache.c
index 7d96677c747a3d34e9c4bbd88c9c751c4f9bcb8a..f8b40f31e6d6fdfe148d2fa18de9287bbaa69e34 100644 (file)
@@ -8,7 +8,7 @@
 # include <stdlib.h>
 #endif
 
-static OtkGCCache *gccache;
+static OtkGCCache *gccache = NULL;
 
 OtkGCCacheContext *OtkGCCacheContext_New()
 {
@@ -81,18 +81,20 @@ OtkGCCacheItem *OtkGCCacheItem_New()
   self->count = 0;
   self->hits = 0;
   self->fault = False;
+
+  return self;
 }
 
 
-void OtkGCCache_Initialize(int screen_count)
+void OtkGCCache_Initialize()
 {
-  int i;
+  unsigned int i;
 
   gccache = malloc(sizeof(OtkGCCache));
 
   gccache->context_count = 128;
   gccache->cache_size = 16;
-  gccache->cache_buckets = 8 * screen_count;
+  gccache->cache_buckets = 8 * ScreenCount(OBDisplay->display);
   gccache->cache_total_size = gccache->cache_size * gccache->cache_buckets;
 
   gccache->contexts = malloc(sizeof(OtkGCCacheContext*) *
@@ -106,9 +108,9 @@ void OtkGCCache_Initialize(int screen_count)
 }
 
 
-void OtkGCCache_Destroy()
+/*void OtkGCCache_Destroy()
 {
-  int i;
+  unsigned int i;
 
   for (i = 0; i < gccache->context_count; ++i)
     OtkGCCacheContext_Destroy(gccache->contexts[i]);
@@ -120,13 +122,13 @@ void OtkGCCache_Destroy()
   free(gccache->cache);
   free(gccache);
   gccache = NULL;
-}
+}*/
 
-OtkGCCacheContext *OtkGCCache_NextContext(int screen)
+static OtkGCCacheContext *nextContext(int screen)
 {
   Window hd = OtkDisplay_ScreenInfo(OBDisplay, screen)->root_window;
   OtkGCCacheContext *c;
-  int i;
+  unsigned int i;
 
   for (i = 0; i < gccache->context_count; ++i) {
     c = gccache->contexts[i];
@@ -155,10 +157,10 @@ OtkGCCacheItem *OtkGCCache_Find(OtkColor *color, XFontStruct *font,
                                int function, int subwindow, int linewidth)
 {
   const unsigned long pixel = OtkColor_Pixel(color);
-  const unsigned int screen = color->screen;
+  const int screen = color->screen;
   const int key = color->red ^ color->green ^ color->blue;
   int k = (key % gccache->cache_size) * gccache->cache_buckets;
-  int i = 0; // loop variable
+  unsigned int i = 0; // loop variable
   OtkGCCacheItem *c = gccache->cache[k], *prev = 0;
 
   /*
@@ -200,7 +202,7 @@ OtkGCCacheItem *OtkGCCache_Find(OtkColor *color, XFontStruct *font,
       gccache->cache[k-1] = c;
     }
   } else {
-    c->ctx = OtkGCCache_NextContext(screen);
+    c->ctx = nextContext(screen);
     OtkGCCacheContext_Set(c->ctx, color, font, function, subwindow, linewidth);
     c->ctx->used = True;
     c->count = 1;
@@ -219,13 +221,13 @@ void OtkGCCache_Release(OtkGCCacheItem *item)
 
 void OtkGCCache_Purge()
 {
-  int i;
+  unsigned int i;
   
   for (i = 0; i < gccache->cache_total_size; ++i) {
     OtkGCCacheItem *d = gccache->cache[i];
 
     if (d->ctx && d->count == 0) {
-      release(d->ctx);
+      OtkGCCache_InternalRelease(d->ctx);
       d->ctx = 0;
     }
   }
This page took 0.023443 seconds and 4 git commands to generate.