X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Finstance.c;h=76c09a36d7158250f1c00d97282d901ad58fa4e8;hb=34446063fa6f954f81200f2778c099865b374d2c;hp=ad69665537669f6650b98b77708b23f640a59a99;hpb=bb6b616b9c4fad0e074f0eac2e9c85a482ab09ae;p=chaz%2Fopenbox diff --git a/render/instance.c b/render/instance.c index ad696655..76c09a36 100644 --- a/render/instance.c +++ b/render/instance.c @@ -1,3 +1,21 @@ +/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- + + instance.c for the Openbox window manager + Copyright (c) 2003 Ben Jansens + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + See the COPYING file for a copy of the GNU General Public License. +*/ + #include "render.h" #include "instance.h" @@ -6,6 +24,19 @@ static RrInstance *definst = NULL; 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("removing color from hash table with references"); +#endif +} + RrInstance* RrInstanceNew (Display *display, gint screen) { definst = g_new (RrInstance, 1); @@ -18,6 +49,9 @@ RrInstance* RrInstanceNew (Display *display, gint screen) definst->pseudo_colors = NULL; + definst->color_hash = g_hash_table_new_full(g_int_hash, g_int_equal, + NULL, dest); + switch (definst->visual->class) { case TrueColor: RrTrueColorSetup(definst); @@ -72,7 +106,6 @@ void RrPseudoColorSetup (RrInstance *inst) int tr, tg, tb, n, r, g, b, i, incolors, ii; unsigned long dev; int cpc, _ncolors; - g_message("Initializing PseudoColor RenderControl\n"); /* determine the number of colors and the bits-per-color */ inst->pseudo_bpc = 2; /* XXX THIS SHOULD BE A USER OPTION */ @@ -158,6 +191,7 @@ void RrInstanceFree (RrInstance *inst) if (inst) { if (inst == definst) definst = NULL; g_free(inst->pseudo_colors); + g_hash_table_destroy(inst->color_hash); } } @@ -245,3 +279,8 @@ XColor *RrPseudoColors (const RrInstance *inst) { return (inst ? inst : definst)->pseudo_colors; } + +GHashTable* RrColorHash (const RrInstance *inst) +{ + return (inst ? inst : definst)->color_hash; +}