diff --git a/src/lib/evas/canvas/evas_image_private.h b/src/lib/evas/canvas/evas_image_private.h index 664d60e684..efd53209c8 100644 --- a/src/lib/evas/canvas/evas_image_private.h +++ b/src/lib/evas/canvas/evas_image_private.h @@ -146,6 +146,7 @@ struct _Evas_Image_Data Eina_Bool written : 1; Eina_Bool direct_render : 1; Eina_Bool has_filter : 1; + Eina_Bool changed_filter : 1; Eina_Bool buffer_data_set : 1; struct { diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index 50a064a287..0f2c10aa10 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -1937,8 +1937,9 @@ _efl_canvas_image_internal_efl_canvas_filter_internal_filter_dirty(Eo *eo_obj, E { Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); - o->changed = 1; + o->changed = EINA_TRUE; evas_object_change(eo_obj, obj); + o->changed_filter = EINA_TRUE; } EOLIAN static Eina_Bool @@ -2891,6 +2892,11 @@ evas_object_image_render_pre(Evas_Object *eo_obj, } if (o->changed) { + if (o->changed_filter) + { + evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj); + goto done; + } if (((o->cur->f) && (!o->prev->f)) || ((!o->cur->f) && (o->prev->f)) || ((o->cur->key) && (!o->prev->key)) || @@ -3216,6 +3222,7 @@ done: } } o->changed = EINA_FALSE; + o->changed_filter = EINA_FALSE; } static void