hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4a74a9fc697446e0b8bba6c7f676059366f43931

commit 4a74a9fc697446e0b8bba6c7f676059366f43931
Author: Shinwoo Kim <cinoo....@samsung.com>
Date:   Mon Mar 16 19:15:17 2020 +0900

    evas_render: use do_async for mapped child (SW)
    
    Summary:
    On the SW engine, the rendering has inconsistent between smart object and
    non-smart object, if they are mapped children. The smart object does ASYNC
    render while the non-smart object does SYNC render. Because of this there
    is a filckering rendering problem.
    
    [Problem]
    The following is a case of problems.
    
      elm_layout (mapped, map_surface_1)
       │
       ├─ elm_image_1 (mapped)
       │
       └─ elm_image_2 (not mapped)
           │
           └─ evas_object_image
    
    After elm_image_1 adds draw command to the draw thread queue, and it starts
    its drawing on the map_surface_1 on a thread, and stops middle of drawing.
    At this point, evas_object_image does SYNC draw on the same surface
    map_surface_1. And the thread for elm_image_1 works for remains.
    
    Because the evas_object_image draws before finishing drawing of elm_image_1,
    There is the problem.
    
    F.Y.I. From the first evas_render has done SYNC render for mapped child.
    
       cb10c7d evas: Modify software_generic ... with threaded renderer
    
    This patch makes mapped children do ASYNC render.
    
    Test Plan:
    {F3856130}
    
    {F3856131}
    
    Reviewers: Hermet, jsuya, herb
    
    Reviewed By: Hermet
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D11506
---
 src/lib/evas/canvas/evas_render.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 53179ec5bc..4738c80480 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -2241,7 +2241,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
 #endif
 
                   obj->func->render(eo_obj, obj, obj->private_data,
-                                    ENC, output, ctx, surface, off_x, off_y, 
EINA_FALSE);
+                                    ENC, output, ctx, surface, off_x, off_y, 
do_async);
                }
           }
         else if (!obj->is_smart)

-- 


Reply via email to