diff options
authorShinwoo Kim <>2020-03-16 19:15:17 +0900
committerHermet Park <>2020-03-16 19:15:33 +0900
commit4a74a9fc697446e0b8bba6c7f676059366f43931 (patch)
parent04675a64cd308bd12ecaef56a9885058fdf2d70f (diff)
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:
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,
2241#endif 2241#endif
2242 2242
2243 obj->func->render(eo_obj, obj, obj->private_data, 2243 obj->func->render(eo_obj, obj, obj->private_data,
2244 ENC, output, ctx, surface, off_x, off_y, EINA_FALSE); 2244 ENC, output, ctx, surface, off_x, off_y, do_async);
2245 } 2245 }
2246 } 2246 }
2247 else if (!obj->is_smart) 2247 else if (!obj->is_smart)