raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fef2a12ef63ec4d75ea9b33dd00b9dad7c0f24a5
commit fef2a12ef63ec4d75ea9b33dd00b9dad7c0f24a5 Author: Wonki Kim <wonki_....@samsung.com> Date: Wed May 9 23:46:00 2018 +0900 ecore_evas_extn: Modify not to send a message if there is nothing to draw Summary: Seding ipc messages on ews_update_image(which is invoked as a callback of EVAS_RENDER_POST) can makes ecore main loop awake, because sending ipc messages makes message_queue not empty. so that this patch prevent seding ipc logic if there is nothing to draw. Reviewers: cedric, raster Reviewed By: raster Subscribers: zmike Tags: #efl Differential Revision: https://phab.enlightenment.org/D6055 --- .../ecore_evas/engines/extn/ecore_evas_extn.c | 41 ++++++++++++---------- 1 file changed, 22 insertions(+), 19 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 edbcd6f61f..21b3c1ea06 100644 --- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c +++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c @@ -1542,27 +1542,30 @@ _ecore_evas_ews_update_image(void *data, Evas *e EINA_UNUSED, void *event_info) prev_b = extn->prev_b; _extnbuf_unlock(extn->b[prev_b].buf); - EINA_LIST_FOREACH(post->updated_area, l, r) + if (post->updated_area) { - Ipc_Data_Update ipc; - Eina_List *ll; - - ipc.x = r->x; - ipc.y = r->y; - ipc.w = r->w; - ipc.h = r->h; - EINA_LIST_FOREACH(extn->ipc.clients, ll, client) - ecore_ipc_client_send(client, MAJOR, OP_UPDATE, 0, 0, 0, &ipc, - sizeof(ipc)); - } + EINA_LIST_FOREACH(post->updated_area, l, r) + { + Ipc_Data_Update ipc; + Eina_List *ll; + + ipc.x = r->x; + ipc.y = r->y; + ipc.w = r->w; + ipc.h = r->h; + EINA_LIST_FOREACH(extn->ipc.clients, ll, client) + ecore_ipc_client_send(client, MAJOR, OP_UPDATE, 0, 0, 0, &ipc, + sizeof(ipc)); + } - EINA_LIST_FOREACH(extn->ipc.clients, l, client) - ecore_ipc_client_send(client, MAJOR, OP_UPDATE_DONE, 0, 0, - prev_b, NULL, 0); - if (extn->profile.done) - { - _ecore_evas_extn_socket_window_profile_change_done_send(ee); - extn->profile.done = EINA_FALSE; + EINA_LIST_FOREACH(extn->ipc.clients, l, client) + ecore_ipc_client_send(client, MAJOR, OP_UPDATE_DONE, 0, 0, + prev_b, NULL, 0); + if (extn->profile.done) + { + _ecore_evas_extn_socket_window_profile_change_done_send(ee); + extn->profile.done = EINA_FALSE; + } } } --