evas_render: deduplicate mapped mask render code
Summary: this code block was repeated multiple times throughout the function no functional changes Reviewers: cedric, kimcinoo Reviewed By: kimcinoo Subscribers: kimcinoo, #reviewers, #committers Tags: #efl_rendering Differential Revision: https://phab.enlightenment.org/D8837
This commit is contained in:
parent
346e5d1324
commit
15693d3b37
|
@ -1731,6 +1731,36 @@ _evas_render_mapped_context_clip_set(Evas_Public_Data *evas, Evas_Object *eo_obj
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_evas_render_mapped_mask(Evas_Public_Data *evas, Evas_Object_Protected_Data *obj, Evas_Object_Protected_Data *mask,
|
||||||
|
Evas_Proxy_Render_Data *proxy_render_data, void *output, void *ctx, int off_x, int off_y, int level, Eina_Bool do_async)
|
||||||
|
{
|
||||||
|
if (!mask) return;
|
||||||
|
|
||||||
|
// This path can be hit when we're multiplying masks on top of each other...
|
||||||
|
Evas_Object_Protected_Data *prev_mask = obj->clip.prev_mask;
|
||||||
|
Eina_Bool redraw = mask->mask->redraw || !mask->mask->surface;
|
||||||
|
|
||||||
|
RD(level, " has mask: %s redraw:%d sfc:%p prev_mask:%p\n",
|
||||||
|
RDNAME(mask), mask->mask->redraw, mask->mask->surface, prev_mask);
|
||||||
|
if (prev_mask && !_mask_apply_inside_proxy(proxy_render_data, prev_mask))
|
||||||
|
{
|
||||||
|
RD(level, " discard prev mask and redraw (guessed outside proxy)\n");
|
||||||
|
prev_mask = NULL;
|
||||||
|
redraw = EINA_TRUE;
|
||||||
|
}
|
||||||
|
if (redraw)
|
||||||
|
evas_render_mask_subrender(evas, output, mask, prev_mask, level + 1, do_async);
|
||||||
|
|
||||||
|
if (mask->mask->surface)
|
||||||
|
{
|
||||||
|
ENFN->context_clip_image_set(ENC, ctx, mask->mask->surface,
|
||||||
|
mask->cur->geometry.x + off_x,
|
||||||
|
mask->cur->geometry.y + off_y,
|
||||||
|
evas, do_async);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Eina_Bool
|
Eina_Bool
|
||||||
evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
|
evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
|
||||||
Evas_Object_Protected_Data *obj, void *context,
|
Evas_Object_Protected_Data *obj, void *context,
|
||||||
|
@ -2052,31 +2082,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
|
||||||
off_y);
|
off_y);
|
||||||
|
|
||||||
/* Clipper masks */
|
/* Clipper masks */
|
||||||
if (mask)
|
_evas_render_mapped_mask(evas, obj, mask, proxy_render_data, output, ctx, off_x, off_y, level, do_async);
|
||||||
{
|
|
||||||
// This path can be hit when we're multiplying masks on top of each other...
|
|
||||||
Evas_Object_Protected_Data *prev_mask = obj->clip.prev_mask;
|
|
||||||
Eina_Bool redraw = mask->mask->redraw || !mask->mask->surface;
|
|
||||||
|
|
||||||
RD(level, " has mask: %s redraw:%d sfc:%p prev_mask:%p\n",
|
|
||||||
RDNAME(mask), mask->mask->redraw, mask->mask->surface, prev_mask);
|
|
||||||
if (prev_mask && !_mask_apply_inside_proxy(proxy_render_data, prev_mask))
|
|
||||||
{
|
|
||||||
RD(level, " discard prev mask and redraw (guessed outside proxy)\n");
|
|
||||||
prev_mask = NULL;
|
|
||||||
redraw = EINA_TRUE;
|
|
||||||
}
|
|
||||||
if (redraw)
|
|
||||||
evas_render_mask_subrender(evas, output, mask, prev_mask, level + 1, do_async);
|
|
||||||
|
|
||||||
if (mask->mask->surface)
|
|
||||||
{
|
|
||||||
ENFN->context_clip_image_set(ENC, ctx, mask->mask->surface,
|
|
||||||
mask->cur->geometry.x + off_x,
|
|
||||||
mask->cur->geometry.y + off_y,
|
|
||||||
evas, do_async);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj->cur->cache.clip.visible || !proxy_src_clip)
|
if (obj->cur->cache.clip.visible || !proxy_src_clip)
|
||||||
|
@ -2121,32 +2127,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
|
||||||
/* Clipper masks */
|
/* Clipper masks */
|
||||||
if (obj->cur->clipper && (mapped > 1) &&
|
if (obj->cur->clipper && (mapped > 1) &&
|
||||||
_evas_render_object_is_mask(obj->cur->clipper))
|
_evas_render_object_is_mask(obj->cur->clipper))
|
||||||
{
|
_evas_render_mapped_mask(evas, obj, obj->cur->clipper, proxy_render_data, output, ctx, off_x, off_y, level, do_async);
|
||||||
// This path can be hit when we're multiplying masks on top of each other...
|
|
||||||
Evas_Object_Protected_Data *mask = obj->cur->clipper;
|
|
||||||
Evas_Object_Protected_Data *prev_mask = obj->clip.prev_mask;
|
|
||||||
Eina_Bool redraw = mask->mask->redraw || !mask->mask->surface;
|
|
||||||
|
|
||||||
RD(level, " has mask: %s redraw:%d sfc:%p prev_mask:%p\n",
|
|
||||||
RDNAME(mask), mask->mask->redraw, mask->mask->surface, prev_mask);
|
|
||||||
if (prev_mask && !_mask_apply_inside_proxy(proxy_render_data, prev_mask))
|
|
||||||
{
|
|
||||||
RD(level, " discard prev mask and redraw (guessed outside proxy)\n");
|
|
||||||
prev_mask = NULL;
|
|
||||||
redraw = EINA_TRUE;
|
|
||||||
}
|
|
||||||
if (redraw)
|
|
||||||
evas_render_mask_subrender(evas, output, mask, prev_mask, level + 1, do_async);
|
|
||||||
|
|
||||||
if (mask->mask->surface)
|
|
||||||
{
|
|
||||||
ENFN->context_clip_image_set(ENC, ctx,
|
|
||||||
mask->mask->surface,
|
|
||||||
mask->cur->geometry.x + off_x,
|
|
||||||
mask->cur->geometry.y + off_y,
|
|
||||||
evas, do_async);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!proxy_src_clip)
|
else if (!proxy_src_clip)
|
||||||
{
|
{
|
||||||
if (!_proxy_context_clip(evas, ctx, proxy_render_data, obj, off_x, off_y))
|
if (!_proxy_context_clip(evas, ctx, proxy_render_data, obj, off_x, off_y))
|
||||||
|
@ -2215,32 +2196,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clipper masks */
|
/* Clipper masks */
|
||||||
if (mask)
|
_evas_render_mapped_mask(evas, obj, mask, proxy_render_data, output, ctx, off_x, off_y, level, do_async);
|
||||||
{
|
|
||||||
// This path can be hit when we're multiplying masks on top of each other...
|
|
||||||
Evas_Object_Protected_Data *prev_mask = obj->clip.prev_mask;
|
|
||||||
Eina_Bool redraw = mask->mask->redraw || !mask->mask->surface;
|
|
||||||
|
|
||||||
RD(level, " has mask: %s redraw:%d sfc:%p prev_mask:%p\n",
|
|
||||||
RDNAME(mask), mask->mask->redraw, mask->mask->surface, prev_mask);
|
|
||||||
if (prev_mask && !_mask_apply_inside_proxy(proxy_render_data, prev_mask))
|
|
||||||
{
|
|
||||||
RD(level, " discard prev mask and redraw (guessed outside proxy)\n");
|
|
||||||
prev_mask = NULL;
|
|
||||||
redraw = EINA_TRUE;
|
|
||||||
}
|
|
||||||
if (redraw)
|
|
||||||
evas_render_mask_subrender(evas, output, mask, prev_mask, level + 1, do_async);
|
|
||||||
|
|
||||||
if (mask->mask->surface)
|
|
||||||
{
|
|
||||||
ENFN->context_clip_image_set(ENC, ctx,
|
|
||||||
mask->mask->surface,
|
|
||||||
mask->cur->geometry.x + off_x,
|
|
||||||
mask->cur->geometry.y + off_y,
|
|
||||||
evas, do_async);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef REND_DBG
|
#ifdef REND_DBG
|
||||||
|
|
Loading…
Reference in New Issue