Evas masking: Fix rendering of masks that belong to a proxied smart object
authorJean-Philippe Andre <jp.andre@samsung.com>
Wed, 15 Jul 2015 07:41:59 +0000 (16:41 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Wed, 15 Jul 2015 07:41:59 +0000 (16:41 +0900)
This is a complex situation:
- Smart object A contains image I
- A is proxied into an image B
- B is marked as source_invisible, which means A is invisible
- Mask M is applied to image I
- Mask M is ALSO a smart child of A
Because of all that, mask M could not be rendered into its private
mask surface, as it was falling under the case of "parent_src_invisible".

This patch checks that the object is not a mask during the
parent_src_invisible check.

@fix

src/lib/evas/include/evas_inline.x

index 83fa4b4..4614737 100644 (file)
@@ -118,6 +118,7 @@ evas_object_is_source_invisible(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Pro
      return obj->parent_cache.src_invisible;
    if ((obj->proxy->proxies || obj->proxy->proxy_textures) && obj->proxy->src_invisible) return 1;
    if (!obj->smart.parent) return 0;
+   if (obj->mask->is_mask) return 0;
    Evas_Object_Protected_Data *smart_parent_pd =
       eo_data_scope_get(obj->smart.parent, EVAS_OBJECT_CLASS);
    obj->parent_cache.src_invisible =