forked from enlightenment/efl
evas canvas: fix a proxy+map rendering issue.
This fix is wrt the non-updation of the proxy object. If a source of a proxy object has mapped objects among its children, Rendering frame won't be correct while they were keeping changing. The reason is, evas_object_smart_changed_get() couldn't figure those changes out correctly because of cached-clip visibility. Cached-clip of smart member can't be used for map surface updation, because cached-clip includes the visiblity status out of the smart object. So, loose the criteria to make it rendering smart members in map.
This commit is contained in:
parent
868dc1ba2b
commit
56074fd579
|
@ -1036,8 +1036,18 @@ evas_object_smart_changed_get(Evas_Object *eo_obj)
|
||||||
Evas_Object_Protected_Data *o2;
|
Evas_Object_Protected_Data *o2;
|
||||||
Eina_Bool has_map = EINA_FALSE;
|
Eina_Bool has_map = EINA_FALSE;
|
||||||
|
|
||||||
if (!evas_object_is_visible(eo_obj, obj) &&
|
/* If object is invisible, it's meaningless to figure out changed state
|
||||||
!evas_object_was_visible(eo_obj, obj))
|
for rendering. */
|
||||||
|
|
||||||
|
//a. Object itself visibility
|
||||||
|
if (obj->no_render || !(obj->prev->visible && obj->cur->visible) ||
|
||||||
|
((obj->prev->color.a == 0) && (obj->cur->color.a == 0)))
|
||||||
|
return EINA_FALSE;
|
||||||
|
|
||||||
|
//b. Object clipper visibility
|
||||||
|
if (!(obj->prev->clipper->cur->visible && obj->cur->clipper->cur->visible) ||
|
||||||
|
((obj->prev->clipper->cur->color.a == 0) &&
|
||||||
|
(obj->prev->clipper->prev->color.a == 0)))
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
|
||||||
if (!obj->clip.clipees)
|
if (!obj->clip.clipees)
|
||||||
|
|
Loading…
Reference in New Issue