diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-10-11 06:45:04 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-10-11 06:45:04 +0000 |
| commit | 35e3370651be572c710a09f6bb6190207c5dbd01 (patch) | |
| tree | 67b40b49c39d8d714d22dddd1fd9af99169dcc51 /render/color.c | |
| parent | 7833271d1461d9b0e02ffc804cd4e0156fd8faf4 (diff) | |
add an id to colors for debugging purposes
Diffstat (limited to 'render/color.c')
| -rw-r--r-- | render/color.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/render/color.c b/render/color.c index c672a6d2..485b3d66 100644 --- a/render/color.c +++ b/render/color.c @@ -54,6 +54,11 @@ RrColor *RrColorParse(const RrInstance *inst, gchar *colorname) return RrColorNew(inst, xcol.red >> 8, xcol.green >> 8, xcol.blue >> 8); } +/*#define NO_COLOR_CACHE*/ +#ifdef DEBUG +gint id; +#endif + RrColor *RrColorNew(const RrInstance *inst, gint r, gint g, gint b) { /* this should be replaced with something far cooler */ @@ -62,9 +67,11 @@ RrColor *RrColorNew(const RrInstance *inst, gint r, gint g, gint b) gint key; key = (r << 24) + (g << 16) + (b << 8); +#ifndef NO_COLOR_CACHE if ((out = g_hash_table_lookup(RrColorHash(inst), &key))) { out->refcount++; } else { +#endif xcol.red = (r << 8) | r; xcol.green = (g << 8) | g; xcol.blue = (b << 8) | b; @@ -78,8 +85,13 @@ RrColor *RrColorNew(const RrInstance *inst, gint r, gint g, gint b) out->pixel = xcol.pixel; out->key = key; out->refcount = 1; +#ifdef DEBUG + out->id = id++; +#endif +#ifndef NO_COLOR_CACHE g_hash_table_insert(RrColorHash(inst), &out->key, out); } +#endif } return out; } @@ -88,8 +100,10 @@ void RrColorFree(RrColor *c) { if (c) { if (--c->refcount < 1) { +#ifndef NO_COLOR_CACHE g_assert(g_hash_table_lookup(RrColorHash(c->inst), &c->key)); g_hash_table_remove(RrColorHash(c->inst), &c->key); +#endif if (c->pixel) XFreeColors(RrDisplay(c->inst), RrColormap(c->inst), &c->pixel, 1, 0); if (c->gc) XFreeGC(RrDisplay(c->inst), c->gc); |
