From aaa724d23c374d66ddf39f99a7c83106e8dbe1d6 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 10 Sep 2008 07:17:24 +0000 Subject: [PATCH] ok still doesnt work - FASTFREEZE shoudl work.. but dont. SVN revision: 35925 --- legacy/edje/src/lib/edje_calc.c | 7 +++++-- legacy/edje/src/lib/edje_util.c | 36 +++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index d12d722627..4e3ba520a6 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -144,9 +144,12 @@ _edje_recalc(Edje *ed) } if ((ed->freeze > 0) || (_edje_freeze_val > 0)) { - _edje_freeze_calc_count++; ed->recalc = 1; - if (!ed->calc_only) return; + if (!ed->calc_only) + { + if (_edje_freeze_val > 0) _edje_freeze_calc_count++; + return; + } } for (i = 0; i < ed->table_parts_size; i++) { diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index beb74b35d4..ec4164c7e4 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -53,6 +53,29 @@ edje_freeze(void) #endif } +#ifdef FASTFREEZE +static void +_edje_thaw_edje(Edje *ed) +{ + int i; + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + { + Edje *ed2; + + ed2 = _edje_fetch(rp->swallowed_object); + if (ed2) _edje_thaw_edje(ed2); + } + } + if ((ed->recalc) && (ed->freeze <= 0)) _edje_recalc(ed); +} +#endif + /** Thaw all Edje objects in the current process. * * See edje_object_thaw() for more. @@ -63,7 +86,7 @@ edje_thaw(void) #ifdef FASTFREEZE _edje_freeze_val--; printf("fr -- ->%i\n", _edje_freeze_val); - if ((_edje_freeze_val == 0) && (_edje_freeze_calc_count > 0)) + if ((_edje_freeze_val <= 0) && (_edje_freeze_calc_count > 0)) { Evas_List *l; @@ -73,16 +96,7 @@ edje_thaw(void) Edje *ed; ed = _edje_fetch(l->data); - if (ed->recalc) - { - if (ed->freeze == 0) - { - printf(" CALC %p\n", l->data); - _edje_recalc(ed); - } - else - printf(" !CALC %p\n", l->data); - } + if (ed) _edje_thaw_edje(ed); } } #else