jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4f78aba9bf5726bb6b6fe963e4a2db441158f6ff

commit 4f78aba9bf5726bb6b6fe963e4a2db441158f6ff
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Thu Dec 15 15:25:43 2016 +0900

    evas: Use ENFN, ENDT in evas_render
    
    This makes code shorter and easier to read (imo).
    Also introduce ENCTX for the engine context. It's used in a couple
    places and I believe it's just wrong - but works because the engine
    context and the current context are the same.
---
 src/lib/evas/canvas/evas_render.c | 462 +++++++++++++++++---------------------
 1 file changed, 205 insertions(+), 257 deletions(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 075cb10..42cb32f 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -74,6 +74,7 @@ rend_dbg(const char *txt)
 /* save typing */
 #define ENFN evas->engine.func
 #define ENDT evas->engine.data.output
+#define ENCTX evas->engine.data.context
 
 typedef struct _Render_Updates Render_Updates;
 struct _Render_Updates
@@ -265,18 +266,18 @@ _evas_render_can_render(Evas_Object *eo_obj, 
Evas_Object_Protected_Data *obj)
 }
 
 static void
-_evas_render_prev_cur_clip_cache_add(Evas_Public_Data *e, 
Evas_Object_Protected_Data *obj)
+_evas_render_prev_cur_clip_cache_add(Evas_Public_Data *evas, 
Evas_Object_Protected_Data *obj)
 {
-   e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                           obj->prev->cache.clip.x + 
e->framespace.x,
-                                           obj->prev->cache.clip.y + 
e->framespace.y,
-                                           obj->prev->cache.clip.w,
-                                           obj->prev->cache.clip.h);
-   e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                           obj->cur->cache.clip.x + 
e->framespace.x,
-                                           obj->cur->cache.clip.y + 
e->framespace.y,
-                                           obj->cur->cache.clip.w,
-                                           obj->cur->cache.clip.h);
+   ENFN->output_redraws_rect_add(ENDT,
+                                 obj->prev->cache.clip.x + evas->framespace.x,
+                                 obj->prev->cache.clip.y + evas->framespace.y,
+                                 obj->prev->cache.clip.w,
+                                 obj->prev->cache.clip.h);
+   ENFN->output_redraws_rect_add(ENDT,
+                                 obj->cur->cache.clip.x + evas->framespace.x,
+                                 obj->cur->cache.clip.y + evas->framespace.y,
+                                 obj->cur->cache.clip.w,
+                                 obj->cur->cache.clip.h);
 }
 
 static void
@@ -488,90 +489,81 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
 }
 
 static void
-_evas_render_object_map_change_update(Evas_Public_Data *e, Evas_Object *eo_obj 
EINA_UNUSED,
+_evas_render_object_map_change_update(Evas_Public_Data *evas,
                                       Evas_Object_Protected_Data *obj,
                                       Eina_Bool map, Eina_Bool hmap,
                                       int *redraw_all)
 {
+   Evas_Coord x = 0, y = 0, w = 0, h = 0;
+   const int fx = evas->framespace.x;
+   const int fy = evas->framespace.y;
+
    if (map == hmap) return;
 
-   if (obj->map)
+   if (!obj->map)
      {
-        Evas_Coord x = 0, y = 0, w = 0, h = 0;
+        *redraw_all = 1;
+        return;
+     }
 
-        if (map)
+   if (map)
+     {
+        x = obj->prev->cache.clip.x;
+        y = obj->prev->cache.clip.y;
+        w = obj->prev->cache.clip.w;
+        h = obj->prev->cache.clip.h;
+        if (obj->prev->clipper)
           {
-             x = obj->prev->cache.clip.x;
-             y = obj->prev->cache.clip.y;
-             w = obj->prev->cache.clip.w;
-             h = obj->prev->cache.clip.h;
-             if (obj->prev->clipper)
-               {
-                  RECTS_CLIP_TO_RECT(x, y, w, h,
-                                     obj->prev->clipper->prev->cache.clip.x,
-                                     obj->prev->clipper->prev->cache.clip.y,
-                                     obj->prev->clipper->prev->cache.clip.w,
-                                     obj->prev->clipper->prev->cache.clip.h);
-               }
-             e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                     x + e->framespace.x,
-                                                     y + e->framespace.y,
-                                                     w, h);
-             x = obj->map->cur.map->normal_geometry.x;
-             y = obj->map->cur.map->normal_geometry.y;
-             w = obj->map->cur.map->normal_geometry.w;
-             h = obj->map->cur.map->normal_geometry.h;
-             if (obj->cur->clipper)
-               {
-                  RECTS_CLIP_TO_RECT(x, y, w, h,
-                                     obj->cur->clipper->cur->cache.clip.x,
-                                     obj->cur->clipper->cur->cache.clip.y,
-                                     obj->cur->clipper->cur->cache.clip.w,
-                                     obj->cur->clipper->cur->cache.clip.h);
-               }
-             e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                     x + e->framespace.x,
-                                                     y + e->framespace.y,
-                                                     w, h);
-          }
-        else if (hmap)
-          {
-             x = obj->map->prev.map->normal_geometry.x;
-             y = obj->map->prev.map->normal_geometry.y;
-             w = obj->map->prev.map->normal_geometry.w;
-             h = obj->map->prev.map->normal_geometry.h;
-             if (obj->prev->clipper)
-               {
-                  RECTS_CLIP_TO_RECT(x, y, w, h,
-                                     obj->prev->clipper->prev->cache.clip.x,
-                                     obj->prev->clipper->prev->cache.clip.y,
-                                     obj->prev->clipper->prev->cache.clip.w,
-                                     obj->prev->clipper->prev->cache.clip.h);
-               }
-             e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                     x + e->framespace.x,
-                                                     y + e->framespace.y,
-                                                     w, h);
-             x = obj->cur->cache.clip.x;
-             y = obj->cur->cache.clip.y;
-             w = obj->cur->cache.clip.w;
-             h = obj->cur->cache.clip.h;
-             if (obj->cur->clipper)
-               {
-                  RECTS_CLIP_TO_RECT(x, y, w, h,
-                                     obj->cur->clipper->cur->cache.clip.x,
-                                     obj->cur->clipper->cur->cache.clip.y,
-                                     obj->cur->clipper->cur->cache.clip.w,
-                                     obj->cur->clipper->cur->cache.clip.h);
-               }
-             e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                     x + e->framespace.x,
-                                                     y + e->framespace.y,
-                                                     w, h);
+             RECTS_CLIP_TO_RECT(x, y, w, h,
+                                obj->prev->clipper->prev->cache.clip.x,
+                                obj->prev->clipper->prev->cache.clip.y,
+                                obj->prev->clipper->prev->cache.clip.w,
+                                obj->prev->clipper->prev->cache.clip.h);
           }
-        return;
+        ENFN->output_redraws_rect_add(ENDT, x + fx, y + fy, w, h);
+        x = obj->map->cur.map->normal_geometry.x;
+        y = obj->map->cur.map->normal_geometry.y;
+        w = obj->map->cur.map->normal_geometry.w;
+        h = obj->map->cur.map->normal_geometry.h;
+        if (obj->cur->clipper)
+          {
+             RECTS_CLIP_TO_RECT(x, y, w, h,
+                                obj->cur->clipper->cur->cache.clip.x,
+                                obj->cur->clipper->cur->cache.clip.y,
+                                obj->cur->clipper->cur->cache.clip.w,
+                                obj->cur->clipper->cur->cache.clip.h);
+          }
+        ENFN->output_redraws_rect_add(ENDT, x + fx, y + fy, w, h);
+     }
+   else if (hmap)
+     {
+        x = obj->map->prev.map->normal_geometry.x;
+        y = obj->map->prev.map->normal_geometry.y;
+        w = obj->map->prev.map->normal_geometry.w;
+        h = obj->map->prev.map->normal_geometry.h;
+        if (obj->prev->clipper)
+          {
+             RECTS_CLIP_TO_RECT(x, y, w, h,
+                                obj->prev->clipper->prev->cache.clip.x,
+                                obj->prev->clipper->prev->cache.clip.y,
+                                obj->prev->clipper->prev->cache.clip.w,
+                                obj->prev->clipper->prev->cache.clip.h);
+          }
+        ENFN->output_redraws_rect_add(ENDT, x + fx, y + fy, w, h);
+        x = obj->cur->cache.clip.x;
+        y = obj->cur->cache.clip.y;
+        w = obj->cur->cache.clip.w;
+        h = obj->cur->cache.clip.h;
+        if (obj->cur->clipper)
+          {
+             RECTS_CLIP_TO_RECT(x, y, w, h,
+                                obj->cur->clipper->cur->cache.clip.x,
+                                obj->cur->clipper->cur->cache.clip.y,
+                                obj->cur->clipper->cur->cache.clip.w,
+                                obj->cur->clipper->cur->cache.clip.h);
+          }
+        ENFN->output_redraws_rect_add(ENDT, x + fx, y + fy, w, h);
      }
-   *redraw_all = 1;
 }
 
 
@@ -593,19 +585,18 @@ typedef struct
 } Render_Cache;
 
 void
-evas_render_update_del(Evas_Public_Data *e, int x, int y, int w, int h)
+evas_render_update_del(Evas_Public_Data *evas, int x, int y, int w, int h)
 {
-   if (EINA_LIKELY((e->update_del_redirect_array == NULL)))
+   if (EINA_LIKELY((evas->update_del_redirect_array == NULL)))
      {
-        e->engine.func->output_redraws_rect_del(e->engine.data.output,
-                                                x, y, w, h);
+        ENFN->output_redraws_rect_del(ENDT, x, y, w, h);
      }
    else
      {
         Eina_Rectangle r;
 
         r.x = x; r.y = y; r.w = w; r.h = h;
-        eina_inarray_push(e->update_del_redirect_array, &r);
+        eina_inarray_push(evas->update_del_redirect_array, &r);
      }
 }
 
@@ -743,9 +734,7 @@ _evas_render_phase1_object_mapped(Phase1_Context *p1ctx,
      _evas_render_phase1_object_map_clipper_fix(eo_obj, obj);
    if (!obj_changed) return;
 
-   _evas_render_object_map_change_update(p1ctx->e, eo_obj, obj,
-                                         EINA_TRUE, hmap,
-                                         &(p1ctx->redraw_all));
+   _evas_render_object_map_change_update(p1ctx->e, obj, EINA_TRUE, hmap, 
&(p1ctx->redraw_all));
    if (!((is_active) &&
          (!obj->clip.clipees) &&
          ((evas_object_is_visible(eo_obj, obj) &&
@@ -782,9 +771,7 @@ 
_evas_render_phase1_object_mapped_had_restack(Phase1_Context *p1ctx,
              if ((obj->map->cur.map) && (obj->map->cur.usemap))
                map = EINA_TRUE;
           }
-        _evas_render_object_map_change_update(p1ctx->e, eo_obj, obj,
-                                              map, EINA_TRUE,
-                                              &(p1ctx->redraw_all));
+        _evas_render_object_map_change_update(p1ctx->e, obj, map, EINA_TRUE, 
&(p1ctx->redraw_all));
      }
    if (!(!map && obj->cur->clipper)) return;
    // Fix some bad clipping issues after an evas_map animation finishes
@@ -2568,7 +2555,7 @@ end:
 }
 
 static void
-_evas_render_cutout_add(Evas_Public_Data *e, void *context, 
Evas_Object_Protected_Data *obj, int off_x, int off_y)
+_evas_render_cutout_add(Evas_Public_Data *evas, void *context, 
Evas_Object_Protected_Data *obj, int off_x, int off_y)
 {
    if (evas_object_is_source_invisible(obj->object, obj)) return;
    if (evas_object_is_opaque(obj->object, obj))
@@ -2598,9 +2585,7 @@ _evas_render_cutout_add(Evas_Public_Data *e, void 
*context, Evas_Object_Protecte
                   oo = oo->cur->clipper;
                }
           }
-        e->engine.func->context_cutout_add
-          (e->engine.data.output, context,
-              cox + off_x, coy + off_y, cow, coh);
+        ENFN->context_cutout_add(ENDT, context, cox + off_x, coy + off_y, cow, 
coh);
      }
    else
      {
@@ -2618,9 +2603,7 @@ _evas_render_cutout_add(Evas_Public_Data *e, void 
*context, Evas_Object_Protecte
                                      obj->cur->cache.clip.y + off_y,
                                      obj->cur->cache.clip.w,
                                      obj->cur->cache.clip.h);
-                  e->engine.func->context_cutout_add
-                    (e->engine.data.output, context,
-                        obx, oby, obw, obh);
+                  ENFN->context_cutout_add(ENDT, context, obx, oby, obw, obh);
                }
           }
      }
@@ -2702,7 +2685,7 @@ _is_obj_in_rect(Evas_Object *eo_obj, 
Evas_Object_Protected_Data *obj,
 #endif
 
 static Eina_Bool
-evas_render_updates_internal_loop(Evas *eo_e, Evas_Public_Data *e,
+evas_render_updates_internal_loop(Evas *eo_e, Evas_Public_Data *evas,
                                   void *surface, void *context,
                                   Evas_Object_Protected_Data *top,
                                   int ux, int uy, int uw, int uh,
@@ -2726,48 +2709,39 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *e,
    /* build obscuring objects list (in order from bottom to top) */
    if (alpha)
      {
-        e->engine.func->context_clip_set(e->engine.data.output,
-                                         context,
-                                         ux + off_x, uy + off_y, uw, uh);
+        ENFN->context_clip_set(ENDT, context, ux + off_x, uy + off_y, uw, uh);
      }
-   for (i = 0; i < e->obscuring_objects.count; ++i)
+   for (i = 0; i < evas->obscuring_objects.count; ++i)
      {
         obj = (Evas_Object_Protected_Data *)eina_array_data_get
-          (&e->obscuring_objects, i);
+          (&evas->obscuring_objects, i);
         if (evas_object_is_in_output_rect(obj->object, obj, ux - fx, uy - fy, 
uw, uh))
           {
-             OBJ_ARRAY_PUSH(&e->temporary_objects, obj);
+             OBJ_ARRAY_PUSH(&evas->temporary_objects, obj);
 
              if (obj == top) break;
 
              /* reset the background of the area if needed (using cutout and 
engine alpha flag to help) */
              if (alpha)
-               _evas_render_cutout_add(e, context, obj, off_x + fx, off_y + 
fy);
+               _evas_render_cutout_add(evas, context, obj, off_x + fx, off_y + 
fy);
           }
      }
    if (alpha)
      {
-        e->engine.func->context_color_set(e->engine.data.output,
-                                          context,
-                                          0, 0, 0, 0);
-        e->engine.func->context_multiplier_unset
-          (e->engine.data.output, e->engine.data.context);
-        e->engine.func->context_render_op_set(e->engine.data.output,
-                                              context,
-                                              EVAS_RENDER_COPY);
-        e->engine.func->rectangle_draw(e->engine.data.output,
-                                       context, surface,
-                                       cx, cy, cw, ch, do_async);
-        e->engine.func->context_cutout_clear(e->engine.data.output, context);
-        e->engine.func->context_clip_unset(e->engine.data.output, context);
+        ENFN->context_color_set(ENDT, context, 0, 0, 0, 0);
+        ENFN->context_multiplier_unset(ENDT, ENCTX); // XXX: Why not 
'context'???
+        ENFN->context_render_op_set(ENDT, context, EVAS_RENDER_COPY);
+        ENFN->rectangle_draw(ENDT, context, surface, cx, cy, cw, ch, do_async);
+        ENFN->context_cutout_clear(ENDT, context);
+        ENFN->context_clip_unset(ENDT, context);
      }
    eina_evlog("-render_setup", eo_e, 0.0, NULL);
 
    eina_evlog("+render_objects", eo_e, 0.0, NULL);
    /* render all object that intersect with rect */
-   for (i = 0; i < e->active_objects.len; i++)
+   for (i = 0; i < evas->active_objects.len; i++)
      {
-        Evas_Active_Entry *ent = eina_inarray_nth(&e->active_objects, i);
+        Evas_Active_Entry *ent = eina_inarray_nth(&evas->active_objects, i);
 
         obj = ent->obj;
         eo_obj = obj->object;
@@ -2795,8 +2769,8 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *e,
              int x, y, w, h;
 
              RD(level, "      DRAW (vis: %i, a: %i, clipees: %p)\n", 
obj->cur->visible, obj->cur->color.a, obj->clip.clipees);
-             if ((e->temporary_objects.count > *offset) &&
-                 (eina_array_data_get(&e->temporary_objects, *offset) == obj))
+             if ((evas->temporary_objects.count > *offset) &&
+                 (eina_array_data_get(&evas->temporary_objects, *offset) == 
obj))
                (*offset)++;
              x = cx; y = cy; w = cw; h = ch;
              if (((w > 0) && (h > 0)) || (obj->is_smart))
@@ -2822,9 +2796,7 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *e,
                                           obj->cur->cache.clip.h);
                     }
 
-                  e->engine.func->context_clip_set(e->engine.data.output,
-                                                   context,
-                                                   x, y, w, h);
+                  ENFN->context_clip_set(ENDT, context, x, y, w, h);
 
                   /* Clipper masks */
                   if (_evas_render_object_is_mask(obj->cur->clipper))
@@ -2840,24 +2812,22 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *e,
 
                        if (mask->mask->surface)
                          {
-                            e->engine.func->context_clip_image_set
-                              (e->engine.data.output,
-                               context,
-                               mask->mask->surface,
-                               mask->cur->geometry.x + off_x,
-                               mask->cur->geometry.y + off_y,
-                               e, do_async);
+                            ENFN->context_clip_image_set(ENDT, context,
+                                                         mask->mask->surface,
+                                                         mask->cur->geometry.x 
+ off_x,
+                                                         mask->cur->geometry.y 
+ off_y,
+                                                         evas, do_async);
                          }
                     }
 
                   eina_evlog("+cutouts_add", obj->object, 0.0, NULL);
 #if 1 /* FIXME: this can slow things down... figure out optimum... coverage */
-                  for (j = *offset; j < e->temporary_objects.count; ++j)
+                  for (j = *offset; j < evas->temporary_objects.count; ++j)
                     {
                        Evas_Object_Protected_Data *obj2;
 
                        obj2 = (Evas_Object_Protected_Data *)eina_array_data_get
-                         (&e->temporary_objects, j);
+                         (&evas->temporary_objects, j);
                        if (obj2 == top) break;
 #if 1
                        if (
@@ -2872,32 +2842,27 @@ evas_render_updates_internal_loop(Evas *eo_e, 
Evas_Public_Data *e,
                             ux, uy, uw, uh)
                           )
 #endif
-                         _evas_render_cutout_add(e, context, obj2, off_x + fx, 
off_y + fy);
+                         _evas_render_cutout_add(evas, context, obj2, off_x + 
fx, off_y + fy);
                     }
 #endif
                   eina_evlog("-cutouts_add", obj->object, 0.0, NULL);
-                  clean_them |= evas_render_mapped(e, eo_obj, obj, context,
+                  clean_them |= evas_render_mapped(evas, eo_obj, obj, context,
                                                    surface, off_x + fx,
                                                    off_y + fy, 0,
                                                    cx, cy, cw, ch,
                                                    NULL, level + 3,
                                                    EINA_FALSE,
                                                    do_async);
-                  e->engine.func->context_cutout_clear(e->engine.data.output,
-                                                       context);
+                  ENFN->context_cutout_clear(ENDT, context);
 
-                  if (mask)
-                    {
-                       e->engine.func->context_clip_image_unset
-                         (e->engine.data.output, context);
-                    }
+                  if (mask) ENFN->context_clip_image_unset(ENDT, context);
                }
           }
      }
 
    eina_evlog("-render_objects", eo_e, 0.0, NULL);
    /* free obscuring objects list */
-   OBJS_ARRAY_CLEAN(&e->temporary_objects);
+   OBJS_ARRAY_CLEAN(&evas->temporary_objects);
 
 #ifdef REND_DBG
    if (top) RD(level, "   ---] SNAPSHOT [obj:%p sfc:%p]\n", top, surface);
@@ -2917,7 +2882,7 @@ evas_render_updates_internal(Evas *eo_e,
 {
    Evas_Object *eo_obj;
    Evas_Object_Protected_Data *obj;
-   Evas_Public_Data *e;
+   Evas_Public_Data *evas, *e;
    Eina_List *ll;
    Eina_Bool clean_them = EINA_FALSE;
    Eina_Bool rendering = EINA_FALSE;
@@ -2934,7 +2899,7 @@ evas_render_updates_internal(Evas *eo_e,
    return EINA_FALSE;
    MAGIC_CHECK_END();
 
-   e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
+   e = evas = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    if (!e->changed) return EINA_FALSE;
 
    if (e->rendering)
@@ -2994,8 +2959,7 @@ evas_render_updates_internal(Evas *eo_e,
      }
 
    /* phase 1.5. check if the video should be inlined or stay in their overlay 
*/
-   alpha = e->engine.func->canvas_alpha_get(e->engine.data.output,
-                                            e->engine.data.context);
+   alpha = ENFN->canvas_alpha_get(ENDT, ENCTX);
 
    EINA_LIST_FOREACH(e->video_objects, ll, eo_obj)
      {
@@ -3028,8 +2992,7 @@ evas_render_updates_internal(Evas *eo_e,
    eina_evlog("+render_phase3", eo_e, 0.0, NULL);
    EINA_LIST_FREE(e->damages, r)
      {
-        e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                r->x, r->y, r->w, r->h);
+        ENFN->output_redraws_rect_add(ENDT, r->x, r->y, r->w, r->h);
         eina_rectangle_free(r);
      }
    eina_evlog("-render_phase3", eo_e, 0.0, NULL);
@@ -3038,17 +3001,12 @@ evas_render_updates_internal(Evas *eo_e,
    eina_evlog("+render_phase4", eo_e, 0.0, NULL);
    if (e->viewport.changed)
      {
-        e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                0, 0,
-                                                e->output.w, e->output.h);
+        ENFN->output_redraws_rect_add(ENDT, 0, 0, e->output.w, e->output.h);
      }
    if (e->output.changed)
      {
-        e->engine.func->output_resize(e->engine.data.output,
-                                      e->output.w, e->output.h);
-        e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                0, 0,
-                                                e->output.w, e->output.h);
+        ENFN->output_resize(ENDT, e->output.w, e->output.h);
+        ENFN->output_redraws_rect_add(ENDT, 0, 0, e->output.w, e->output.h);
      }
    if ((e->output.w != e->viewport.w) || (e->output.h != e->viewport.h))
      {
@@ -3061,15 +3019,14 @@ evas_render_updates_internal(Evas *eo_e,
          * which covers the Whole viewport. This is because 'framespace' is
          * defined as "the space IN the viewport which is Occupied by the
          * window frame" */
-        e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                e->viewport.x, e->viewport.y,
-                                                e->viewport.w, e->viewport.h);
+        ENFN->output_redraws_rect_add(ENDT,
+                                      e->viewport.x, e->viewport.y,
+                                      e->viewport.w, e->viewport.h);
      }
 
    if (redraw_all)
      {
-        e->engine.func->output_redraws_rect_add(e->engine.data.output, 0, 0,
-                                                e->output.w, e->output.h);
+        ENFN->output_redraws_rect_add(ENDT, 0, 0, e->output.w, e->output.h);
      }
 
    // Add redraw for all snapshot object due to potential use of pixels outside
@@ -3086,11 +3043,9 @@ evas_render_updates_internal(Evas *eo_e,
              obj = (Evas_Object_Protected_Data 
*)eina_array_data_get(&e->snapshot_objects, i);
 
              if (evas_object_is_visible(obj->object, obj))
-               e->engine.func->output_redraws_rect_add(e->engine.data.output,
-                                                       obj->cur->geometry.x,
-                                                       obj->cur->geometry.y,
-                                                       obj->cur->geometry.w,
-                                                       obj->cur->geometry.h);
+               ENFN->output_redraws_rect_add(ENDT,
+                                             obj->cur->geometry.x, 
obj->cur->geometry.y,
+                                             obj->cur->geometry.w, 
obj->cur->geometry.h);
           }
      }
    eina_evlog("-render_phase4", eo_e, 0.0, NULL);
@@ -3153,8 +3108,8 @@ evas_render_updates_internal(Evas *eo_e,
         if (do_async) _evas_render_busy_begin();
         eina_evlog("+render_surface", eo_e, 0.0, NULL);
         while ((surface =
-                e->engine.func->output_redraws_next_update_get
-                (e->engine.data.output,
+                ENFN->output_redraws_next_update_get
+                (ENDT,
                  &ux, &uy, &uw, &uh,
                  &cx, &cy, &cw, &ch)))
           {
@@ -3189,7 +3144,7 @@ evas_render_updates_internal(Evas *eo_e,
                        pseudo_canvas = 
_evas_object_image_surface_get(obj->object, obj);
 
                        RD(0, "  SNAPSHOT [obj:%p sfc:%p ur:%d,%d %dx%d]\n", 
obj, pseudo_canvas, ur.x, ur.y, ur.w, ur.h);
-                       ctx = 
e->engine.func->context_new(e->engine.data.output);
+                       ctx = ENFN->context_new(ENDT);
                        clean_them |= evas_render_updates_internal_loop(eo_e, 
e, pseudo_canvas, ctx,
                                                                        obj,
                                                                        ur.x, 
ur.y, ur.w, ur.h,
@@ -3197,7 +3152,7 @@ evas_render_updates_internal(Evas *eo_e,
                                                                        fx, fy, 
alpha,
                                                                        
do_async,
                                                                        
&offset, 1);
-                       e->engine.func->context_free(e->engine.data.output, 
ctx);
+                       ENFN->context_free(ENDT, ctx);
 
                        // Force the object has changed for filter to take it 
into
                        // account. It won't be in the pending object array.
@@ -3221,7 +3176,7 @@ evas_render_updates_internal(Evas *eo_e,
                   eina_spinlock_release(&(e->render.lock));
                }
 
-             clean_them |= evas_render_updates_internal_loop(eo_e, e, surface, 
e->engine.data.context,
+             clean_them |= evas_render_updates_internal_loop(eo_e, e, surface, 
ENCTX,
                                                              NULL,
                                                              ux, uy, uw, uh,
                                                              cx, cy, cw, ch,
@@ -3232,10 +3187,7 @@ evas_render_updates_internal(Evas *eo_e,
              if (!do_async)
                {
                   eina_evlog("+render_push", eo_e, 0.0, NULL);
-                  
e->engine.func->output_redraws_next_update_push(e->engine.data.output,
-                                                                  surface,
-                                                                  ux, uy, uw, 
uh,
-                                                                  render_mode);
+                  ENFN->output_redraws_next_update_push(ENDT, surface, ux, uy, 
uw, uh, render_mode);
                   eina_evlog("-render_push", eo_e, 0.0, NULL);
                }
           }
@@ -3260,8 +3212,7 @@ evas_render_updates_internal(Evas *eo_e,
                        _evas_object_image_video_overlay_do(eo_obj);
                     }
                   _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL);
-                  e->engine.func->output_flush(e->engine.data.output,
-                                               EVAS_RENDER_MODE_SYNC);
+                  ENFN->output_flush(ENDT, EVAS_RENDER_MODE_SYNC);
                   _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL);
                   eina_evlog("-render_output_flush", eo_e, 0.0, NULL);
                }
@@ -3275,7 +3226,7 @@ evas_render_updates_internal(Evas *eo_e,
    if (!do_async && rendering)
      {
         /* clear redraws */
-        e->engine.func->output_redraws_clear(e->engine.data.output);
+        ENFN->output_redraws_clear(ENDT);
      }
    eina_evlog("-render_clear", eo_e, 0.0, NULL);
 
@@ -3448,24 +3399,26 @@ evas_render_wakeup(Evas *eo_e)
    Render_Updates *ru;
    Eina_Bool haveup = EINA_FALSE;
    Eina_List *ret_updates = NULL;
-   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
+   Evas_Public_Data *evas;
+
+   evas = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
 
    eina_evlog("+render_wakeup", eo_e, 0.0, NULL);
-   eina_spinlock_take(&(e->render.lock));
-   EINA_LIST_FREE(e->render.updates, ru)
+   eina_spinlock_take(&(evas->render.lock));
+   EINA_LIST_FREE(evas->render.updates, ru)
      {
         ret_updates = eina_list_append(ret_updates, ru->area);
         free(ru);
         haveup = EINA_TRUE;
      }
-   eina_spinlock_release(&(e->render.lock));
+   eina_spinlock_release(&(evas->render.lock));
 
    /* flush redraws */
    if (haveup)
      {
         Eina_List *ll;
         Evas_Object *eo_obj;
-        EINA_LIST_FOREACH(e->video_objects, ll, eo_obj)
+        EINA_LIST_FOREACH(evas->video_objects, ll, eo_obj)
           {
              _evas_object_image_video_overlay_do(eo_obj);
           }
@@ -3473,25 +3426,25 @@ evas_render_wakeup(Evas *eo_e)
      }
 
    /* clear redraws */
-   e->engine.func->output_redraws_clear(e->engine.data.output);
+   ENFN->output_redraws_clear(ENDT);
 
    /* unref queues */
-   eina_array_foreach(&e->scie_unref_queue, _drop_scie_ref, NULL);
-   eina_array_clean(&e->scie_unref_queue);
+   eina_array_foreach(&evas->scie_unref_queue, _drop_scie_ref, NULL);
+   eina_array_clean(&evas->scie_unref_queue);
    evas_common_rgba_image_scalecache_prune();
 
-   eina_array_foreach(&e->image_unref_queue, _drop_image_cache_ref, NULL);
-   eina_array_clean(&e->image_unref_queue);
+   eina_array_foreach(&evas->image_unref_queue, _drop_image_cache_ref, NULL);
+   eina_array_clean(&evas->image_unref_queue);
 
-   eina_array_foreach(&e->glyph_unref_queue, _drop_glyph_ref, NULL);
-   eina_array_clean(&e->glyph_unref_queue);
+   eina_array_foreach(&evas->glyph_unref_queue, _drop_glyph_ref, NULL);
+   eina_array_clean(&evas->glyph_unref_queue);
 
-   eina_array_foreach(&e->texts_unref_queue, _drop_texts_ref, NULL);
-   eina_array_clean(&e->texts_unref_queue);
+   eina_array_foreach(&evas->texts_unref_queue, _drop_texts_ref, NULL);
+   eina_array_clean(&evas->texts_unref_queue);
 
    /* post rendering */
-   _rendering_evases = eina_list_remove(_rendering_evases, e);
-   e->rendering = EINA_FALSE;
+   _rendering_evases = eina_list_remove(_rendering_evases, evas);
+   evas->rendering = EINA_FALSE;
 
    post.updated_area = ret_updates;
    _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_POST, &post);
@@ -3519,28 +3472,26 @@ evas_render_pipe_wakeup(void *data)
 {
    Eina_List *l;
    Render_Updates *ru;
-   Evas_Public_Data *e = data;
+   Evas_Public_Data *evas = data;
 
-   eina_evlog("+render_pipe_wakeup", e->evas, 0.0, NULL);
-   eina_spinlock_take(&(e->render.lock));
-   EINA_LIST_FOREACH(e->render.updates, l, ru)
-     {
-        eina_evlog("+render_push", e->evas, 0.0, NULL);
-        e->engine.func->output_redraws_next_update_push
-          (e->engine.data.output, ru->surface,
-           ru->area->x, ru->area->y, ru->area->w, ru->area->h,
-           EVAS_RENDER_MODE_ASYNC_END);
-        eina_evlog("-render_push", e->evas, 0.0, NULL);
+   eina_evlog("+render_pipe_wakeup", evas->evas, 0.0, NULL);
+   eina_spinlock_take(&(evas->render.lock));
+   EINA_LIST_FOREACH(evas->render.updates, l, ru)
+     {
+        eina_evlog("+render_push", evas->evas, 0.0, NULL);
+        ENFN->output_redraws_next_update_push
+              (ENDT, ru->surface, ru->area->x, ru->area->y, ru->area->w, 
ru->area->h,
+               EVAS_RENDER_MODE_ASYNC_END);
+        eina_evlog("-render_push", evas->evas, 0.0, NULL);
         //XXX: need a way to unref render output surfaces
         ru->surface = NULL;
      }
-   eina_evlog("+render_output_flush", e->evas, 0.0, NULL);
-   eina_spinlock_release(&(e->render.lock));
-   e->engine.func->output_flush(e->engine.data.output,
-                                EVAS_RENDER_MODE_ASYNC_END);
-   eina_evlog("-render_output_flush", e->evas, 0.0, NULL);
+   eina_evlog("+render_output_flush", evas->evas, 0.0, NULL);
+   eina_spinlock_release(&(evas->render.lock));
+   ENFN->output_flush(ENDT, EVAS_RENDER_MODE_ASYNC_END);
+   eina_evlog("-render_output_flush", evas->evas, 0.0, NULL);
    evas_async_events_put(data, 0, NULL, evas_render_async_wakeup);
-   eina_evlog("-render_pipe_wakeup", e->evas, 0.0, NULL);
+   eina_evlog("-render_pipe_wakeup", evas->evas, 0.0, NULL);
 }
 
 EAPI void
@@ -3671,32 +3622,31 @@ _evas_canvas_norender(Eo *eo_e, Evas_Public_Data *e)
 }
 
 EOLIAN void
-_evas_canvas_render_idle_flush(Eo *eo_e, Evas_Public_Data *e)
+_evas_canvas_render_idle_flush(Eo *eo_e, Evas_Public_Data *evas)
 {
    eina_evlog("+idle_flush", eo_e, 0.0, NULL);
-   if (e->render2) _evas_render2_idle_flush(eo_e, e);
+   if (evas->render2) _evas_render2_idle_flush(eo_e, evas);
    else
      {
-        evas_canvas_async_block(e);
+        evas_canvas_async_block(evas);
 
-        evas_render_rendering_wait(e);
+        evas_render_rendering_wait(evas);
 
         evas_fonts_zero_pressure(eo_e);
 
-        if ((e->engine.func) && (e->engine.func->output_idle_flush) &&
-            (e->engine.data.output))
-          e->engine.func->output_idle_flush(e->engine.data.output);
+        if (ENFN && ENFN->output_idle_flush && ENDT)
+          ENFN->output_idle_flush(ENDT);
 
-        eina_inarray_flush(&e->active_objects);
-        OBJS_ARRAY_FLUSH(&e->render_objects);
-        OBJS_ARRAY_FLUSH(&e->restack_objects);
-        OBJS_ARRAY_FLUSH(&e->delete_objects);
-        OBJS_ARRAY_FLUSH(&e->obscuring_objects);
-        OBJS_ARRAY_FLUSH(&e->temporary_objects);
-        eina_array_foreach(&e->clip_changes, _evas_clip_changes_free, NULL);
-        eina_array_clean(&e->clip_changes);
+        eina_inarray_flush(&evas->active_objects);
+        OBJS_ARRAY_FLUSH(&evas->render_objects);
+        OBJS_ARRAY_FLUSH(&evas->restack_objects);
+        OBJS_ARRAY_FLUSH(&evas->delete_objects);
+        OBJS_ARRAY_FLUSH(&evas->obscuring_objects);
+        OBJS_ARRAY_FLUSH(&evas->temporary_objects);
+        eina_array_foreach(&evas->clip_changes, _evas_clip_changes_free, NULL);
+        eina_array_clean(&evas->clip_changes);
 
-        e->invalidate = EINA_TRUE;
+        evas->invalidate = EINA_TRUE;
      }
    eina_evlog("-idle_flush", eo_e, 0.0, NULL);
 }
@@ -3720,8 +3670,8 @@ _evas_render_dump_map_surfaces(Evas_Object *eo_obj)
    Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, 
EFL_CANVAS_OBJECT_CLASS);
    if ((obj->map->cur.map) && obj->map->surface)
      {
-        obj->layer->evas->engine.func->image_free
-           (obj->layer->evas->engine.data.output, obj->map->surface);
+        Evas_Public_Data *evas = obj->layer->evas;
+        ENFN->image_free(ENDT, obj->map->surface);
         EINA_COW_WRITE_BEGIN(evas_object_map_cow, obj->map, 
Evas_Object_Map_Data, map_write)
           map_write->surface = NULL;
         EINA_COW_WRITE_END(evas_object_map_cow, obj->map, map_write);
@@ -3737,19 +3687,19 @@ _evas_render_dump_map_surfaces(Evas_Object *eo_obj)
 }
 
 EOLIAN void
-_evas_canvas_render_dump(Eo *eo_e, Evas_Public_Data *e)
+_evas_canvas_render_dump(Eo *eo_e, Evas_Public_Data *evas)
 {
-   if (e->render2) _evas_render2_dump(eo_e, e);
+   if (evas->render2) _evas_render2_dump(eo_e, evas);
    else
      {
         Evas_Layer *lay;
 
-        evas_canvas_async_block(e);
+        evas_canvas_async_block(evas);
 
         evas_all_sync();
         evas_cache_async_freeze();
 
-        EINA_INLIST_FOREACH(e->layers, lay)
+        EINA_INLIST_FOREACH(evas->layers, lay)
           {
              Evas_Object_Protected_Data *obj;
 
@@ -3760,7 +3710,7 @@ _evas_canvas_render_dump(Eo *eo_e, Evas_Public_Data *e)
                     {
                        EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, 
Evas_Object_Proxy_Data, proxy_write)
                          {
-                            e->engine.func->image_free(e->engine.data.output, 
proxy_write->surface);
+                            ENFN->image_free(ENDT, proxy_write->surface);
                             proxy_write->surface = NULL;
                          }
                        EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, 
proxy_write);
@@ -3769,7 +3719,7 @@ _evas_canvas_render_dump(Eo *eo_e, Evas_Public_Data *e)
                     {
                        EINA_COW_WRITE_BEGIN(evas_object_mask_cow, obj->mask, 
Evas_Object_Mask_Data, mdata)
                          {
-                            e->engine.func->image_free(e->engine.data.output, 
mdata->surface);
+                            ENFN->image_free(ENDT, mdata->surface);
                             mdata->surface = NULL;
                          }
                        EINA_COW_WRITE_END(evas_object_mask_cow, obj->mask, 
mdata);
@@ -3781,9 +3731,8 @@ _evas_canvas_render_dump(Eo *eo_e, Evas_Public_Data *e)
              lay->walking_objects--;
              _evas_layer_flush_removes(lay);
           }
-        if ((e->engine.func) && (e->engine.func->output_dump) &&
-            (e->engine.data.output))
-          e->engine.func->output_dump(e->engine.data.output);
+        if (ENFN && ENFN->output_dump && ENDT)
+          ENFN->output_dump(ENDT);
 
 #define GC_ALL(Cow) \
   if (Cow) while (eina_cow_gc(Cow))
@@ -3795,20 +3744,19 @@ _evas_canvas_render_dump(Eo *eo_e, Evas_Public_Data *e)
 
         evas_fonts_zero_pressure(eo_e);
 
-        if ((e->engine.func) && (e->engine.func->output_idle_flush) &&
-            (e->engine.data.output))
-          e->engine.func->output_idle_flush(e->engine.data.output);
+        if (ENFN && ENFN->output_idle_flush && ENDT)
+          ENFN->output_idle_flush(ENDT);
 
-        eina_inarray_flush(&e->active_objects);
-        OBJS_ARRAY_FLUSH(&e->render_objects);
-        OBJS_ARRAY_FLUSH(&e->restack_objects);
-        OBJS_ARRAY_FLUSH(&e->delete_objects);
-        OBJS_ARRAY_FLUSH(&e->obscuring_objects);
-        OBJS_ARRAY_FLUSH(&e->temporary_objects);
-        eina_array_foreach(&e->clip_changes, _evas_clip_changes_free, NULL);
-        eina_array_clean(&e->clip_changes);
+        eina_inarray_flush(&evas->active_objects);
+        OBJS_ARRAY_FLUSH(&evas->render_objects);
+        OBJS_ARRAY_FLUSH(&evas->restack_objects);
+        OBJS_ARRAY_FLUSH(&evas->delete_objects);
+        OBJS_ARRAY_FLUSH(&evas->obscuring_objects);
+        OBJS_ARRAY_FLUSH(&evas->temporary_objects);
+        eina_array_foreach(&evas->clip_changes, _evas_clip_changes_free, NULL);
+        eina_array_clean(&evas->clip_changes);
 
-        e->invalidate = EINA_TRUE;
+        evas->invalidate = EINA_TRUE;
 
         evas_cache_async_thaw();
      }

-- 


Reply via email to