Author: Hermet Park <hermet@hermet.pe.kr>
Date: Fri Jun 24 18:51:38 2016 +0900
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.
Change-Id: I8d0f71e1766595ab4b0e31464e885364ba2db519
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))
+ /* If object is invisible, it's meaningless to figure out changed state
+ 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;
if (!obj->clip.clipees)