forked from enlightenment/efl
evas image: apply filter at runtime
Summary: If you call efl_gfx_filter_program_set in a mouse event callback, it does not work. Because render_pre removes area uisng evas_render_update_del. Reviewers: Hermet, jpeg, jsuya, cedric Reviewed By: Hermet, cedric Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9301
This commit is contained in:
parent
38c4e34533
commit
5f1f361c08
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue