cedric pushed a commit to branch master.

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

commit b95165201c89cdc304c0dcfaff9b0eaa9ad5e562
Author: Cedric BAIL <[email protected]>
Date:   Mon Jul 7 13:43:42 2014 +0200

    edje: factorize call to eo_do to reduce eo_do_start cost.
---
 src/lib/edje/edje_text.c | 110 ++++++++++++++++++++++++++++-------------------
 src/lib/edje/edje_util.c |   2 +-
 2 files changed, 67 insertions(+), 45 deletions(-)

diff --git a/src/lib/edje/edje_text.c b/src/lib/edje/edje_text.c
index d791c8f..7d53301 100644
--- a/src/lib/edje/edje_text.c
+++ b/src/lib/edje/edje_text.c
@@ -18,7 +18,7 @@ static inline void
 part_get_geometry(Edje_Real_Part *rp, Evas_Coord *w, Evas_Coord *h)
 {
    if (!rp->part->use_alternate_font_metrics)
-     evas_object_geometry_get(rp->object, NULL, NULL, w, h);
+     eo_do(rp->object, evas_obj_size_get(w, h));
    else
      {
         if (w) *w = evas_object_text_horiz_advance_get(rp->object);
@@ -286,24 +286,31 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
    ep->typedata.text->cache.in_size = size;
    if (chosen_desc->text.fit_x && (ep->typedata.text->cache.in_str && 
eina_stringshare_strlen(ep->typedata.text->cache.in_str) > 0))
      {
-        if (inlined_font) evas_object_text_font_source_set(ep->object, 
ed->path);
-        else evas_object_text_font_source_set(ep->object, NULL);
-
-        if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
         eo_do(ep->object,
-              evas_obj_text_font_set(font, size),
+
+              if (inlined_font) evas_obj_text_font_source_set(ed->path);
+              else evas_obj_text_font_source_set(NULL);
+
+              if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
+
+              evas_obj_text_font_set(font, size);
               evas_obj_text_set(text));
+
         part_get_geometry(ep, &tw, &th);
         /* Find the wanted font size */
         if ((tw != sw) && (size > 0) && (tw != 0))
           {
              size = (size * sw) / tw;
 
-             if (inlined_font) evas_object_text_font_source_set(ep->object, 
ed->path);
-             else evas_object_text_font_source_set(ep->object, NULL);
+             eo_do(ep->object,
+
+                   if (inlined_font) evas_obj_text_font_source_set(ed->path);
+                   else evas_obj_text_font_source_set(NULL);
+
+                   if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
+
+                   evas_obj_text_font_set(font, size));
 
-             if (ep->part->scale) evas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
-             evas_object_text_font_set(ep->object, font, size);
              part_get_geometry(ep, &tw, &th);
           }
 
@@ -319,12 +326,14 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
          */
         if (!chosen_desc->text.fit_x) size = sh;
 
-        if (inlined_font) evas_object_text_font_source_set(ep->object, 
ed->path);
-        else evas_object_text_font_source_set(ep->object, NULL);
-
-        if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
         eo_do(ep->object,
-              evas_obj_text_font_set(font, size),
+
+              if (inlined_font) evas_obj_text_font_source_set(ed->path);
+              else evas_obj_text_font_source_set(NULL);
+
+              if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
+
+              evas_obj_text_font_set(font, size);
               evas_obj_text_set(text));
         part_get_geometry(ep, &tw, &th);
 
@@ -341,11 +350,15 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
                {
                   size += dif;
                   if (size <= 0) break;
-                  if (inlined_font) 
evas_object_text_font_source_set(ep->object, ed->path);
-                  else evas_object_text_font_source_set(ep->object, NULL);
 
-                  if (ep->part->scale) evas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
-                  evas_object_text_font_set(ep->object, font, size);
+                  eo_do(ep->object,
+
+                        if (inlined_font) 
evas_obj_text_font_source_set(ed->path);
+                        else evas_obj_text_font_source_set(NULL);
+
+                        if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
+                        evas_obj_text_font_set(font, size));
+
                   part_get_geometry(ep, &tw, &th);
                   if ((size > 0) && (th == 0)) break;
                }
@@ -355,8 +368,10 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
           {
              int current;
 
-             if (ep->part->scale) evas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
-             evas_object_text_font_set(ep->object, font, 10);
+             eo_do(ep->object,
+                   if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
+                   evas_obj_text_font_set(font, 10));
+
              part_get_geometry(ep, &tw, &th);
 
              if (th == sh)
@@ -375,8 +390,10 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
                     {
                        current = (top + bottom) / 2;
 
-                       if (ep->part->scale) evas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
-                       evas_object_text_font_set(ep->object, font, current);
+                       eo_do(ep->object,
+                             if (ep->part->scale) 
evas_obj_scale_set(TO_DOUBLE(sc));
+                             evas_obj_text_font_set(font, current));
+
                        part_get_geometry(ep, &tw, &th);
 
                        if      (th < sh) bottom = current + 1;
@@ -389,8 +406,10 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
                {
                   current++;
 
-                  if (ep->part->scale) evas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
-                  evas_object_text_font_set(ep->object, font, current);
+                  eo_do(ep->object,
+                        if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
+                        evas_obj_text_font_set(font, current));
+
                   part_get_geometry(ep, &tw, &th);
                } while (th <= sh);
              size = current - 1;
@@ -409,8 +428,9 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
    /* Handle ellipsis */
    if (!chosen_desc->text.min_x)
      {
-        if (inlined_font) evas_object_text_font_source_set(ep->object, 
ed->path);
-        else evas_object_text_font_source_set(ep->object, NULL);
+        eo_do(ep->object,
+              if (inlined_font) evas_obj_text_font_source_set(ed->path);
+              else evas_obj_text_font_source_set(NULL));
 
         text = _edje_text_fit_x(ed, ep, params,
                                 text, font, size,
@@ -451,24 +471,27 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
    ep->typedata.text->cache.fit_y = chosen_desc->text.fit_y;
 arrange_text:
 
-   if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
-   else evas_object_text_font_source_set(ep->object, NULL);
-
-   if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
    eo_do(ep->object,
+         if (inlined_font) evas_obj_text_font_source_set(ed->path);
+         else evas_obj_text_font_source_set(NULL);
+
+         if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
+
          evas_obj_text_font_set(font, size),
          evas_obj_text_set(text));
    part_get_geometry(ep, &tw, &th);
 
    /* filters */
-   EINA_LIST_FOREACH(prev_sources, li, source_name)
-     eo_do(ep->object, evas_obj_text_filter_source_set(source_name, NULL));
-   EINA_LIST_FOREACH(filter_sources, li, source_name)
-     {
-        Edje_Real_Part *rp = _edje_real_part_get(ed, source_name);
-        eo_do(ep->object, evas_obj_text_filter_source_set(source_name, rp ? 
rp->object : NULL));
-     }
-   eo_do(ep->object, evas_obj_text_filter_program_set(filter));
+   eo_do(ep->object,
+         EINA_LIST_FOREACH(prev_sources, li, source_name)
+           evas_obj_text_filter_source_set(source_name, NULL);
+
+         EINA_LIST_FOREACH(filter_sources, li, source_name)
+           {
+              Edje_Real_Part *rp = _edje_real_part_get(ed, source_name);
+              evas_obj_text_filter_source_set(source_name, rp ? rp->object : 
NULL);
+           };
+         evas_obj_text_filter_program_set(filter));
 
    /* Handle alignment */
      {
@@ -495,12 +518,11 @@ arrange_text:
 
    if (!calc_only)
      {
-       evas_object_move(ep->object,
-                       ed->x + TO_INT(params->eval.x) + 
ep->typedata.text->offset.x,
-                       ed->y + TO_INT(params->eval.y) + 
ep->typedata.text->offset.y);
+        eo_do(ep->object,
+              evas_obj_position_set(ed->x + TO_INT(params->eval.x) + 
ep->typedata.text->offset.x,
+                               ed->y + TO_INT(params->eval.y) + 
ep->typedata.text->offset.y);
 
-       if (params->visible) evas_object_show(ep->object);
-       else evas_object_hide(ep->object);
+              evas_obj_visibility_set(params->visible));
      }
 
 
diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c
index fe78a42..795b396 100644
--- a/src/lib/edje/edje_util.c
+++ b/src/lib/edje/edje_util.c
@@ -4653,7 +4653,7 @@ _edje_real_part_recursive_get_helper(Edje **ed, char 
**path)
      }
 }
 
-/* Private Routines */
+/* Private Routines - do not call eo_do inside this one */
 Edje_Real_Part *
 _edje_real_part_get(const Edje *ed, const char *part)
 {

-- 


Reply via email to