Revert edje calculate optimizations.

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.



SVN revision: 35908
This commit is contained in:
Gustavo Sverzut Barbieri 2008-09-09 23:41:42 +00:00
parent c1c8a18b54
commit 0a75de51f0
4 changed files with 6 additions and 77 deletions

View File

@ -135,14 +135,6 @@ _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;
@ -150,8 +142,7 @@ _edje_recalc_do(Edje *ed)
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;
}

View 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);

View 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);
}

View 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);
}