X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk_c%2Fgccache.c;h=85ab9f9e4bf9fe8dfaa4651198e0f5feae61d2b4;hb=261034b354cc3571ef59d0b13bdbdecbb2e06075;hp=7d96677c747a3d34e9c4bbd88c9c751c4f9bcb8a;hpb=59b65db2cac9f359dfcff3ab988e70eab053bdb4;p=chaz%2Fopenbox diff --git a/otk_c/gccache.c b/otk_c/gccache.c index 7d96677c..85ab9f9e 100644 --- a/otk_c/gccache.c +++ b/otk_c/gccache.c @@ -1,4 +1,4 @@ -// -*- mode: C; indent-tabs-mode: nil; -*- +// -*- mode: C; indent-tabs-mode: nil; c-basic-offset: 2; -*- #include "../config.h" #include "gccache.h" @@ -8,7 +8,7 @@ # include #endif -static OtkGCCache *gccache; +static OtkGCCache *gccache = NULL; OtkGCCacheContext *OtkGCCacheContext_New() { @@ -40,7 +40,7 @@ void OtkGCCacheContext_Set(OtkGCCacheContext *self, XGCValues gcv; unsigned long mask; - self->pixel = gcv.foreground = OtkColor_Pixel(color); + self->pixel = gcv.foreground = color->pixel; self->function = gcv.function = function; self->subwindow = gcv.subwindow_mode = subwindow; self->linewidth = gcv.line_width = linewidth; @@ -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]; @@ -154,11 +156,11 @@ static void OtkGCCache_InternalRelease(OtkGCCacheContext *ctx) 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 unsigned long pixel = color->pixel; + 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; } }