summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunsuChoi <jsuya.choi@samsung.com>2020-02-25 11:54:57 +0900
committerHermet Park <hermetpark@gmail.com>2020-02-25 11:55:14 +0900
commit6de0ed7b5d221506756bde36888e7c4c4f69c9f3 (patch)
tree535a1249692931edfecd00588006376e31b63c6d
parentad001028424f6f4036c1ba244b3c777c1650b14b (diff)
downloadefl-6de0ed7b5d221506756bde36888e7c4c4f69c9f3.tar.gz
vg_common_json: Fix to duplication of mask and matte.
Summary: There is a case that uses a mask and a mat at the same time. One of them did not apply. This patch modifies two attributes to be parent-child. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11399
-rw-r--r--src/static_libs/vg_common/vg_common_json.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/static_libs/vg_common/vg_common_json.c b/src/static_libs/vg_common/vg_common_json.c
index 2092b852a5..f7b3e9d2f5 100644
--- a/src/static_libs/vg_common/vg_common_json.c
+++ b/src/static_libs/vg_common/vg_common_json.c
@@ -311,7 +311,7 @@ _construct_mask_nodes(Efl_Canvas_Vg_Container *parent, LOTMask *mask, int depth
efl_gfx_color_set(shape, r, g, b, a);
}
-static void
+static Efl_Canvas_Vg_Container*
_construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int mask_cnt, int depth)
{
char *key = NULL;
@@ -329,7 +329,7 @@ _construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int
#if DEBUG
for (int i = 0; i < depth; i++) printf(" ");
- printf("%s (%p), mask => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mtarget);
+ printf("%s (%p), base mask => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mtarget);
depth++;
#endif
@@ -356,7 +356,7 @@ _construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int
#if DEBUG
for (int i = 0; i < depth; i++) printf(" ");
- printf("%s (%p), mask:%d => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mask->mMode, mtarget);
+ printf("%s (%p), real mask:%d => %p\n", efl_class_name_get(efl_class_get(msource)), msource, mask->mMode, mtarget);
#endif
_construct_mask_nodes(msource, mask, depth + 1);
@@ -381,6 +381,7 @@ _construct_masks(Efl_Canvas_Vg_Container *mtarget, LOTMask *masks, unsigned int
efl_canvas_vg_node_comp_method_set(mtarget, msource, mask_mode);
mtarget = msource;
}
+ return mtarget;
}
static void
@@ -432,7 +433,7 @@ _update_vg_tree(Efl_Canvas_Vg_Container *root, const LOTLayerNode *layer, int de
}
#if DEBUG
for (int i = 0; i < depth; i++) printf(" ");
- printf("%s (%p) matte:%d => %p\n", efl_class_name_get(efl_class_get(ctree)), ctree, matte_mode, ptree);
+ printf("%s (%p) matte:%d => %p %s\n", efl_class_name_get(efl_class_get(ctree)), ctree, matte_mode, ptree, clayer->keypath);
#endif
_update_vg_tree(ctree, clayer, depth+1);
@@ -448,6 +449,8 @@ _update_vg_tree(Efl_Canvas_Vg_Container *root, const LOTLayerNode *layer, int de
mlayer = clayer;
if (!mtarget) mtarget = ctree;
}
+ else
+ mtarget = NULL;
ptree = ctree;
@@ -475,15 +478,16 @@ _update_vg_tree(Efl_Canvas_Vg_Container *root, const LOTLayerNode *layer, int de
matte_mode = 0;
break;
}
+
+ //Construct node that have mask.
+ if (mlayer && mtarget)
+ ptree = _construct_masks(mtarget, mlayer->mMaskList.ptr, mlayer->mMaskList.size, depth + 1);
}
//Construct drawable nodes.
if (layer->mNodeList.size > 0)
_construct_drawable_nodes(root, layer, depth);
- //Construct node that have mask.
- if (mlayer)
- _construct_masks(mtarget, mlayer->mMaskList.ptr, mlayer->mMaskList.size, depth);
}
#endif