jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5fb43d35590b186dc3d04ca1ce0c3cbd2b50c0ed

commit 5fb43d35590b186dc3d04ca1ce0c3cbd2b50c0ed
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Tue Feb 3 15:51:01 2015 +0900

    Evas masking: Forward previous mask where needed
    
    In a situation where an object with mask of mask is in a map
    (Yes! It can happen!) the masks would not get properly "multiplied".
    
    Now the problem is that some objects still seem to bypass some
    masks... Hmm...
---
 src/lib/evas/canvas/evas_render.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 43c55cc..c967adb 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -1514,7 +1514,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
                        evas_object_clip_recalc(obj);
 
                        if (mask->mask->redraw || !mask->mask->surface)
-                         evas_render_mask_subrender(obj->layer->evas, mask, 
NULL);
+                         evas_render_mask_subrender(obj->layer->evas, mask, 
obj->clip.prev_mask);
 
                        if (mask->mask->surface)
                          {
@@ -1573,7 +1573,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
                             // This path can be hit when we're multiplying 
masks on top of each other...
                             Evas_Object_Protected_Data *mask = 
obj->cur->clipper;
                             if (mask->mask->redraw || !mask->mask->surface)
-                              evas_render_mask_subrender(obj->layer->evas, 
mask, NULL);
+                              evas_render_mask_subrender(obj->layer->evas, 
mask, obj->clip.prev_mask);
 
                             if (mask->mask->surface)
                               {
@@ -1768,9 +1768,9 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
           }
         else if (!prev_mask->mask->surface)
           {
-             // FIXME?
+             // Note: This is preventive code. Never seen it happen.
              WRN("Mask render order may be invalid");
-             evas_render_mask_subrender(evas, prev_mask, NULL);
+             evas_render_mask_subrender(evas, prev_mask, 
prev_mask->clip.prev_mask);
           }
      }
 

-- 


Reply via email to