forked from enlightenment/efl
Evas filters: Optimize Text redraw with filters
Fix case when a proxy source has changed: need to fully render the effect again.
This commit is contained in:
parent
7a53d39304
commit
b54eb40006
|
@ -2138,7 +2138,29 @@ evas_object_text_render(Evas_Object *eo_obj EINA_UNUSED,
|
||||||
|
|
||||||
if (o->cur.filter.output)
|
if (o->cur.filter.output)
|
||||||
{
|
{
|
||||||
if (o->cur.filter.changed)
|
Eina_Bool redraw = o->cur.filter.changed;
|
||||||
|
|
||||||
|
// Scan proxies to find if any changed
|
||||||
|
if (!redraw && o->cur.filter.sources)
|
||||||
|
{
|
||||||
|
Evas_Object_Protected_Data *source;
|
||||||
|
Evas_Object *eo_source;
|
||||||
|
Eina_Iterator *it;
|
||||||
|
|
||||||
|
it = eina_hash_iterator_data_new(o->cur.filter.sources);
|
||||||
|
EINA_ITERATOR_FOREACH(it, eo_source)
|
||||||
|
{
|
||||||
|
source = eo_data_scope_get(eo_source, EVAS_OBJ_CLASS);
|
||||||
|
if (source->changed)
|
||||||
|
{
|
||||||
|
redraw = EINA_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eina_iterator_free(it);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (redraw)
|
||||||
{
|
{
|
||||||
ENFN->image_free(ENDT, o->cur.filter.output);
|
ENFN->image_free(ENDT, o->cur.filter.output);
|
||||||
o->cur.filter.output = NULL;
|
o->cur.filter.output = NULL;
|
||||||
|
|
Loading…
Reference in New Issue