diff options
author | JunsuChoi <jsuya.choi@samsung.com> | 2020-04-14 11:38:27 +0900 |
---|---|---|
committer | JunsuChoi <jsuya.choi@samsung.com> | 2020-04-14 11:38:27 +0900 |
commit | a18ac99dd62a302d1b98709f5e02e2c4e444f257 (patch) | |
tree | fcb43e65d91d1bfc6f5df217541e63fc2508cbef | |
parent | 3897603796a74f438167cacc3bba43b76b41d3dd (diff) | |
download | efl-a18ac99dd62a302d1b98709f5e02e2c4e444f257.tar.gz |
Efl.Canvas.Vg.Container: Prevent duplicate transpacency calculation.
Summary:
If Vg.Container has transparency, this is calculated by _evas_vg_render
in Efl.Canvas.Vg.Object. Therefore, there is no need to propagate
the transparency of the container to the child. _evas_vg_render pre-draws
all children and calculates transparency in batches for avoid duplicate calculation.
Test Plan: N/A
Reviewers: Hermet, kimcinoo, herb
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11692
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_vg_container.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/efl_canvas_vg_container.c b/src/lib/evas/canvas/efl_canvas_vg_container.c index f791f8160a..37b59405c3 100644 --- a/src/lib/evas/canvas/efl_canvas_vg_container.c +++ b/src/lib/evas/canvas/efl_canvas_vg_container.c @@ -212,6 +212,13 @@ _efl_canvas_vg_container_render_pre(Evas_Object_Protected_Data *vg_pd, if (flag & EFL_GFX_CHANGE_FLAG_MATRIX) child_nd->flags |= EFL_GFX_CHANGE_FLAG_MATRIX; + // Note: If Vg.Container has transparency, this is calculated by _evas_vg_render in Efl.Canvas.Vg.Object. + // Therefore, there is no need to propagate the transparency of the container to the child. + // However, if there is a composition target, the child must refer to the parent's opacity. + // Because _evas_vg_render does not support opacity calculation for containers that need to be composited. + // These things need to be refactored in a better way later. + c_a = !comp ? 255 : c_a; + _evas_vg_render_pre(vg_pd, child, engine, output, context, surface, ctransform, c_a, comp, comp_method); |