summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2015-02-03 15:51:01 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2015-02-04 12:48:10 +0900
commit5fb43d35590b186dc3d04ca1ce0c3cbd2b50c0ed (patch)
tree6868d41a2ebbea100839ffe317683b7e2fa512e9
parent89ee8e1446ca20e5d7a0d0df9da45003ddef0cc8 (diff)
downloadefl-5fb43d35590b186dc3d04ca1ce0c3cbd2b50c0ed.tar.gz
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...
-rw-r--r--src/lib/evas/canvas/evas_render.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index 43c55ccae2..c967adbe4c 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);
}
}