From: <enl...@li...> - 2003-07-16 05:15:45
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: Edje.h edje_load.c edje_private.h edje_smart.c edje_text.c edje_util.c Log Message: global freeze/thaw. much more optimial for COMPLEX edjed that take a fair bit of grunt to re-calculate. avoid caclulations until idle time by freezing and thawing appropriately pre/post render =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- Edje.h 15 Jul 2003 08:26:06 -0000 1.12 +++ Edje.h 16 Jul 2003 05:15:14 -0000 1.13 @@ -10,6 +10,8 @@ void edje_init (void); void edje_frametime_set (double t); double edje_frametime_get (void); + void edje_freeze (void); + void edje_thaw (void); Evas_Object *edje_object_add (Evas *evas); void edje_object_file_set (Evas_Object *o, const char *file, const char *part); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_load.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- edje_load.c 15 Jul 2003 08:26:06 -0000 1.10 +++ edje_load.c 16 Jul 2003 05:15:15 -0000 1.11 @@ -32,7 +32,6 @@ Edje_Real_Part *rp; char buf[256]; - printf("PART!\n"); ep = l->data; rp = calloc(1, sizeof(Edje_Real_Part)); if (!rp) return; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- edje_private.h 15 Jul 2003 08:26:06 -0000 1.30 +++ edje_private.h 16 Jul 2003 05:15:15 -0000 1.31 @@ -533,5 +533,6 @@ extern Ecore_Timer *_edje_timer; extern Evas_List *_edje_animators; extern Ejde_Text_Style _edje_text_styles[EDJE_TEXT_EFFECT_LAST]; +extern Evas_List *_edje_edjes; #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_smart.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- edje_smart.c 13 Jul 2003 06:19:09 -0000 1.5 +++ edje_smart.c 16 Jul 2003 05:15:15 -0000 1.6 @@ -18,6 +18,8 @@ static Evas_Smart *_edje_smart = NULL; +Evas_List *_edje_edjes = NULL; + /* API Routines */ Evas_Object * edje_object_add(Evas *evas) @@ -56,6 +58,7 @@ evas_object_smart_data_set(obj, ed); ed->obj = obj; evas_object_smart_member_add(ed->clipper, ed->obj); + _edje_edjes = evas_list_append(_edje_edjes, obj); } static void @@ -67,6 +70,7 @@ if (!ed) return; _edje_clean_objects(ed); _edje_unref(ed); + _edje_edjes = evas_list_remove(_edje_edjes, obj); } static void =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_text.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- edje_text.c 15 Jul 2003 02:21:58 -0000 1.3 +++ edje_text.c 16 Jul 2003 05:15:15 -0000 1.4 @@ -339,7 +339,7 @@ dif = (th - sh) / 4; if (dif < 1) dif = 1; - while ((th < sh) && (sw >= 0.0)) + while ((th > sh) && (sw >= 0.0)) { size -= dif; evas_object_text_font_set(ep->object, font, size); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_util.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- edje_util.c 15 Jul 2003 08:26:06 -0000 1.10 +++ edje_util.c 16 Jul 2003 05:15:15 -0000 1.11 @@ -1,6 +1,24 @@ #include "Edje.h" #include "edje_private.h" +void +edje_freeze(void) +{ + Evas_List *l; + + for (l = _edje_edjes; l; l = l->next) + edje_object_freeze((Evas_Object *)(l->data)); +} + +void +edje_thaw(void) +{ + Evas_List *l; + + for (l = _edje_edjes; l; l = l->next) + edje_object_thaw((Evas_Object *)(l->data)); +} + int edje_object_freeze(Evas_Object *obj) { @@ -424,7 +442,8 @@ _edje_thaw(Edje *ed) { ed->freeze--; - if ((ed->freeze <= 0) && (ed->recalc)) + if (ed->freeze < 0) ed->freeze = 0; + if ((ed->freeze == 0) && (ed->recalc)) _edje_recalc(ed); return ed->freeze; } |