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...
This commit is contained in:
Jean-Philippe Andre 2015-02-03 15:51:01 +09:00
parent 89ee8e1446
commit 5fb43d3559
1 changed files with 4 additions and 4 deletions

View File

@ -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);
}
}