From 94abb3a4221548002ade125d910a84c7d4a47891 Mon Sep 17 00:00:00 2001 From: "jiin.moon" Date: Tue, 4 Aug 2015 11:49:04 +0900 Subject: [PATCH] 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 --- src/modules/ecore_evas/engines/extn/ecore_evas_extn.c | 9 +++++++-- 1 file 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) Ecore_Event_Handler *hdl; Ipc_Data_Update *ipc; int i; - + if (bdata->image) + { + evas_object_image_data_set(bdata->image, NULL); + evas_object_image_pixels_dirty_set(bdata->image, EINA_TRUE); + } + bdata->pixels = NULL; for (i = 0; i < NBUF; i++) { if (extn->b[i].buf) _extnbuf_free(extn->b[i].buf); @@ -229,7 +234,7 @@ _ecore_evas_extn_free(Ecore_Evas *ee) ee2->sub_ecore_evas = eina_list_remove(ee2->sub_ecore_evas, ee); } evas_object_del(bdata->image); - bdata->image = NULL; + bdata->image = NULL; } free(bdata); ee->engine.data = NULL;