X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Frendercolor.cc;h=36f941c6734d220285407c9423135ac5f8d4f0a8;hb=46441f7d60c008b11a170516734ae7a5932a738e;hp=b5e037d382272e1a9cd026b09c31a8b0b8625f66;hpb=033e9843bcec8340c9e657fe0f0519f86075424b;p=chaz%2Fopenbox diff --git a/otk/rendercolor.cc b/otk/rendercolor.cc index b5e037d3..36f941c6 100644 --- a/otk/rendercolor.cc +++ b/otk/rendercolor.cc @@ -47,11 +47,14 @@ void RenderColor::create() { unsigned long color = _blue | _green << 8 | _red << 16; + printf("CREATE COLOR: %lx\n", color); + // try get a gc from the cache CacheItem *item = _cache[_screen][color]; if (item) { _gc = item->gc; + _pixel = item->pixel; ++item->count; } else { XGCValues gcv; @@ -79,17 +82,21 @@ void RenderColor::create() assert(_gc); // insert into the cache - _cache[_screen][color] = new CacheItem(_gc); + item = new CacheItem(_gc, _pixel); + _cache[_screen][color] = item; + ++item->count; } } RenderColor::~RenderColor() { unsigned long color = _blue | _green << 8 | _red << 16; - + CacheItem *item = _cache[_screen][color]; assert(item); // it better be in the cache ... + printf("DESTROY COLOR: %lx %d\n", color, item->count); + if (--item->count <= 0) { // remove from the cache XFreeGC(**display, _gc);