EOLIAN void
_edje_object_size_min_restricted_calc(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh)
{
- const int MIN_LIMIT = 4000;
+ const int CALC_COUNT_LIMIT = 255;
Evas_Coord orig_w, orig_h; //original edje size
int max_over_w, max_over_h; //maximum over-calculated size.
+ int calc_count = 0;
Eina_Bool repeat_w, repeat_h;
Eina_Bool reset_max = EINA_TRUE;
Edje_Real_Part *pep = NULL;
{
unsigned int i;
+ calc_count++;
+
repeat_w = EINA_FALSE;
repeat_h = EINA_FALSE;
ed->dirty = EINA_TRUE;
if (ed->h < restrictedh) ed->h = restrictedh;
}
- if ((ed->w > MIN_LIMIT) || (ed->h > MIN_LIMIT))
+ if (reset_max && (calc_count > CALC_COUNT_LIMIT))
{
/* Only print it if we have a non-fixed textblock.
* We should possibly avoid all of this if in this case, but in
ERR("file %s, group %s has a non-fixed part '%s'. Adding 'fixed: 1 1;' to source EDC may help. Continuing discarding faulty part.",
ed->path, ed->group, pep->part->name);
else
- ERR("file %s, group %s overflowed %dx%d with minimum size of %dx%d. Continuing discarding faulty parts.",
- ed->path, ed->group, MIN_LIMIT, MIN_LIMIT,
- ed->w, ed->h);
+ ERR("file %s, group %s runs infinite minimum calculation loops.Continuing discarding faulty parts.",
+ ed->path, ed->group);
}
- if (reset_max)
- {
- reset_max = EINA_FALSE;
- goto again;
- }
+ reset_max = EINA_FALSE;
+ goto again;
}
}
while (repeat_w || repeat_h);