hermet pushed a commit to branch master.

commit 911790b2367589ff922767f5144b0313ab8550d8
Author: ChunEon Park <[email protected]>
Date:   Fri Apr 26 20:05:46 2013 +0900

    evas - fixed logic fault in proxy clipping.
---
 src/lib/evas/canvas/evas_object_image.c |  3 +--
 src/lib/evas/canvas/evas_render.c       | 40 ++++++++++++++++-----------------
 src/lib/evas/include/evas_private.h     |  2 +-
 3 files changed, 21 insertions(+), 24 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_image.c 
b/src/lib/evas/canvas/evas_object_image.c
index 7cc6c03..db572b4 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -3254,8 +3254,7 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source, 
Eina_Bool do_async)
         evas_render_mapped(e, eo_source, source, ctx, proxy_write->surface,
                            -source->cur->geometry.x,
                            -source->cur->geometry.y,
-                           1, 0, 0, e->output.w, e->output.h, EINA_TRUE,
-                           EINA_TRUE
+                           1, 0, 0, e->output.w, e->output.h, EINA_TRUE
 #ifdef REND_DBG
                            , 1
 #endif
diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index d3f31cd..368a88c 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -950,8 +950,7 @@ Eina_Bool
 evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
                    Evas_Object_Protected_Data *obj, void *context,
                    void *surface, int off_x, int off_y, int mapped, int ecx,
-                   int ecy, int ecw, int ech, Eina_Bool proxy_render,
-                   Eina_Bool proxy_src_clip
+                   int ecy, int ecw, int ech, Eina_Bool proxy_render
 #ifdef REND_DBG
                    , int level
 #endif
@@ -968,20 +967,22 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
 
    RDI(level);
    RD("      { evas_render_mapped(%p, %p,   %p, %p,   %i, %i,   %i,   %i)\n", 
e, obj, context, surface, off_x, off_y, mapped, level);
+
    if (mapped)
      {
-        if (obj->clip.clipees || obj->cur->have_clipees)
+        if (!proxy_render)
           {
-             if (!proxy_render || proxy_src_clip)
+             if ((!evas_object_is_visible(eo_obj, obj)) || (obj->clip.clipees)
+                 || (obj->cur->have_clipees))
                {
-                  if (!evas_object_is_visible(eo_obj, obj))
-                    {
-                       RDI(level);
-                       RD("      }\n");
-                       return clean_them;
-                    }
+                  RDI(level);
+                  RD("      }\n");
+                  return clean_them;
                }
-             else
+          }
+        else
+          {
+             if ((obj->clip.clipees) || (obj->cur->have_clipees))
                {
                   RDI(level);
                   RD("      }\n");
@@ -989,9 +990,9 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
                }
           }
      }
-   else if (!(evas_object_is_active(eo_obj, obj) &&
-              (!obj->clip.clipees) &&
-              _evas_render_can_render(eo_obj, obj)))
+   else if (!(((evas_object_is_active(eo_obj, obj) && (!obj->clip.clipees) &&
+                (_evas_render_can_render(eo_obj, obj))))
+             ))
      {
         RDI(level);
         RD("      }\n");
@@ -1133,8 +1134,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
                                                            obj->map->surface,
                                                            off_x2, off_y2, 1,
                                                            ecx, ecy, ecw, ech,
-                                                           proxy_render,
-                                                           proxy_src_clip
+                                                           proxy_render
 #ifdef REND_DBG
                                                            , level + 1
 #endif
@@ -1265,8 +1265,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
                                                            obj2, ctx, surface,
                                                            off_x, off_y, 1,
                                                            ecx, ecy, ecw, ech,
-                                                           proxy_render,
-                                                           proxy_src_clip
+                                                           proxy_render
 #ifdef REND_DBG
                                                            , level + 1
 #endif
@@ -1278,7 +1277,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
                   RDI(level);
 
                   //FIXME: Consider to clip by the proxy clipper.
-                  if ((!proxy_render || proxy_src_clip) && obj->cur->clipper)
+                  if (obj->cur->clipper && !proxy_render)
                     {
                        RD("        clip: %i %i %ix%i [%i %i %ix%i]\n",
                           obj->cur->cache.clip.x + off_x,
@@ -1323,7 +1322,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
         else
           {
              //FIXME: Consider to clip by the proxy clipper.
-             if ((!proxy_render || proxy_src_clip) && obj->cur->clipper)
+             if (obj->cur->clipper && !proxy_render)
                {
                   int x, y, w, h;
 
@@ -1745,7 +1744,6 @@ evas_render_updates_internal(Evas *eo_e,
                                                              surface, off_x,
                                                              off_y, 0,
                                                              cx, cy, cw, ch,
-                                                             EINA_FALSE,
                                                              EINA_FALSE
 #ifdef REND_DBG
                                                              , 1
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index 1a03c29..9defa26 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1239,7 +1239,7 @@ Eina_Bool evas_render_mapped(Evas_Public_Data *e, 
Evas_Object *obj,
                              Evas_Object_Protected_Data *source_pd,
                              void *context, void *surface, int off_x, int 
off_y,
                              int mapped, int ecx, int ecy, int ecw, int ech,
-                             Eina_Bool proxy_render, Eina_Bool proxy_src_clip
+                             Eina_Bool proxy_render
 #ifdef REND_DBG
                              , int level
 #endif

-- 

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr

Reply via email to