summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiin.moon <jiin.moon@samsung.com>2015-08-04 11:49:04 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2015-08-04 11:59:24 +0900
commit94abb3a4221548002ade125d910a84c7d4a47891 (patch)
treec3f58bce53fed4d5504d6f39cda3507896b8dd44
parentd31098fcecb8860a02b99c79624ad258ab857e11 (diff)
ecore_evas: Fix crash in async render
Summary: The root cause of the crash is freed memory. The evas_object_image_data_set api called with extn buffer in _ipc_server_data. But there is no inform to render when free this buffer. @fix Reviewers: Hermet, jpeg, jypark Subscribers: stefan_schmidt, cedric Differential Revision: https://phab.enlightenment.org/D2902 Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
-rw-r--r--src/modules/ecore_evas/engines/extn/ecore_evas_extn.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
index 550166c99b..6dd16ba6d3 100644
--- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
+++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
@@ -178,7 +178,12 @@ _ecore_evas_extn_free(Ecore_Evas *ee)
178 Ecore_Event_Handler *hdl; 178 Ecore_Event_Handler *hdl;
179 Ipc_Data_Update *ipc; 179 Ipc_Data_Update *ipc;
180 int i; 180 int i;
181 181 if (bdata->image)
182 {
183 evas_object_image_data_set(bdata->image, NULL);
184 evas_object_image_pixels_dirty_set(bdata->image, EINA_TRUE);
185 }
186 bdata->pixels = NULL;
182 for (i = 0; i < NBUF; i++) 187 for (i = 0; i < NBUF; i++)
183 { 188 {
184 if (extn->b[i].buf) _extnbuf_free(extn->b[i].buf); 189 if (extn->b[i].buf) _extnbuf_free(extn->b[i].buf);
@@ -229,7 +234,7 @@ _ecore_evas_extn_free(Ecore_Evas *ee)
229 ee2->sub_ecore_evas = eina_list_remove(ee2->sub_ecore_evas, ee); 234 ee2->sub_ecore_evas = eina_list_remove(ee2->sub_ecore_evas, ee);
230 } 235 }
231 evas_object_del(bdata->image); 236 evas_object_del(bdata->image);
232 bdata->image = NULL; 237 bdata->image = NULL;
233 } 238 }
234 free(bdata); 239 free(bdata);
235 ee->engine.data = NULL; 240 ee->engine.data = NULL;