diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2015-02-03 15:51:01 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2015-02-04 12:48:10 +0900 |
commit | 5fb43d35590b186dc3d04ca1ce0c3cbd2b50c0ed (patch) | |
tree | 6868d41a2ebbea100839ffe317683b7e2fa512e9 | |
parent | 89ee8e1446ca20e5d7a0d0df9da45003ddef0cc8 (diff) | |
download | efl-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.c | 8 |
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); } } |