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: Attached example code
Reviewers: Hermet, jsuya
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9183
Change-Id: I571461a9dbf4dd67dd95d68ce47bf7ebef435a7a
_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