{
RrSurface *spo, *spc;
RrAppearance *copy = g_new(RrAppearance, 1);
+ gint i;
copy->inst = orig->inst;
copy->textures = orig->textures;
copy->texture = g_memdup(orig->texture,
orig->textures * sizeof(RrTexture));
+ for (i = 0; i < copy->textures; ++i)
+ if (copy->texture[i].type == RR_TEXTURE_RGBA) {
+ g_free(copy->texture[i].data.rgba.cache);
+ copy->texture[i].data.rgba.cache = NULL;
+ }
copy->pixmap = None;
copy->xftdraw = NULL;
copy->w = copy->h = 0;
void RrAppearanceFree(RrAppearance *a)
{
+ gint i;
+
if (a) {
RrSurface *p;
if (a->pixmap != None) XFreePixmap(RrDisplay(a->inst), a->pixmap);
if (a->xftdraw != NULL) XftDrawDestroy(a->xftdraw);
+ for (i = 0; i < a->textures; ++i)
+ if (a->texture[i].type == RR_TEXTURE_RGBA) {
+ g_free(a->texture[i].data.rgba.cache);
+ a->texture[i].data.rgba.cache = NULL;
+ }
if (a->textures)
g_free(a->texture);
p = &a->surface;