X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Frender.c;h=4735ec51a948a385a1d6116ecfcc474b9dddc938;hb=75e948b1972a26c73b07f1706a0fcc54c594dba2;hp=166d446ff9eef2b2e68ede9083b4fb670dc03ab9;hpb=a283652736687067fbc3f49ccffca35de9e27696;p=chaz%2Fopenbox diff --git a/render/render.c b/render/render.c index 166d446f..4735ec51 100644 --- a/render/render.c +++ b/render/render.c @@ -16,7 +16,7 @@ #endif static void pixel_data_to_pixmap(RrAppearance *l, - gint x, gint y, gint w, gint h); + gint x, gint y, gint w, gint h); void RrPaint(RrAppearance *l, Window win, gint w, gint h) { @@ -143,6 +143,7 @@ RrAppearance *RrAppearanceCopy(RrAppearance *orig) { RrSurface *spo, *spc; RrAppearance *copy = g_new(RrAppearance, 1); + gint i; copy->inst = orig->inst; @@ -195,6 +196,11 @@ RrAppearance *RrAppearanceCopy(RrAppearance *orig) 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; @@ -203,10 +209,17 @@ RrAppearance *RrAppearanceCopy(RrAppearance *orig) 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; @@ -222,7 +235,8 @@ void RrAppearanceFree(RrAppearance *a) } -static void pixel_data_to_pixmap(RrAppearance *l, gint x, gint y, gint w, gint h) +static void pixel_data_to_pixmap(RrAppearance *l, + gint x, gint y, gint w, gint h) { RrPixel32 *in, *scratch; Pixmap out;