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;
+          }
      }
 }
 

-- 


Reply via email to