evas - avoid memleak on rotation of tilebuf in engine for gl and sw possibly.
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 29 Aug 2013 05:58:09 +0000 (14:58 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 29 Aug 2013 05:58:09 +0000 (14:58 +0900)
src/modules/evas/engines/gl_x11/evas_engine.c
src/modules/evas/engines/software_x11/evas_engine.c

index 82f97d6..cda7fe7 100644 (file)
@@ -1003,6 +1003,7 @@ eng_setup(Evas *eo_e, void *in)
         free(re);
         return 0;
      }
+   if (re->tb) evas_common_tilebuf_free(re->tb);
    re->tb = evas_common_tilebuf_new(re->win->w, re->win->h);
    if (!re->tb)
      {
index d5fbe66..4a1bf4b 100644 (file)
@@ -188,6 +188,7 @@ _output_xlib_setup(int w, int h, int rot, Display *disp, Drawable draw,
 //   re->ob->onebuf = 1;
 
    evas_software_xlib_outbuf_debug_set(re->ob, debug);
+   if (re->tb) evas_common_tilebuf_free(re->tb);
    re->tb = evas_common_tilebuf_new(w, h);
    if (!re->tb)
      {
@@ -227,6 +228,7 @@ _output_swapbuf_setup(int w, int h, int rot, Display *disp, Drawable draw,
        return NULL;
      }
 
+   if (re->tb) evas_common_tilebuf_free(re->tb);
    re->tb = evas_common_tilebuf_new(w, h);
    if (!re->tb)
      {
@@ -278,6 +280,7 @@ _output_xcb_setup(int w, int h, int rot, xcb_connection_t *conn,
 
    evas_software_xcb_outbuf_debug_set(re->ob, debug);
 
+   if (re->tb) evas_common_tilebuf_free(re->tb);
    re->tb = evas_common_tilebuf_new(w, h);
    if (!re->tb)
      {