cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=750b9d065f51133c3bba89c359b8787c7db0547c

commit 750b9d065f51133c3bba89c359b8787c7db0547c
Author: Cedric BAIL <ced...@osg.samsung.com>
Date:   Fri Aug 25 10:52:33 2017 -0700

    evas: propagate output to evas_render_mask_subrender and don't use ENDT 
there.
---
 src/lib/evas/canvas/evas_render.c   | 23 +++++++++++++++--------
 src/lib/evas/include/evas_private.h |  1 -
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index f5485c4838..f9206439d3 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -119,6 +119,12 @@ struct _Cutout_Margin
 
 static Eina_Bool
 evas_render_updates_internal(Evas *eo_e, unsigned char make_updates, unsigned 
char do_draw, Evas_Render_Done_Cb done_func, void *done_data, Eina_Bool 
do_async);
+static void
+evas_render_mask_subrender(Evas_Public_Data *evas,
+                           void *output,
+                           Evas_Object_Protected_Data *mask,
+                           Evas_Object_Protected_Data *prev_mask,
+                           int level, Eina_Bool do_async);
 
 static Eina_List *_rendering_evases = NULL;
 
@@ -2049,7 +2055,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                             redraw = EINA_TRUE;
                          }
                        if (redraw)
-                         evas_render_mask_subrender(evas, mask, prev_mask, 
level + 1, do_async);
+                         evas_render_mask_subrender(evas, ENDT, mask, 
prev_mask, level + 1, do_async);
 
                        if (mask->mask->surface)
                          {
@@ -2121,7 +2127,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                             redraw = EINA_TRUE;
                          }
                        if (redraw)
-                         evas_render_mask_subrender(evas, mask, prev_mask, 
level + 1, do_async);
+                         evas_render_mask_subrender(evas, ENDT, mask, 
prev_mask, level + 1, do_async);
 
                        if (mask->mask->surface)
                          {
@@ -2214,7 +2220,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object 
*eo_obj,
                                  redraw = EINA_TRUE;
                               }
                             if (redraw)
-                              evas_render_mask_subrender(evas, mask, 
prev_mask, level + 1, do_async);
+                              evas_render_mask_subrender(evas, ENDT, mask, 
prev_mask, level + 1, do_async);
 
                             if (mask->mask->surface)
                               {
@@ -2402,8 +2408,9 @@ evas_render_proxy_subrender(Evas *eo_e, void *output, 
Evas_Object *eo_source, Ev
  * In GL the target surface will be RGBA for now. TODO: Find out how to
  *   render GL to alpha, if that's possible.
  */
-void
+static void
 evas_render_mask_subrender(Evas_Public_Data *evas,
+                           void *output,
                            Evas_Object_Protected_Data *mask,
                            Evas_Object_Protected_Data *prev_mask,
                            int level, Eina_Bool do_async)
@@ -2470,7 +2477,7 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
           {
              // Note: This is preventive code. Never seen it happen.
              WRN("Mask render order may be invalid");
-             evas_render_mask_subrender(evas, prev_mask, 
prev_mask->clip.prev_mask, level + 1, do_async);
+             evas_render_mask_subrender(evas, output, prev_mask, 
prev_mask->clip.prev_mask, level + 1, do_async);
           }
      }
 
@@ -2546,7 +2553,7 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
           ctx = ENFN->context_new(ENC);
           ENFN->context_color_set(ENC, ctx, 0, 0, 0, 0);
           ENFN->context_render_op_set(ENC, ctx, EVAS_RENDER_COPY);
-          ENFN->rectangle_draw(ENC, ENDT, ctx, mdata->surface, 0, 0, w, h, 
do_async);
+          ENFN->rectangle_draw(ENC, output, ctx, mdata->surface, 0, 0, w, h, 
do_async);
           ENFN->context_free(ENC, ctx);
           eina_evlog("-mask_rect_clear", mask->object, 0.0, NULL);
 
@@ -2569,7 +2576,7 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
           if (EINA_LIKELY(!mask->is_smart))
             {
                mask->func->render(mask->object, mask, mask->private_data,
-                                  ENC, ENDT, ctx, mdata->surface, -x, -y, 
do_async);
+                                  ENC, output, ctx, mdata->surface, -x, -y, 
do_async);
             }
           else
             {
@@ -3010,7 +3017,7 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *evas,
                        Evas_Object_Protected_Data *prev_mask = 
obj->clip.prev_mask;
 
                        if (mask->mask->redraw || !mask->mask->surface)
-                         evas_render_mask_subrender(obj->layer->evas, mask, 
prev_mask, 4, do_async);
+                         evas_render_mask_subrender(obj->layer->evas, ENDT, 
mask, prev_mask, 4, do_async);
 
                        if (mask->mask->surface)
                          {
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index cf43529af9..aca67b9047 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -2057,7 +2057,6 @@ Eina_Bool evas_render_mapped(Evas_Public_Data *e, 
Evas_Object *obj,
 void evas_render_invalidate(Evas *e);
 void evas_render_object_recalc(Evas_Object_Protected_Data *obj);
 void evas_render_proxy_subrender(Evas *eo_e, void *output, Evas_Object 
*eo_source, Evas_Object *eo_proxy, Evas_Object_Protected_Data *proxy_obj, 
Eina_Bool source_clip, Eina_Bool do_async);
-void evas_render_mask_subrender(Evas_Public_Data *e, 
Evas_Object_Protected_Data *mask, Evas_Object_Protected_Data *prev_mask, int 
level, Eina_Bool do_async);
 
 Eina_Bool evas_map_inside_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y);
 Eina_Bool evas_map_coords_get(const Evas_Map *m, double x, double y, double 
*mx, double *my, int grab);

-- 


Reply via email to