evas_render: do not use mask of proxy source
authorShinwoo Kim <cinoo.kim@samsung.com>
Thu, 28 May 2020 01:40:40 +0000 (10:40 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Sun, 31 May 2020 21:33:07 +0000 (06:33 +0900)
Summary:
A mask of proxy source can be same with a mask of proxy source's child.
If source_clip is false, then the child object should not use the mask.

Test Plan: {F3888363}

Reviewers: Hermet, herb, jsuya

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11870

src/lib/evas/canvas/evas_render.c

index 2c23739..bced3eb 100644 (file)
@@ -1763,6 +1763,9 @@ _evas_render_mapped_mask(Evas_Public_Data *evas, Evas_Object_Protected_Data *obj
                          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;
+   if (proxy_render_data &&
+       !proxy_render_data->source_clip &&
+       proxy_render_data->src_obj->clip.mask == 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;