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 written : 1;
|
||||||
Eina_Bool direct_render : 1;
|
Eina_Bool direct_render : 1;
|
||||||
Eina_Bool has_filter : 1;
|
Eina_Bool has_filter : 1;
|
||||||
|
Eina_Bool changed_filter : 1;
|
||||||
Eina_Bool buffer_data_set : 1;
|
Eina_Bool buffer_data_set : 1;
|
||||||
struct
|
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);
|
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);
|
evas_object_change(eo_obj, obj);
|
||||||
|
o->changed_filter = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static Eina_Bool
|
EOLIAN static Eina_Bool
|
||||||
|
@ -2891,6 +2892,11 @@ evas_object_image_render_pre(Evas_Object *eo_obj,
|
||||||
}
|
}
|
||||||
if (o->changed)
|
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)) ||
|
if (((o->cur->f) && (!o->prev->f)) ||
|
||||||
((!o->cur->f) && (o->prev->f)) ||
|
((!o->cur->f) && (o->prev->f)) ||
|
||||||
((o->cur->key) && (!o->prev->key)) ||
|
((o->cur->key) && (!o->prev->key)) ||
|
||||||
|
@ -3216,6 +3222,7 @@ done:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
o->changed = EINA_FALSE;
|
o->changed = EINA_FALSE;
|
||||||
|
o->changed_filter = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue