ecore evas - buffer - init ecore event evas as many times as shutdown
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 3 Dec 2018 15:50:02 +0000 (15:50 +0000)
committerHermet Park <hermetpark@gmail.com>
Wed, 5 Dec 2018 05:52:40 +0000 (14:52 +0900)
so ecore_event_evas_shutdown() was getting called much more than
ecore_event_evas_init() - missing an init in the ee + img obj creator
in ecore evas. this adds it in and ensures in allocation failures we
dont over-init or shutdown too.

@fix

src/lib/ecore_evas/ecore_evas_buffer.c

index a658810..cd32e68 100644 (file)
@@ -20,6 +20,7 @@ _ecore_evas_buffer_free(Ecore_Evas *ee)
 {
    Ecore_Evas_Engine_Buffer_Data *bdata = ee->engine.data;
 
+   if (!bdata) return;
    if (bdata->image)
      {
         Ecore_Evas *ee2;
@@ -31,11 +32,11 @@ _ecore_evas_buffer_free(Ecore_Evas *ee)
      }
    else
      {
-        bdata->free_func(bdata->data,
-                        bdata->pixels);
+        bdata->free_func(bdata->data, bdata->pixels);
      }
 
    free(bdata);
+   ee->engine.data = NULL;
 
    ecore_event_evas_shutdown();
 }
@@ -899,6 +900,8 @@ ecore_evas_buffer_new(int w, int h)
    ee =  ecore_evas_buffer_allocfunc_new
      (w, h, _ecore_evas_buffer_pix_alloc, _ecore_evas_buffer_pix_free, NULL);
 
+   if (!ee) ecore_event_evas_shutdown();
+
    ecore_evas_done(ee, EINA_TRUE);
 
    return ee;
@@ -1088,5 +1091,6 @@ ecore_evas_object_image_new(Ecore_Evas *ee_target)
      }
 
    _ecore_evas_subregister(ee_target, ee);
+   ecore_event_evas_init();
    return o;
 }