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 <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7196
This commit is contained in:
Derek Foreman 2018-10-22 10:35:39 -05:00
parent 706f377edd
commit 21726e05fc
1 changed files with 12 additions and 0 deletions

View File

@ -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)
{