From 60a97c9be30ce429c9609f631c0b24d748c9b3d7 Mon Sep 17 00:00:00 2001 From: Minkyoung Kim Date: Tue, 11 Apr 2017 13:47:55 +0900 Subject: [PATCH] evas: If there isn't clipper when recalcing clip, set mask.clip = NULL. Summary: There's problem in Tizen3.0. 1. Clip set mask_obj to obj for masking. 2. Unset mask_obj from obj, and del mask_obj. 3. obj has clip.mask still. So obj is trying to do mask_subrender() for freeed mask_obj. So reset clip.mask to NULL, If there isn't clipper. Now, there's no routine for reseting clip.mask when clipper object is freed. isn't it? Actually I'm not sure that clip.mask=NULL should be there as this patch. Test Plan: Tizen3.0 wearable Reviewers: cedric, raster, wonsik, jpeg Subscribers: scholb.kim, dkdk Differential Revision: https://phab.enlightenment.org/D4721 Signed-off-by: Jean-Philippe Andre --- src/lib/evas/canvas/evas_object_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index adae7d5e74..dcfecfce54 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -311,6 +311,9 @@ evas_object_clip_recalc_do(Evas_Object_Protected_Data *obj, Evas_Object_Protecte cb = (cb * (nb + 1)) >> 8; ca = (ca * (na + 1)) >> 8; } + else obj->clip.mask = NULL; + if (!EVAS_OBJECT_DATA_VALID(obj->clip.mask)) + obj->clip.mask = NULL; if (((ca == 0) && (obj->cur->render_op == EVAS_RENDER_BLEND)) || (cw <= 0) || (ch <= 0))