hermet pushed a commit to branch master.

commit e2c395f0499c8b2ca4f3364bcde8c017affa4ea1
Author: ChunEon Park <[email protected]>
Date:   Sun Jul 28 20:24:46 2013 +0900

    evas/proxy - render the children of the proxy's source object when ther 
visibility is true.
    
    This is not the perfect solution at this moment. This doesn't consider the 
cached clipper's visibility at all.
    But at least this would be better than exist works. Should be improved.
---
 src/lib/evas/canvas/evas_render.c  |  3 ++-
 src/lib/evas/include/evas_inline.x | 17 +++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 6604d51..faec397 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -1074,7 +1074,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
           }
         else
           {
-             if ((obj->clip.clipees) || (obj->cur->have_clipees))
+             if (!evas_object_is_proxy_visible(eo_obj, obj) ||
+                 (obj->clip.clipees) || (obj->cur->have_clipees))
                {
                   RDI(level);
                   RD("      }\n");
diff --git a/src/lib/evas/include/evas_inline.x 
b/src/lib/evas/include/evas_inline.x
index 31de720..00c4f9a 100644
--- a/src/lib/evas/include/evas_inline.x
+++ b/src/lib/evas/include/evas_inline.x
@@ -151,6 +151,23 @@ evas_object_clippers_is_visible(Evas_Object *eo_obj 
EINA_UNUSED, Evas_Object_Pro
 }
 
 static inline int
+evas_object_is_proxy_visible(Evas_Object *eo_obj, Evas_Object_Protected_Data 
*obj)
+{
+   if ((obj->cur->visible) &&
+       //FIXME: Check the cached clipper visible properly.
+       ((obj->cur->clipper && obj->cur->clipper->cur->visible) ||
+        (obj->is_smart)) &&
+       ((obj->cur->cache.clip.a > 0 && obj->cur->render_op == 
EVAS_RENDER_BLEND)
+        || obj->cur->render_op != EVAS_RENDER_BLEND))
+     {
+        if (obj->func->is_visible)
+          return obj->func->is_visible(eo_obj);
+        return 1;
+     }
+   return 0;
+}
+
+static inline int
 evas_object_is_in_output_rect(Evas_Object *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Data *obj, int x, int y, int w, int h)
 {
    /* assumes coords have been recalced */

-- 

------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk

Reply via email to