X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=obrender%2Fimagecache.c;h=909d87465539108a699751dd279ed65527b3dad5;hb=2391410e3fd7767e266c0efe84fd34244ea29dc6;hp=9c605f9d5a69885c4c4608429c5a7e74b663e217;hpb=7aae8cc5262c1b36e3196845d62489b76af9063f;p=chaz%2Fopenbox diff --git a/obrender/imagecache.c b/obrender/imagecache.c index 9c605f9d..909d8746 100644 --- a/obrender/imagecache.c +++ b/obrender/imagecache.c @@ -29,11 +29,12 @@ RrImageCache* RrImageCacheNew(gint max_resized_saved) g_assert(max_resized_saved >= 0); - self = g_new(RrImageCache, 1); + self = g_slice_new(RrImageCache); self->ref = 1; self->max_resized_saved = max_resized_saved; - self->table = g_hash_table_new((GHashFunc)RrImagePicHash, - (GEqualFunc)RrImagePicEqual); + self->pic_table = g_hash_table_new((GHashFunc)RrImagePicHash, + (GEqualFunc)RrImagePicEqual); + self->name_table = g_hash_table_new(g_str_hash, g_str_equal); return self; } @@ -45,21 +46,16 @@ void RrImageCacheRef(RrImageCache *self) void RrImageCacheUnref(RrImageCache *self) { if (self && --self->ref == 0) { - g_assert(g_hash_table_size(self->table) == 0); - g_hash_table_unref(self->table); + g_assert(g_hash_table_size(self->pic_table) == 0); + g_hash_table_unref(self->pic_table); + self->pic_table = NULL; - g_free(self); - } -} + g_assert(g_hash_table_size(self->name_table) == 0); + g_hash_table_destroy(self->name_table); + self->name_table = NULL; -/*! Finds an image in the cache, if it is already in there */ -RrImage* RrImageCacheFind(RrImageCache *self, - RrPixel32 *data, gint w, gint h) -{ - RrImagePic pic; - - RrImagePicInit(&pic, w, h, data); - return g_hash_table_lookup(self->table, &pic); + g_slice_free(RrImageCache, self); + } } #define hashsize(n) ((RrPixel32)1<<(n))