evas: force full redraw of snapshot for every frame, every time.

NOTE: it would be nicer to setup a specific context for each snapshot
and walk all the child below. If any of them did change, only trigger the
full redraw in that case (and of course only if a filter with blurr does
use it somewhere).
This commit is contained in:
Cedric BAIL 2015-08-01 02:38:31 +02:00
parent 941d75d24d
commit 08e888156e
1 changed files with 19 additions and 0 deletions

View File

@ -2514,6 +2514,25 @@ evas_render_updates_internal(Evas *eo_e,
e->engine.func->output_redraws_rect_add(e->engine.data.output, 0, 0,
e->output.w, e->output.h);
}
// Add redraw for all snapshot object due to potential use of pixels outside
// of the update area by filters.
// The side effect is that it also fix rendering of partial update of filter...
// As they are never partially updated anymore !
// FIXME: don't add redraw rect for snapshot with no filter applied on
// Also damage the filter object that use a snapshot.
for (i = 0; i < e->snapshot_objects.count; i++)
{
obj = (Evas_Object_Protected_Data *)eina_array_data_get(&e->snapshot_objects, i);
if (evas_object_is_visible(obj->object, obj))
e->engine.func->output_redraws_rect_add(e->engine.data.output,
obj->cur->geometry.x,
obj->cur->geometry.y,
obj->cur->geometry.w,
obj->cur->geometry.h);
}
eina_evlog("-render_phase4", eo_e, 0.0, NULL);
/* phase 5. add obscures */