From 21726e05fc2b62e41c138cbce16c6a7e0e3d20d8 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Mon, 22 Oct 2018 10:35:39 -0500 Subject: [PATCH] evas_render: Ensure proper rendering when objects are on planes If only objects on planes change, we don't see any damage for the main buffer, so a page flip never occurs and the plane doesn't update. For now forcing a tiny damage area is the easy way to work around this. Also force a pixels get callback for enlightenment's surface frame callback tracking. Signed-off-by: Derek Foreman Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D7196 --- src/lib/evas/canvas/evas_object_main.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index e0f02da945..954528ca29 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -839,6 +839,18 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in if (!obj->layer) return; if (obj->is_smart) goto end; + + if (evas_object_is_on_plane(eo_obj, obj)) + { + /* We need some damage to occur if only planes are being updated, + or nothing will provoke a page flip. + */ + obj->layer->evas->engine.func->output_redraws_rect_add(ENC, + 0, 0, 1, 1); + /* Force a pixels get callback for E's benefit :( */ + evas_object_pixels_get_force(eo_obj, obj); + goto end; + } /* FIXME: was_v isn't used... why? */ if (!obj->clip.clipees) {