diff options
author | Shinwoo Kim <cinoo.kim@samsung.com> | 2020-03-16 19:15:17 +0900 |
---|---|---|
committer | Hermet Park <chuneon.park@samsung.com> | 2020-03-16 19:15:33 +0900 |
commit | 4a74a9fc697446e0b8bba6c7f676059366f43931 (patch) | |
tree | 94af21e6987d6208174d21a4c1b7f7df2cfd38ac | |
parent | 04675a64cd308bd12ecaef56a9885058fdf2d70f (diff) | |
download | efl-4a74a9fc697446e0b8bba6c7f676059366f43931.tar.gz |
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
-rw-r--r-- | src/lib/evas/canvas/evas_render.c | 2 |
1 files changed, 1 insertions, 1 deletions
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) |