static void RrTrueColorSetup (RrInstance *inst);
static void RrPseudoColorSetup (RrInstance *inst);
+#ifdef DEBUG
+#include "color.h"
+#endif
+static void
+dest(gpointer data)
+{
+#ifdef DEBUG
+ RrColor *c = data;
+ if (c->refcount > 0)
+ g_error("color %d (%d,%d,%d) in hash table with %d "
+ "leftover references",
+ c->id, RrColorRed(c), RrColorGreen(c), RrColorBlue(c),
+ c->refcount);
+#endif
+}
+
+#if 0
+static void f(gpointer key, gpointer value, gpointer n)
+{
+ RrColor *c = value;
+ if (c->id == *(int*)n)
+ g_message("color %d has %d references", c->id, c->refcount);
+}
+
+void print_refs(int id)
+{
+ g_hash_table_foreach(RrColorHash(definst), f, &id);
+}
+#endif
+
RrInstance* RrInstanceNew (Display *display, gint screen)
{
definst = g_new (RrInstance, 1);
definst->pseudo_colors = NULL;
- definst->color_hash = g_hash_table_new(g_int_hash, g_int_equal);
+ definst->color_hash = g_hash_table_new_full(g_int_hash, g_int_equal,
+ NULL, dest);
switch (definst->visual->class) {
case TrueColor: