summaryrefslogtreecommitdiff
path: root/render/color.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-10-11 06:45:04 +0000
committerDana Jansens <danakj@orodu.net>2003-10-11 06:45:04 +0000
commit35e3370651be572c710a09f6bb6190207c5dbd01 (patch)
tree67b40b49c39d8d714d22dddd1fd9af99169dcc51 /render/color.c
parent7833271d1461d9b0e02ffc804cd4e0156fd8faf4 (diff)
add an id to colors for debugging purposes
Diffstat (limited to 'render/color.c')
-rw-r--r--render/color.c14
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);