Hmmm, timing ? Suspect....
small/large...all the same.. dH [EMAIL PROTECTED] wrote: > Author: raster > Date: 2008-09-09 23:39:57 -0700 (Tue, 09 Sep 2008) > New Revision: 35922 > > Modified: > trunk/edje/src/lib/edje_calc.c trunk/edje/src/lib/edje_private.h > trunk/edje/src/lib/edje_util.c > Log: > > fix scaling on edje_scale - works with smnall sizes now too. problem is > really i was chasing a freeze/thaw problem. something is up. > > > > Modified: trunk/edje/src/lib/edje_calc.c > =================================================================== > --- trunk/edje/src/lib/edje_calc.c 2008-09-10 05:47:13 UTC (rev 35921) > +++ trunk/edje/src/lib/edje_calc.c 2008-09-10 06:39:57 UTC (rev 35922) > @@ -138,9 +138,13 @@ > { > int i; > > - if (!ed->dirty) return; > - if (ed->freeze) > + if (!ed->dirty) > { > + return; > + } > + if ((ed->freeze > 0) || (_edje_freeze_val > 0)) > + { > + _edje_freeze_calc_count++; > ed->recalc = 1; > if (!ed->calc_only) return; > } > @@ -257,45 +261,79 @@ > // if (flags & FLAG_X) > { > minw = desc->min.w; > - if (ep->swallow_params.min.w > desc->min.w) minw = > ep->swallow_params.min.w; > + if (ep->part->scale) minw = (int)(((double)minw) * _edje_scale); > + if (ep->swallow_params.min.w > desc->min.w) > + minw = ep->swallow_params.min.w; > > /* XXX TODO: remove need of EDJE_INF_MAX_W, see edje_util.c */ > if ((ep->swallow_params.max.w <= 0) || > (ep->swallow_params.max.w == EDJE_INF_MAX_W)) > - maxw = desc->max.w; > + { > + maxw = desc->max.w; > + if (maxw > 0) > + { > + if (ep->part->scale) maxw = (int)(((double)maxw) * > _edje_scale); > + if (maxw < 1) maxw = 1; > + } > + } > else > { > if (desc->max.w <= 0) > maxw = ep->swallow_params.max.w; > else > - maxw = MIN(ep->swallow_params.max.w, desc->max.w); > + { > + maxw = desc->max.w; > + if (maxw > 0) > + { > + if (ep->part->scale) maxw = (int)(((double)maxw) * > _edje_scale); > + if (maxw < 1) maxw = 1; > + } > + if (ep->swallow_params.max.w < maxw) > + maxw = ep->swallow_params.max.w; > + } > } > - if (ep->part->scale) > + if (maxw >= 0) > { > - minw *= _edje_scale; > - maxw *= _edje_scale; > + if (maxw < minw) maxw = minw; > } > } > // if (flags & FLAG_Y) > { > minh = desc->min.h; > - if (ep->swallow_params.min.h > desc->min.h) minh = > ep->swallow_params.min.h; > + if (ep->part->scale) minh = (int)(((double)minh) * _edje_scale); > + if (ep->swallow_params.min.h > desc->min.h) > + minh = ep->swallow_params.min.h; > > /* XXX TODO: remove need of EDJE_INF_MAX_H, see edje_util.c */ > if ((ep->swallow_params.max.h <= 0) || > (ep->swallow_params.max.h == EDJE_INF_MAX_H)) > - maxh = desc->max.h; > + { > + maxh = desc->max.h; > + if (maxh > 0) > + { > + if (ep->part->scale) maxh = (int)(((double)maxh) * > _edje_scale); > + if (maxh < 1) maxh = 1; > + } > + } > else > { > if (desc->max.h <= 0) > maxh = ep->swallow_params.max.h; > else > - maxh = MIN(ep->swallow_params.max.h, desc->max.h); > + { > + maxh = desc->max.h; > + if (maxh > 0) > + { > + if (ep->part->scale) maxh = (int)(((double)maxh) * > _edje_scale); > + if (maxh < 1) maxh = 1; > + } > + if (ep->swallow_params.max.h < maxh) > + maxh = ep->swallow_params.max.h; > + } > } > - if (ep->part->scale) > + if (maxh >= 0) > { > - minh *= _edje_scale; > - maxh *= _edje_scale; > + if (maxh < minh) maxh = minh; > } > } > /* relative coords of top left & bottom right */ > > Modified: trunk/edje/src/lib/edje_private.h > =================================================================== > --- trunk/edje/src/lib/edje_private.h 2008-09-10 05:47:13 UTC (rev 35921) > +++ trunk/edje/src/lib/edje_private.h 2008-09-10 06:39:57 UTC (rev 35922) > @@ -1004,6 +1004,8 @@ > > extern char *_edje_fontset_append; > extern double _edje_scale; > +extern int _edje_freeze_val; > +extern int _edje_freeze_calc_count; > > 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); > > Modified: trunk/edje/src/lib/edje_util.c > =================================================================== > --- trunk/edje/src/lib/edje_util.c 2008-09-10 05:47:13 UTC (rev 35921) > +++ trunk/edje/src/lib/edje_util.c 2008-09-10 06:39:57 UTC (rev 35922) > @@ -12,6 +12,8 @@ > > char *_edje_fontset_append = NULL; > double _edje_scale = 1.0; > +int _edje_freeze_val = 0; > +int _edje_freeze_calc_count = 0; > > typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data; > > @@ -29,6 +31,8 @@ > > /* FIXDOC: These all need to be looked over, Verified/Expanded upon. I just > got lazy and stopped putting FIXDOC next to each function in this file. */ > > +//#define FASTFREEZE 1 > + > /** Freeze all Edje objects in the current process. > * > * See edje_object_freeze() for more. > @@ -36,11 +40,17 @@ > EAPI void > edje_freeze(void) > { > +#ifdef FASTFREEZE > + _edje_freeze_val++; > + printf("fr ++ ->%i\n", _edje_freeze_val); > +#else > +// FIXME: could just have a global freeze instead of per object > +// above i tried.. but this broke some things. notable e17's menus. why? > Evas_List *l; > > - // FIXME: could just have a global freeze instead of per object > for (l = _edje_edjes; l; l = l->next) > edje_object_freeze((Evas_Object *)(l->data)); > +#endif > } > > /** Thaw all Edje objects in the current process. > @@ -50,11 +60,39 @@ > EAPI void > 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)) > + { > + Evas_List *l; > + > + _edje_freeze_calc_count = 0; > + for (l = _edje_edjes; l; l = l->next) > + { > + 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); > + } > + } > + } > +#else > +// FIXME: could just have a global freeze instead of per object > +// comment as above.. why? > Evas_List *l; > > - // FIXME: could just have a global freeze instead of per object > for (l = _edje_edjes; l; l = l->next) > edje_object_thaw((Evas_Object *)(l->data)); > +#endif > } > > /* FIXDOC: Expand */ > @@ -1138,15 +1176,22 @@ > edje_object_calc_force(Evas_Object *obj) > { > Edje *ed; > - int pf; > + int pf, pf2; > > ed = _edje_fetch(obj); > if (!ed) return; > ed->dirty = 1; > + > + pf2 = _edje_freeze_val; > pf = ed->freeze; > + > + _edje_freeze_val = 0; > ed->freeze = 0; > + > _edje_recalc(ed); > + > ed->freeze = pf; > + _edje_freeze_val = pf2; > } > > /** Calculate minimum size > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > enlightenment-svn mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel