forked from enlightenment/efl
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:
parent
89ee8e1446
commit
5fb43d3559
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue