From: Hermet Park Date: Fri, 24 Jun 2016 10:04:32 +0000 (+0900) Subject: commit 56074fd579a6bd0395948464cc15cb9f5818450e X-Git-Tag: accepted/tizen/ivi/20160628.014341~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fd6315017e29809912f03b997d0c9b95fff34e21;p=platform%2Fupstream%2Fefl.git commit 56074fd579a6bd0395948464cc15cb9f5818450e Author: Hermet Park 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 --- diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c index d9f8a89..16a2e79 100644 --- a/src/lib/evas/canvas/evas_object_smart.c +++ b/src/lib/evas/canvas/evas_object_smart.c @@ -1013,8 +1013,18 @@ evas_object_smart_changed_get(Evas_Object *eo_obj) 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)