evas: Fix not to clean and re-render if position of object enabled map is changed

Summary: Fix not to clean and re-render if the position of an object enabled map is changed.

Reviewers: raster, cedric, Hermet

Reviewed By: Hermet

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1220
This commit is contained in:
Jaehyun Cho 2014-08-07 15:32:39 +09:00 committed by ChunEon Park
parent c12875ccd3
commit b3d900e748
3 changed files with 11 additions and 5 deletions

View File

@ -100,6 +100,7 @@ evas_object_change_reset(Evas_Object *eo_obj)
obj->changed_color = EINA_FALSE;
obj->changed_pchange = EINA_FALSE;
obj->changed_src_visible = EINA_FALSE;
obj->need_surface_clear = EINA_FALSE;
}
void
@ -223,6 +224,7 @@ evas_object_change(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
movch = EINA_TRUE;
obj->changed_move = EINA_FALSE;
}
else obj->need_surface_clear = EINA_TRUE;
if (obj->changed) return;

View File

@ -973,6 +973,7 @@ evas_object_smart_changed_get(Evas_Object *eo_obj)
{
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
Evas_Object_Protected_Data *o2;
Eina_Bool has_map = EINA_FALSE;
if (!evas_object_is_visible(eo_obj, obj) &&
!evas_object_was_visible(eo_obj, obj))
@ -980,16 +981,18 @@ evas_object_smart_changed_get(Evas_Object *eo_obj)
if (!obj->clip.clipees)
{
if (obj->changed && !obj->is_smart) return EINA_TRUE;
if (_evas_render_has_map(eo_obj, obj))
has_map = _evas_render_has_map(eo_obj, obj);
if (obj->changed && !obj->is_smart && !has_map) return EINA_TRUE;
if (has_map)
{
if (((obj->changed_pchange) && (obj->changed_map)) ||
(obj->changed_color)) return EINA_TRUE;
if (obj->need_surface_clear || ((obj->changed_pchange) && (obj->changed_map)))
return EINA_TRUE;
}
}
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), o2)
if (evas_object_smart_changed_get(o2->object)) return EINA_TRUE;
if (evas_object_smart_changed_get(o2->object)) return EINA_TRUE;
return EINA_FALSE;
}

View File

@ -920,6 +920,7 @@ struct _Evas_Object_Protected_Data
Eina_Bool changed_map : 1;
Eina_Bool changed_pchange : 1;
Eina_Bool changed_src_visible : 1;
Eina_Bool need_surface_clear : 1;
Eina_Bool del_ref : 1;
Eina_Bool is_frame : 1;