]> Dogcows Code - chaz/openbox/blobdiff - render/color.c
consistant glib type usage
[chaz/openbox] / render / color.c
index cd42758b58796e9680328f9b9e119871484fea88..491dc47ba1695d21a7cbe96a2be342bf7e789608 100644 (file)
@@ -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;
-            g_hash_table_replace(RrColorHash(inst), &out->key, out);
+#ifdef DEBUG
+            out->id = id++;
+#endif
+#ifndef NO_COLOR_CACHE
+            g_hash_table_insert(RrColorHash(inst), &out->key, out);
         }
+#endif
     }
     return out;
 }
@@ -88,7 +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);
@@ -99,11 +114,11 @@ void RrColorFree(RrColor *c)
 
 void RrReduceDepth(const RrInstance *inst, RrPixel32 *data, XImage *im)
 {
-    int r, g, b;
-    int x,y;
+    gint r, g, b;
+    gint x,y;
     RrPixel32 *p32 = (RrPixel32 *) im->data;
     RrPixel16 *p16 = (RrPixel16 *) im->data;
-    unsigned char *p8 = (unsigned char *)im->data;
+    guchar *p8 = (guchar *)im->data;
     switch (im->bits_per_pixel) {
     case 32:
         if ((RrRedOffset(inst) != RrDefaultRedOffset) ||
@@ -121,7 +136,7 @@ void RrReduceDepth(const RrInstance *inst, RrPixel32 *data, XImage *im)
                 data += im->width;
                 p32 += im->width;
             } 
-        } else im->data = (char*) data;
+        } else im->data = (gchar*) data;
         break;
     case 16:
         for (y = 0; y < im->height; y++) {
@@ -171,13 +186,13 @@ XColor *RrPickColor(const RrInstance *inst, gint r, gint g, gint b)
 
 static void swap_byte_order(XImage *im)
 {
-    int x, y, di;
+    gint x, y, di;
 
     di = 0;
     for (y = 0; y < im->height; ++y) {
         for (x = 0; x < im->height; ++x) {
-            char *c = &im->data[di + x * im->bits_per_pixel / 8];
-            char t;
+            gchar *c = &im->data[di + x * im->bits_per_pixel / 8];
+            gchar t;
 
             switch (im->bits_per_pixel) {
             case 32:
@@ -205,11 +220,11 @@ static void swap_byte_order(XImage *im)
 
 void RrIncreaseDepth(const RrInstance *inst, RrPixel32 *data, XImage *im)
 {
-    int r, g, b;
-    int x,y;
+    gint r, g, b;
+    gint x,y;
     RrPixel32 *p32 = (RrPixel32 *) im->data;
     RrPixel16 *p16 = (RrPixel16 *) im->data;
-    unsigned char *p8 = (unsigned char *)im->data;
+    guchar *p8 = (guchar *)im->data;
 
     if (im->byte_order != LSBFirst)
         swap_byte_order(im);
@@ -271,17 +286,17 @@ void RrIncreaseDepth(const RrInstance *inst, RrPixel32 *data, XImage *im)
     }
 }
 
-int RrColorRed(const RrColor *c)
+gint RrColorRed(const RrColor *c)
 {
     return c->r;
 }
 
-int RrColorGreen(const RrColor *c)
+gint RrColorGreen(const RrColor *c)
 {
     return c->g;
 }
 
-int RrColorBlue(const RrColor *c)
+gint RrColorBlue(const RrColor *c)
 {
     return c->b;
 }
This page took 0.026979 seconds and 4 git commands to generate.