all repos — openbox @ 75e948b1972a26c73b07f1706a0fcc54c594dba2

openbox fork - make it a bit more like ryudo

free rgba texture caches
Dana Jansens danakj@orodu.net
commit

75e948b1972a26c73b07f1706a0fcc54c594dba2

parent

d911fbf44cd1517580f42190c68173f5aee2f148

1 files changed, 13 insertions(+), 0 deletions(-)

jump to
M render/render.crender/render.c

@@ -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 @@

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 @@ }

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;