kimcinoo pushed a commit to branch master.

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

commit c8827c0dccff99db8aff2c0eb35a73614db296f6
Author: Shinwoo Kim <[email protected]>
Date:   Tue Jul 9 12:01:22 2019 +0900

    evas_render: add restacked mapped obj to redraws rect
    
    Summary:
    We are adding A object area to the redraws rect when object stack is changed
    from (1) to (2) if A object is not mapped.
    
    (1)
     ┌────────┐
     │Object A│┐
     └────────┘│
      └────────┘
    
    (2)
     ┌────────┐
     │┌────────┐
     └│Object B│
      └────────┘
    
    But if A object is mapped, then we are adding only part of A object area.
    
    (part of A)
     ┌───────┐
     │┌──────┘
     └┘
    
    So the result of stack change is (1) not (2).
    This patch set is adding restacked mapped object to the restack_objects 
array,
    after changing the stack of mapped object to add correct redraws rect.
    
    Test Plan:
    {F3727281}
    
    {F3727280}
    
    {F3727279}
    
    (1) Build and Run attached example on software_x11 engine
    (2) Mouse down on upper image - the image starts to use map.
    (3) Then mouse up - upper image should go under the below image.
    But, the changed result is NOT rendered.
    
    Reviewers: Hermet, jsuya, zmike
    
    Reviewed By: zmike
    
    Subscribers: zmike, cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D9183
---
 src/lib/evas/canvas/evas_render.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index feaf5b214a..87934be5e4 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -804,6 +804,11 @@ _evas_render_phase1_object_mapped(Phase1_Context *p1ctx,
         _evas_render_phase1_object_process(p1ctx, obj2, obj->restack,
                                            EINA_TRUE, src_changed, level + 1);
      }
+
+   /* Restacked mapped object should be used as a redraw rect.
+      The "phase 2. force updates for restack" will use restack_objects. */
+   if (EINA_UNLIKELY(obj->restack))
+     OBJ_ARRAY_PUSH(p1ctx->restack_objects, obj);
 }
 
 static void

-- 


Reply via email to