diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index db44c3ec98..e8f45ffcd2 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -152,8 +152,7 @@ evas_free(Evas *eo_e) MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS); return; MAGIC_CHECK_END(); - Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - e->requested_free = EINA_TRUE; + evas_sync(eo_e); eo_unref(eo_e); } @@ -1146,7 +1145,7 @@ static const Eo_Op_Description op_desc[] = { EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_RENDER, "Force renderization of the given canvas."), EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_NORENDER, "Update the canvas internal objects but not triggering immediate."), EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_RENDER_IDLE_FLUSH, "Make the canvas discard internally cached data used for rendering."), - EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_SYNC, "? evas_sync"), + EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_SYNC, "Force evas render to be synchronized (in case it is asynchronous)."), EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_RENDER_DUMP, "Make the canvas discard as much data as possible used by the engine at"), EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECT_BOTTOM_GET, "Get the lowest (stacked) Evas object on the canvas e."), EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECT_TOP_GET, "Get the highest (stacked) Evas object on the canvas e."), diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index a4fa3bbf83..7e814c322c 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -1823,16 +1823,6 @@ evas_render_wakeup(Evas *eo_e) Eina_List *ret_updates = NULL; Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); - if (e->requested_free) - { - EINA_LIST_FREE(e->render.updates, ru) - { - eina_rectangle_free(ru->area); - free(ru); - } - goto end; - } - EINA_LIST_FREE(e->render.updates, ru) { /* punch rect out */ @@ -2038,8 +2028,10 @@ evas_sync(Evas *eo_e) } void -_canvas_sync(Eo *eo_e EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) +_canvas_sync(Eo *eo_e, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) { + Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); + evas_render_rendering_wait(e); } void diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index c53601b872..876401dc42 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -421,7 +421,6 @@ struct _Evas_Public_Data unsigned char focus : 1; Eina_Bool is_frozen : 1; Eina_Bool rendering : 1; - Eina_Bool requested_free : 1; Eina_List *touch_points; Eina_List *devices;