# include <stdlib.h>
#endif
-static OtkGCCache *gccache;
+static OtkGCCache *gccache = NULL;
OtkGCCacheContext *OtkGCCacheContext_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*) *
}
-void OtkGCCache_Destroy()
+/*void OtkGCCache_Destroy()
{
- int i;
+ unsigned int i;
for (i = 0; i < gccache->context_count; ++i)
OtkGCCacheContext_Destroy(gccache->contexts[i]);
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];
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;
/*
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;
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;
}
}