Revert edje calculate optimizations.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 9 Sep 2008 23:41:42 +0000 (23:41 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 9 Sep 2008 23:41:42 +0000 (23:41 +0000)
Edje is tricky, it's event processing is too weird and Cedric's
changes to make it work are not working as expected. Edje freezes
itself while processing signals, but in mouse down cb it forces
recalculate, which seems was previously ignored, but now they are not.

We should look at how to fix this and then re-apply this patch.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@35908 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/edje_calc.c
src/lib/edje_private.h
src/lib/edje_smart.c
src/lib/edje_util.c

index c946eb3..4272f36 100644 (file)
@@ -136,22 +136,13 @@ _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, doubl
 void
 _edje_recalc(Edje *ed)
 {
-   if (ed->postponed) return ;
-   evas_object_smart_changed(ed->obj);
-   ed->postponed = 1;
-}
-
-void
-_edje_recalc_do(Edje *ed)
-{
    int i;
 
    if (!ed->dirty) return;
    if (ed->freeze)
      {
        ed->recalc = 1;
-       if (!ed->calc_only &&
-           !ed->postponed) return;
+       if (!ed->calc_only) return;
      }
    for (i = 0; i < ed->table_parts_size; i++)
      {
@@ -170,7 +161,6 @@ _edje_recalc_do(Edje *ed)
          _edje_part_recalc(ed, ep, (~ep->calculated) & FLAG_XY);
      }
    ed->dirty = 0;
-   ed->postponed = 0;
    if (!ed->calc_only) ed->recalc = 0;
 }
 
index 79d8149..7db5d37 100644 (file)
@@ -682,7 +682,6 @@ struct _Edje
    unsigned short        walking_actions : 1;
    unsigned short        block_break : 1;
    unsigned short        delete_me : 1;
-   unsigned short        postponed : 1;
 };
 
 struct _Edje_Real_Part
@@ -1010,7 +1009,6 @@ void  _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, double pos);
 Edje_Part_Description *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name, double val);
 void  _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char  *d1, double v1, const char *d2, double v2);
 void  _edje_recalc(Edje *ed);
-void  _edje_recalc_do(Edje *ed);
 int   _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, double *x, double *y);
 void  _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, double x, double y);
 
index a3b23ab..5ae7c57 100644 (file)
@@ -13,7 +13,6 @@ static void _edje_smart_hide(Evas_Object * obj);
 static void _edje_smart_color_set(Evas_Object * obj, int r, int g, int b, int a);
 static void _edje_smart_clip_set(Evas_Object * obj, Evas_Object * clip);
 static void _edje_smart_clip_unset(Evas_Object * obj);
-static void _edje_smart_calculate(Evas_Object * obj);
 
 static Evas_Smart *_edje_smart = NULL;
 
@@ -46,7 +45,7 @@ edje_object_add(Evas *evas)
               _edje_smart_color_set,
               _edje_smart_clip_set,
               _edje_smart_clip_unset,
-              _edje_smart_calculate,
+              NULL,
               NULL
          };
        _edje_smart = evas_smart_class_new(&sc);
@@ -239,13 +238,3 @@ _edje_smart_clip_unset(Evas_Object * obj)
    evas_object_clip_unset(ed->clipper);
 //   _edje_emit(ed, "clip_unset", NULL);
 }
-
-static void
-_edje_smart_calculate(Evas_Object *obj)
-{
-   Edje *ed;
-
-   ed = evas_object_smart_data_get(obj);
-   if (!ed) return;
-   _edje_recalc_do(ed);
-}
index e5ee431..bb45a0b 100644 (file)
@@ -735,10 +735,6 @@ edje_object_part_object_get(const Evas_Object *obj, const char *part)
 
    ed = _edje_fetch(obj);
    if ((!ed) || (!part)) return NULL;
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp) return NULL;
    return rp->object;
@@ -772,10 +768,6 @@ edje_object_part_geometry_get(const Evas_Object *obj, const char *part, Evas_Coo
        if (h) *h = 0;
        return;
      }
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp)
      {
@@ -856,10 +848,6 @@ edje_object_part_text_get(const Evas_Object *obj, const char *part)
 
    ed = _edje_fetch(obj);
    if ((!ed) || (!part)) return NULL;
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp) return NULL;
    if (rp->part->type == EDJE_PART_TYPE_TEXT)
@@ -887,10 +875,6 @@ edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_sw
 
    ed = _edje_fetch(obj);
    if ((!ed) || (!part)) return;
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp) return;
    if (rp->part->type != EDJE_PART_TYPE_SWALLOW) return;
@@ -1057,7 +1041,7 @@ edje_object_part_unswallow(Evas_Object *obj, Evas_Object *obj_swallow)
        rp->swallow_params.max.w = 0;
        rp->swallow_params.max.h = 0;
        rp->edje->dirty = 1;
-       _edje_recalc_do(rp->edje);
+       _edje_recalc(rp->edje);
        return;
      }
 }
@@ -1075,10 +1059,6 @@ edje_object_part_swallow_get(const Evas_Object *obj, const char *part)
 
    ed = _edje_fetch(obj);
    if ((!ed) || (!part)) return NULL;
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp) return NULL;
    return rp->swallowed_object;
@@ -1128,10 +1108,6 @@ edje_object_size_max_get(const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *m
        if (maxh) *maxh = 0;
        return;
      }
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    if (ed->collection->prop.max.w == 0)
      {
        /* XXX TODO: convert maxw to 0, fix things that break. */
@@ -1169,7 +1145,7 @@ edje_object_calc_force(Evas_Object *obj)
    ed->dirty = 1;
    pf = ed->freeze;
    ed->freeze = 0;
-   _edje_recalc_do(ed);
+   _edje_recalc(ed);
    ed->freeze = pf;
 }
 
@@ -1231,7 +1207,7 @@ edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Co
 
        ok = 0;
        ed->dirty = 1;
-       _edje_recalc_do(ed);
+       _edje_recalc(ed);
        if (reset_maxwh)
          {
             maxw = 0;
@@ -1335,10 +1311,6 @@ edje_object_part_state_get(const Evas_Object *obj, const char *part, double *val
        if (val_ret) *val_ret = 0;
        return "";
      }
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp)
      {
@@ -1383,10 +1355,6 @@ edje_object_part_drag_dir_get(const Evas_Object *obj, const char *part)
 
    ed = _edje_fetch(obj);
    if ((!ed) || (!part)) return EDJE_DRAG_DIR_NONE;
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp) return EDJE_DRAG_DIR_NONE;
    if ((rp->part->dragable.x) && (rp->part->dragable.y)) return EDJE_DRAG_DIR_XY;
@@ -1451,10 +1419,6 @@ edje_object_part_drag_value_get(const Evas_Object *obj, const char *part, double
        if (dy) *dy = 0;
        return;
      }
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp)
      {
@@ -1520,10 +1484,6 @@ edje_object_part_drag_size_get(const Evas_Object *obj, const char *part, double
        if (dh) *dh = 0;
        return;
      }
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp)
      {
@@ -1582,10 +1542,6 @@ edje_object_part_drag_step_get(const Evas_Object *obj, const char *part, double
        if (dy) *dy = 0;
        return;
      }
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp)
      {
@@ -1644,10 +1600,6 @@ edje_object_part_drag_page_get(const Evas_Object *obj, const char *part, double
        if (dy) *dy = 0;
        return;
      }
-
-   /* Need to recalc before providing the object. */
-   _edje_recalc_do(ed);
-
    rp = _edje_real_part_recursive_get(ed, (char *)part);
    if (!rp)
      {
@@ -2165,5 +2117,5 @@ _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow)
      evas_object_precise_is_inside_set(obj_swallow, 1);
 
    rp->edje->dirty = 1;
-   _edje_recalc_do(rp->edje);
+   _edje_recalc(rp->edje);
 }