Enlightenment SVN wrote:
> Log:
> * edje_calc: Major cleanup.
> - Edje_Real_Part use less memory.
> - Edje_Real_Part and Edje_Real_Part_State now use a mempool.
> - When both param1 and param2 are the same, only recalc param1.
> - Don't compute Edje_Real_Part more than one time per
> edje_recalc_do.
>
To this last statement...I say A MEan !! :))
>
> Author: cedric
> Date: 2009-08-14 10:19:42 -0700 (Fri, 14 Aug 2009)
> New Revision: 41771
>
> Modified:
> trunk/edje/src/lib/edje_calc.c trunk/edje/src/lib/edje_edit.c
> trunk/edje/src/lib/edje_embryo.c trunk/edje/src/lib/edje_load.c
> trunk/edje/src/lib/edje_main.c trunk/edje/src/lib/edje_private.h
>
> Modified: trunk/edje/src/lib/edje_calc.c
> ===================================================================
> --- trunk/edje/src/lib/edje_calc.c 2009-08-14 17:17:01 UTC (rev 41770)
> +++ trunk/edje/src/lib/edje_calc.c 2009-08-14 17:19:42 UTC (rev 41771)
> @@ -65,7 +65,7 @@
> return ep->default_desc;
>
> if (!strcmp(name, "custom"))
> - return rp->custom.description;
> + return rp->custom ? rp->custom->description : NULL;
>
> if (!strcmp(name, "default"))
> {
> @@ -93,15 +93,33 @@
> void
> _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1,
> double v1, const char *d2, double v2)
> {
> + Edje_Part_Description *epd1;
> + Edje_Part_Description *epd2;
> +
> if (!d1) d1 = "default";
> if (!d2) d2 = "default";
>
> - ep->param1.description = _edje_part_description_find(ed, ep, d1, v1);
> - if (!ep->param1.description)
> - ep->param1.description = ep->part->default_desc; /* never NULL */
> + epd1 = _edje_part_description_find(ed, ep, d1, v1);
> + if (!epd1)
> + epd1 = ep->part->default_desc; /* never NULL */
>
> - ep->param2.description = _edje_part_description_find(ed, ep, d2, v2);
> + epd2 = _edje_part_description_find(ed, ep, d2, v2);
>
> + if (epd2 != NULL && epd1 != epd2)
> + {
> + if (!ep->param2)
> + ep->param2 = eina_mempool_malloc(_edje_real_part_state_mp, sizeof
> (Edje_Real_Part_State));
> + }
> + else
> + if (ep->param2)
> + {
> + eina_mempool_free(_edje_real_part_state_mp, ep->param2);
> + ep->param2 = NULL;
> + }
> +
> + ep->param1.description = epd1;
> + ep->chosen_description = epd1;
> +
> ep->param1.rel1_to_x = ep->param1.rel1_to_y = NULL;
> ep->param1.rel2_to_x = ep->param1.rel2_to_y = NULL;
>
> @@ -114,26 +132,29 @@
> if (ep->param1.description->rel2.id_y >= 0)
> ep->param1.rel2_to_y =
> ed->table_parts[ep->param1.description->rel2.id_y % ed->table_parts_size];
>
> - ep->param2.rel1_to_x = ep->param2.rel1_to_y = NULL;
> - ep->param2.rel2_to_x = ep->param2.rel2_to_y = NULL;
> + if (ep->param2)
> + {
> + ep->param2->description = epd2;
>
> - if (ep->param2.description)
> - {
> - if (ep->param2.description->rel1.id_x >= 0)
> - ep->param2.rel1_to_x =
> ed->table_parts[ep->param2.description->rel1.id_x % ed->table_parts_size];
> - if (ep->param2.description->rel1.id_y >= 0)
> - ep->param2.rel1_to_y =
> ed->table_parts[ep->param2.description->rel1.id_y % ed->table_parts_size];
> - if (ep->param2.description->rel2.id_x >= 0)
> - ep->param2.rel2_to_x =
> ed->table_parts[ep->param2.description->rel2.id_x % ed->table_parts_size];
> - if (ep->param2.description->rel2.id_y >= 0)
> - ep->param2.rel2_to_y =
> ed->table_parts[ep->param2.description->rel2.id_y % ed->table_parts_size];
> + ep->param2->rel1_to_x = ep->param2->rel1_to_y = NULL;
> + ep->param2->rel2_to_x = ep->param2->rel2_to_y = NULL;
> +
> + if (ep->param2->description)
> + {
> + if (ep->param2->description->rel1.id_x >= 0)
> + ep->param2->rel1_to_x =
> ed->table_parts[ep->param2->description->rel1.id_x % ed->table_parts_size];
> + if (ep->param2->description->rel1.id_y >= 0)
> + ep->param2->rel1_to_y =
> ed->table_parts[ep->param2->description->rel1.id_y % ed->table_parts_size];
> + if (ep->param2->description->rel2.id_x >= 0)
> + ep->param2->rel2_to_x =
> ed->table_parts[ep->param2->description->rel2.id_x % ed->table_parts_size];
> + if (ep->param2->description->rel2.id_y >= 0)
> + ep->param2->rel2_to_y =
> ed->table_parts[ep->param2->description->rel2.id_y % ed->table_parts_size];
> + }
> +
> + if (ep->description_pos != 0.0)
> + ep->chosen_description = epd2;
> }
>
> - if (ep->description_pos == 0.0)
> - ep->chosen_description = ep->param1.description;
> - else
> - ep->chosen_description = ep->param2.description;
> -
> ed->dirty = 1;
> #ifdef EDJE_CALC_CACHE
> ep->invalidate = 1;
> @@ -1444,23 +1465,27 @@
> else
> {
> image_count = 2;
> - if (ep->param2.description)
> - image_count +=
> eina_list_count(ep->param2.description->image.tween_list);
> + if (ep->param2)
> + image_count +=
> eina_list_count(ep->param2->description->image.tween_list);
> image_num = (pos * ((double)image_count - 0.5));
> if (image_num > (image_count - 1))
> image_num = image_count - 1;
> if (image_num == 0)
> image_id = ep->param1.description->image.id;
> - else if (image_num == (image_count - 1))
> - image_id = ep->param2.description->image.id;
> else
> - {
> - Edje_Part_Image_Id *imid;
> + if (ep->param2)
> + {
> + if (image_num == (image_count - 1))
> + image_id = ep->param2->description->image.id;
> + else
> + {
> + Edje_Part_Image_Id *imid;
>
> - imid = eina_list_nth(ep->param2.description->image.tween_list,
> - image_num - 1);
> - if (imid) image_id = imid->id;
> - }
> + imid =
> eina_list_nth(ep->param2->description->image.tween_list,
> + image_num - 1);
> + if (imid) image_id = imid->id;
> + }
> + }
> if (image_id < 0)
> {
> printf("EDJE ERROR: part \"%s\" has description, "
> @@ -1525,6 +1550,7 @@
> Edje_Part_Description *chosen_desc;
> Edje_Real_Part *confine_to = NULL;
> double pos = 0.0;
> + Edje_Calc_Params lp3;
>
> if ((ep->calculated & FLAG_XY) == FLAG_XY)
> {
> @@ -1559,6 +1585,11 @@
> #endif
> return;
> }
> +#ifdef EDJE_CALC_CACHE
> + if (ep->state == ed->state)
> + return ;
> +#endif
> +
> if (flags & FLAG_X)
> {
> ep->calculating |= flags & FLAG_X;
> @@ -1577,20 +1608,23 @@
> state1 = ep->param1.rel2_to_x->state;
> #endif
> }
> - if (ep->param2.rel1_to_x)
> + if (ep->param2)
> {
> - _edje_part_recalc(ed, ep->param2.rel1_to_x, FLAG_X);
> + if (ep->param2->rel1_to_x)
> + {
> + _edje_part_recalc(ed, ep->param2->rel1_to_x, FLAG_X);
> #ifdef EDJE_CALC_CACHE
> - state2 = ep->param2.rel1_to_x->state;
> + state2 = ep->param2->rel1_to_x->state;
> #endif
> - }
> - if (ep->param2.rel2_to_x)
> - {
> - _edje_part_recalc(ed, ep->param2.rel2_to_x, FLAG_X);
> + }
> + if (ep->param2->rel2_to_x)
> + {
> + _edje_part_recalc(ed, ep->param2->rel2_to_x, FLAG_X);
> #ifdef EDJE_CALC_CACHE
> - if (state2 < ep->param2.rel2_to_x->state)
> - state2 = ep->param2.rel2_to_x->state;
> + if (state2 < ep->param2->rel2_to_x->state)
> + state2 = ep->param2->rel2_to_x->state;
> #endif
> + }
> }
> }
> if (flags & FLAG_Y)
> @@ -1612,21 +1646,24 @@
> state1 = ep->param1.rel2_to_y->state;
> #endif
> }
> - if (ep->param2.rel1_to_y)
> + if (ep->param2)
> {
> - _edje_part_recalc(ed, ep->param2.rel1_to_y, FLAG_Y);
> + if (ep->param2->rel1_to_y)
> + {
> + _edje_part_recalc(ed, ep->param2->rel1_to_y, FLAG_Y);
> #ifdef EDJE_CALC_CACHE
> - if (state2 < ep->param2.rel1_to_y->state)
> - state2 = ep->param2.rel1_to_y->state;
> + if (state2 < ep->param2->rel1_to_y->state)
> + state2 = ep->param2->rel1_to_y->state;
> #endif
> - }
> - if (ep->param2.rel2_to_y)
> - {
> - _edje_part_recalc(ed, ep->param2.rel2_to_y, FLAG_Y);
> + }
> + if (ep->param2->rel2_to_y)
> + {
> + _edje_part_recalc(ed, ep->param2->rel2_to_y, FLAG_Y);
> #ifdef EDJE_CALC_CACHE
> - if (state2 < ep->param2.rel2_to_y->state)
> - state2 = ep->param2.rel2_to_y->state;
> + if (state2 < ep->param2->rel2_to_y->state)
> + state2 = ep->param2->rel2_to_y->state;
> #endif
> + }
> }
> }
> if (ep->drag && ep->drag->confine_to)
> @@ -1652,7 +1689,7 @@
> #ifndef EDJE_CALC_CACHE
> p1 = &lp1;
> #else
> - p1 = ep->param2.description ? &ep->param1.p : &ep->p;
> + p1 = &ep->param1.p;
> #endif
>
> if (ep->param1.description)
> @@ -1675,33 +1712,32 @@
> #endif
> }
> }
> - if (ep->param2.description)
> + if (ep->param2 && ep->description_pos != 0.0)
> {
> int beginning_pos, part_type;
> Edje_Calc_Params *p2, *p3;
> +
> + p3 = &lp3;
> +
> #ifndef EDJE_CALC_CACHE
> - Edje_Calc_Params lp3;
> -
> p2 = &lp2;
> - p3 = &lp3;
> #else
> - p2 = &ep->param2.p;
> - p3 = &ep->p;
> + p2 = &ep->param2->p;
>
> if (ed->all_part_change ||
> ep->invalidate ||
> - state2 >= ep->param2.state ||
> - statec >= ep->param2.state ||
> + state2 >= ep->param2->state ||
> + statec >= ep->param2->state ||
> ((ep->part->type == EDJE_PART_TYPE_TEXT || ep->part->type ==
> EDJE_PART_TYPE_TEXTBLOCK) && ed->text_part_change))
> #endif
> {
> - _edje_part_recalc_single(ed, ep, ep->param2.description,
> chosen_desc,
> - ep->param2.rel1_to_x,
> ep->param2.rel1_to_y, ep->param2.rel2_to_x, ep->param2.rel2_to_y,
> + _edje_part_recalc_single(ed, ep, ep->param2->description,
> chosen_desc,
> + ep->param2->rel1_to_x,
> ep->param2->rel1_to_y, ep->param2->rel2_to_x, ep->param2->rel2_to_y,
> confine_to,
> p2,
> flags);
> #ifdef EDJE_CALC_CACHE
> - ep->param2.state = ed->state;
> + ep->param2->state = ed->state;
> #endif
> }
>
> @@ -1789,21 +1825,12 @@
> }
>
> pf = p3;
> -#ifdef EDJE_CALC_CACHE
> - ep->state = ed->state;
> -#endif
> }
> else
> {
> pf = p1;
> -#ifdef EDJE_CALC_CACHE
> - ep->state = ep->param1.state;
> -#endif
> }
>
> -#ifdef EDJE_CALC_CACHE
> - ep->invalidate = 0;
> -#endif
> ep->req = pf->req;
>
> if (ep->drag && ep->drag->need_reset)
> @@ -1912,4 +1939,13 @@
>
> ep->calculated |= flags;
> ep->calculating = FLAG_NONE;
> +
> +#ifdef EDJE_CALC_CACHE
> + if (ep->calculated == FLAG_XY)
> + {
> + ep->state = ed->state;
> + ep->invalidate = 0;
> + }
> +#endif
> +
> }
>
> Modified: trunk/edje/src/lib/edje_edit.c
> ===================================================================
> --- trunk/edje/src/lib/edje_edit.c 2009-08-14 17:17:01 UTC (rev 41770)
> +++ trunk/edje/src/lib/edje_edit.c 2009-08-14 17:19:42 UTC (rev 41771)
> @@ -205,11 +205,15 @@
> if (rp->text.cache.in_str) eina_stringshare_del(rp->text.cache.in_str);
> if (rp->text.cache.out_str) eina_stringshare_del(rp->text.cache.out_str);
>
> - if (rp->custom.description)
> - _edje_collection_free_part_description_free(rp->custom.description, 0);
> + if (rp->custom)
> + _edje_collection_free_part_description_free(rp->custom->description, 0);
>
> + free(rp->drag);
> + eina_mempool_free(_edje_real_part_state_mp, rp->param2);
> + eina_mempool_free(_edje_real_part_state_mp, rp->custom);
> +
> _edje_unref(rp->edje);
> - free(rp);
> + eina_mempool_free(_edje_real_part_mp, rp);
> }
>
> static unsigned char
> @@ -1603,22 +1607,29 @@
> if (real->param1.rel2_to_x == rp) real->param1.rel2_to_x = NULL;
> if (real->param1.rel2_to_y == rp) real->param1.rel2_to_y = NULL;
>
> - if (real->param2.rel1_to_x == rp) real->param2.rel1_to_x = NULL;
> - if (real->param2.rel1_to_y == rp) real->param2.rel1_to_y = NULL;
> - if (real->param2.rel2_to_x == rp) real->param2.rel2_to_x = NULL;
> - if (real->param2.rel2_to_y == rp) real->param2.rel2_to_y = NULL;
> + if (real->param2)
> + {
> + if (real->param2->rel1_to_x == rp) real->param2->rel1_to_x = NULL;
> + if (real->param2->rel1_to_y == rp) real->param2->rel1_to_y = NULL;
> + if (real->param2->rel2_to_x == rp) real->param2->rel2_to_x = NULL;
> + if (real->param2->rel2_to_y == rp) real->param2->rel2_to_y = NULL;
> + }
>
> - if (real->custom.rel1_to_x == rp) real->custom.rel1_to_x = NULL;
> - if (real->custom.rel1_to_y == rp) real->custom.rel1_to_y = NULL;
> - if (real->custom.rel2_to_x == rp) real->custom.rel2_to_x = NULL;
> - if (real->custom.rel2_to_y == rp) real->custom.rel2_to_y = NULL;
> + if (real->custom)
> + {
> + if (real->custom->rel1_to_x == rp) real->custom->rel1_to_x = NULL;
> + if (real->custom->rel1_to_y == rp) real->custom->rel1_to_y = NULL;
> + if (real->custom->rel2_to_x == rp) real->custom->rel2_to_x = NULL;
> + if (real->custom->rel2_to_y == rp) real->custom->rel2_to_y = NULL;
> + }
>
> if (real->clip_to == rp)
> {
> evas_object_clip_set(real->object, ed->clipper);
> real->clip_to = NULL;
> }
> - //TODO confine ??
> + if (real->drag && real->drag->confine_to == rp)
> + real->drag->confine_to = NULL;
> }
>
> /* Unlink all the parts and descriptions that refer to id */
>
> Modified: trunk/edje/src/lib/edje_embryo.c
> ===================================================================
> --- trunk/edje/src/lib/edje_embryo.c 2009-08-14 17:17:01 UTC (rev 41770)
> +++ trunk/edje/src/lib/edje_embryo.c 2009-08-14 17:19:42 UTC (rev 41771)
> @@ -1548,7 +1548,7 @@
> return 0;
>
> /* check whether this part already has a "custom" state */
> - if (rp->custom.description)
> + if (rp->custom)
> return 0;
>
> GETSTR(name, params[2]);
> @@ -1564,6 +1564,13 @@
> if (!(d = calloc(1, sizeof(Edje_Part_Description))))
> return 0;
>
> + rp->custom = eina_mempool_malloc(_edje_real_part_state_mp, sizeof
> (Edje_Real_Part_State));
> + if (!rp->custom)
> + {
> + free(d);
> + return 0;
> + }
> +
> *d = *parent;
>
> d->state.name = (char *)eina_stringshare_add("custom");
> @@ -1579,6 +1586,8 @@
> Edje_Part_Image_Id *iid_new;
>
> iid_new = calloc(1, sizeof(Edje_Part_Image_Id));
> + if (!iid_new) continue;
> +
> iid_new->id = iid->id;
>
> d->image.tween_list = eina_list_append(d->image.tween_list, iid_new);
> @@ -1592,7 +1601,7 @@
> d->text.style = DUP(d->text.style);
> #undef DUP
>
> - rp->custom.description = d;
> + rp->custom->description = d;
>
> return 0;
> }
> @@ -1616,7 +1625,7 @@
> return 0;
>
> /* check whether this part has a "custom" state */
> - if (!rp->custom.description)
> + if (!rp->custom)
> return 0;
>
> switch (params[2])
> @@ -1624,90 +1633,90 @@
> case EDJE_STATE_PARAM_ALIGNMENT:
> CHKPARAM(4);
>
> - GETFLOAT(rp->custom.description->align.x, params[3]);
> - GETFLOAT(rp->custom.description->align.y, params[4]);
> + GETFLOAT(rp->custom->description->align.x, params[3]);
> + GETFLOAT(rp->custom->description->align.y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_MIN:
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->min.w, params[3]);
> - GETINT(rp->custom.description->min.h, params[4]);
> + GETINT(rp->custom->description->min.w, params[3]);
> + GETINT(rp->custom->description->min.h, params[4]);
>
> break;
> case EDJE_STATE_PARAM_MAX:
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->max.w, params[3]);
> - GETINT(rp->custom.description->max.h, params[4]);
> + GETINT(rp->custom->description->max.w, params[3]);
> + GETINT(rp->custom->description->max.h, params[4]);
>
> break;
> case EDJE_STATE_PARAM_STEP:
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->step.x, params[3]);
> - GETINT(rp->custom.description->step.y, params[4]);
> + GETINT(rp->custom->description->step.x, params[3]);
> + GETINT(rp->custom->description->step.y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_ASPECT:
> CHKPARAM(4);
>
> - GETFLOAT(rp->custom.description->aspect.min, params[3]);
> - GETFLOAT(rp->custom.description->aspect.max, params[4]);
> + GETFLOAT(rp->custom->description->aspect.min, params[3]);
> + GETFLOAT(rp->custom->description->aspect.max, params[4]);
>
> break;
> case EDJE_STATE_PARAM_ASPECT_PREF:
> CHKPARAM(3);
>
> - GETINT(rp->custom.description->aspect.prefer, params[3]);
> + GETINT(rp->custom->description->aspect.prefer, params[3]);
>
> break;
> case EDJE_STATE_PARAM_COLOR:
> CHKPARAM(6);
>
> - GETINT(rp->custom.description->color.r, params[3]);
> - GETINT(rp->custom.description->color.g, params[4]);
> - GETINT(rp->custom.description->color.b, params[5]);
> - GETINT(rp->custom.description->color.a, params[6]);
> + GETINT(rp->custom->description->color.r, params[3]);
> + GETINT(rp->custom->description->color.g, params[4]);
> + GETINT(rp->custom->description->color.b, params[5]);
> + GETINT(rp->custom->description->color.a, params[6]);
>
> break;
> case EDJE_STATE_PARAM_COLOR2:
> CHKPARAM(6);
>
> - GETINT(rp->custom.description->color2.r, params[3]);
> - GETINT(rp->custom.description->color2.g, params[4]);
> - GETINT(rp->custom.description->color2.b, params[5]);
> - GETINT(rp->custom.description->color2.a, params[6]);
> + GETINT(rp->custom->description->color2.r, params[3]);
> + GETINT(rp->custom->description->color2.g, params[4]);
> + GETINT(rp->custom->description->color2.b, params[5]);
> + GETINT(rp->custom->description->color2.a, params[6]);
>
> break;
> case EDJE_STATE_PARAM_COLOR3:
> CHKPARAM(6);
>
> - GETINT(rp->custom.description->color3.r, params[3]);
> - GETINT(rp->custom.description->color3.g, params[4]);
> - GETINT(rp->custom.description->color3.b, params[5]);
> - GETINT(rp->custom.description->color3.a, params[6]);
> + GETINT(rp->custom->description->color3.r, params[3]);
> + GETINT(rp->custom->description->color3.g, params[4]);
> + GETINT(rp->custom->description->color3.b, params[5]);
> + GETINT(rp->custom->description->color3.a, params[6]);
>
> break;
> case EDJE_STATE_PARAM_COLOR_CLASS:
> CHKPARAM(3);
>
> GETSTR(s, params[3]);
> - GETSTREVAS(s, rp->custom.description->color_class);
> + GETSTREVAS(s, rp->custom->description->color_class);
>
> break;
> case EDJE_STATE_PARAM_REL1:
> CHKPARAM(4);
>
> - GETFLOAT(rp->custom.description->rel1.relative_x, params[3]);
> - GETFLOAT(rp->custom.description->rel1.relative_y, params[4]);
> + GETFLOAT(rp->custom->description->rel1.relative_x, params[3]);
> + GETFLOAT(rp->custom->description->rel1.relative_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_REL1_TO:
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->rel1.id_x, params[3]);
> - GETINT(rp->custom.description->rel1.id_y, params[4]);
> + GETINT(rp->custom->description->rel1.id_x, params[3]);
> + GETINT(rp->custom->description->rel1.id_y, params[4]);
>
> if (rp->param1.description->rel1.id_x >= 0)
> rp->param1.rel1_to_x =
> ed->table_parts[rp->param1.description->rel1.id_x % ed->table_parts_size];
> @@ -1718,22 +1727,22 @@
> case EDJE_STATE_PARAM_REL1_OFFSET:
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->rel1.offset_x, params[3]);
> - GETINT(rp->custom.description->rel1.offset_y, params[4]);
> + GETINT(rp->custom->description->rel1.offset_x, params[3]);
> + GETINT(rp->custom->description->rel1.offset_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_REL2:
> CHKPARAM(4);
>
> - GETFLOAT(rp->custom.description->rel2.relative_x, params[3]);
> - GETFLOAT(rp->custom.description->rel2.relative_y, params[4]);
> + GETFLOAT(rp->custom->description->rel2.relative_x, params[3]);
> + GETFLOAT(rp->custom->description->rel2.relative_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_REL2_TO:
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->rel2.id_x, params[3]);
> - GETINT(rp->custom.description->rel2.id_y, params[4]);
> + GETINT(rp->custom->description->rel2.id_x, params[3]);
> + GETINT(rp->custom->description->rel2.id_y, params[4]);
>
> if (rp->param1.description->rel2.id_x >= 0)
> rp->param1.rel2_to_x =
> ed->table_parts[rp->param1.description->rel2.id_x % ed->table_parts_size];
> @@ -1744,52 +1753,52 @@
> case EDJE_STATE_PARAM_REL2_OFFSET:
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->rel2.offset_x, params[3]);
> - GETINT(rp->custom.description->rel2.offset_y, params[4]);
> + GETINT(rp->custom->description->rel2.offset_x, params[3]);
> + GETINT(rp->custom->description->rel2.offset_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_IMAGE:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(3);
>
> - GETINT(rp->custom.description->image.id, params[3]);
> + GETINT(rp->custom->description->image.id, params[3]);
>
> break;
> case EDJE_STATE_PARAM_BORDER:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(6);
>
> - GETINT(rp->custom.description->border.l, params[3]);
> - GETINT(rp->custom.description->border.r, params[4]);
> - GETINT(rp->custom.description->border.t, params[5]);
> - GETINT(rp->custom.description->border.b, params[6]);
> + GETINT(rp->custom->description->border.l, params[3]);
> + GETINT(rp->custom->description->border.r, params[4]);
> + GETINT(rp->custom->description->border.t, params[5]);
> + GETINT(rp->custom->description->border.b, params[6]);
>
> break;
> case EDJE_STATE_PARAM_FILL_SMOOTH:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(3);
>
> - GETINT(rp->custom.description->fill.smooth, params[3]);
> + GETINT(rp->custom->description->fill.smooth, params[3]);
>
> break;
> case EDJE_STATE_PARAM_FILL_POS:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(6);
>
> - GETFLOAT(rp->custom.description->fill.pos_rel_x, params[3]);
> - GETFLOAT(rp->custom.description->fill.pos_rel_y, params[4]);
> - GETINT(rp->custom.description->fill.pos_abs_x, params[5]);
> - GETINT(rp->custom.description->fill.pos_abs_y, params[6]);
> + GETFLOAT(rp->custom->description->fill.pos_rel_x, params[3]);
> + GETFLOAT(rp->custom->description->fill.pos_rel_y, params[4]);
> + GETINT(rp->custom->description->fill.pos_abs_x, params[5]);
> + GETINT(rp->custom->description->fill.pos_abs_y, params[6]);
>
> break;
> case EDJE_STATE_PARAM_FILL_SIZE:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(6);
>
> - GETFLOAT(rp->custom.description->fill.rel_x, params[3]);
> - GETFLOAT(rp->custom.description->fill.rel_y, params[4]);
> - GETINT(rp->custom.description->fill.abs_x, params[5]);
> - GETINT(rp->custom.description->fill.abs_y, params[6]);
> + GETFLOAT(rp->custom->description->fill.rel_x, params[3]);
> + GETFLOAT(rp->custom->description->fill.rel_y, params[4]);
> + GETINT(rp->custom->description->fill.abs_x, params[5]);
> + GETINT(rp->custom->description->fill.abs_y, params[6]);
>
> break;
> case EDJE_STATE_PARAM_TEXT:
> @@ -1799,7 +1808,7 @@
> CHKPARAM(3);
>
> GETSTR(s, params[3]);
> - GETSTREVAS(s, rp->custom.description->text.text);
> + GETSTREVAS(s, rp->custom->description->text.text);
>
> break;
> case EDJE_STATE_PARAM_TEXT_CLASS:
> @@ -1809,7 +1818,7 @@
> CHKPARAM(3);
>
> GETSTR(s, params[3]);
> - GETSTREVAS(s, rp->custom.description->text.text_class);
> + GETSTREVAS(s, rp->custom->description->text.text_class);
>
> break;
> case EDJE_STATE_PARAM_TEXT_FONT:
> @@ -1817,7 +1826,7 @@
> CHKPARAM(3);
>
> GETSTR(s, params[3]);
> - GETSTREVAS(s, rp->custom.description->text.font);
> + GETSTREVAS(s, rp->custom->description->text.font);
>
> break;
> case EDJE_STATE_PARAM_TEXT_STYLE:
> @@ -1825,22 +1834,22 @@
> CHKPARAM(3);
>
> GETSTR(s, params[3]);
> - GETSTREVAS(s, rp->custom.description->text.style);
> + GETSTREVAS(s, rp->custom->description->text.style);
>
> break;
> case EDJE_STATE_PARAM_TEXT_SIZE:
> if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
> CHKPARAM(3);
>
> - GETINT(rp->custom.description->text.size, params[3]);
> + GETINT(rp->custom->description->text.size, params[3]);
>
> break;
> case EDJE_STATE_PARAM_TEXT_FIT:
> if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->text.fit_x, params[3]);
> - GETINT(rp->custom.description->text.fit_y, params[4]);
> + GETINT(rp->custom->description->text.fit_x, params[3]);
> + GETINT(rp->custom->description->text.fit_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_TEXT_MIN:
> @@ -1849,8 +1858,8 @@
> return 0;
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->text.min_x, params[3]);
> - GETINT(rp->custom.description->text.min_y, params[4]);
> + GETINT(rp->custom->description->text.min_x, params[3]);
> + GETINT(rp->custom->description->text.min_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_TEXT_MAX:
> @@ -1859,22 +1868,22 @@
> return 0;
> CHKPARAM(4);
>
> - GETINT(rp->custom.description->text.max_x, params[3]);
> - GETINT(rp->custom.description->text.max_y, params[4]);
> + GETINT(rp->custom->description->text.max_x, params[3]);
> + GETINT(rp->custom->description->text.max_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_TEXT_ALIGN:
> if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
> CHKPARAM(4);
>
> - GETFLOAT(rp->custom.description->text.align.x, params[3]);
> - GETFLOAT(rp->custom.description->text.align.y, params[4]);
> + GETFLOAT(rp->custom->description->text.align.x, params[3]);
> + GETFLOAT(rp->custom->description->text.align.y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_VISIBLE:
> CHKPARAM(3);
>
> - GETINT(rp->custom.description->visible, params[3]);
> + GETINT(rp->custom->description->visible, params[3]);
>
> break;
> default:
> @@ -1907,7 +1916,7 @@
> return 0;
>
> /* check whether this part has a "custom" state */
> - if (!rp->custom.description)
> + if (!rp->custom)
> return 0;
>
> switch (params[2])
> @@ -1915,162 +1924,162 @@
> case EDJE_STATE_PARAM_ALIGNMENT:
> CHKPARAM(4);
>
> - SETFLOAT(rp->custom.description->align.x, params[3]);
> - SETFLOAT(rp->custom.description->align.y, params[4]);
> + SETFLOAT(rp->custom->description->align.x, params[3]);
> + SETFLOAT(rp->custom->description->align.y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_MIN:
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->min.w, params[3]);
> - SETINT(rp->custom.description->min.h, params[4]);
> + SETINT(rp->custom->description->min.w, params[3]);
> + SETINT(rp->custom->description->min.h, params[4]);
>
> break;
> case EDJE_STATE_PARAM_MAX:
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->max.w, params[3]);
> - SETINT(rp->custom.description->max.h, params[4]);
> + SETINT(rp->custom->description->max.w, params[3]);
> + SETINT(rp->custom->description->max.h, params[4]);
>
> break;
> case EDJE_STATE_PARAM_STEP:
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->step.x, params[3]);
> - SETINT(rp->custom.description->step.y, params[4]);
> + SETINT(rp->custom->description->step.x, params[3]);
> + SETINT(rp->custom->description->step.y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_ASPECT:
> CHKPARAM(4);
>
> - SETFLOAT(rp->custom.description->aspect.min, params[3]);
> - SETFLOAT(rp->custom.description->aspect.max, params[4]);
> + SETFLOAT(rp->custom->description->aspect.min, params[3]);
> + SETFLOAT(rp->custom->description->aspect.max, params[4]);
>
> break;
> case EDJE_STATE_PARAM_ASPECT_PREF:
> CHKPARAM(3);
>
> - SETINT(rp->custom.description->aspect.prefer, params[3]);
> + SETINT(rp->custom->description->aspect.prefer, params[3]);
>
> break;
> case EDJE_STATE_PARAM_COLOR:
> CHKPARAM(6);
>
> - SETINT(rp->custom.description->color.r, params[3]);
> - SETINT(rp->custom.description->color.g, params[4]);
> - SETINT(rp->custom.description->color.b, params[5]);
> - SETINT(rp->custom.description->color.a, params[6]);
> + SETINT(rp->custom->description->color.r, params[3]);
> + SETINT(rp->custom->description->color.g, params[4]);
> + SETINT(rp->custom->description->color.b, params[5]);
> + SETINT(rp->custom->description->color.a, params[6]);
>
> break;
> case EDJE_STATE_PARAM_COLOR2:
> CHKPARAM(6);
>
> - SETINT(rp->custom.description->color2.r, params[3]);
> - SETINT(rp->custom.description->color2.g, params[4]);
> - SETINT(rp->custom.description->color2.b, params[5]);
> - SETINT(rp->custom.description->color2.a, params[6]);
> + SETINT(rp->custom->description->color2.r, params[3]);
> + SETINT(rp->custom->description->color2.g, params[4]);
> + SETINT(rp->custom->description->color2.b, params[5]);
> + SETINT(rp->custom->description->color2.a, params[6]);
>
> break;
> case EDJE_STATE_PARAM_COLOR3:
> CHKPARAM(6);
>
> - SETINT(rp->custom.description->color3.r, params[3]);
> - SETINT(rp->custom.description->color3.g, params[4]);
> - SETINT(rp->custom.description->color3.b, params[5]);
> - SETINT(rp->custom.description->color3.a, params[6]);
> + SETINT(rp->custom->description->color3.r, params[3]);
> + SETINT(rp->custom->description->color3.g, params[4]);
> + SETINT(rp->custom->description->color3.b, params[5]);
> + SETINT(rp->custom->description->color3.a, params[6]);
>
> break;
> case EDJE_STATE_PARAM_COLOR_CLASS:
> CHKPARAM(4);
>
> - s = rp->custom.description->color_class;
> + s = rp->custom->description->color_class;
> SETSTRALLOCATE(s);
>
> break;
> case EDJE_STATE_PARAM_REL1:
> CHKPARAM(4);
>
> - SETFLOAT(rp->custom.description->rel1.relative_x, params[3]);
> - SETFLOAT(rp->custom.description->rel1.relative_y, params[4]);
> + SETFLOAT(rp->custom->description->rel1.relative_x, params[3]);
> + SETFLOAT(rp->custom->description->rel1.relative_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_REL1_TO:
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->rel1.id_x, params[3]);
> - SETINT(rp->custom.description->rel1.id_y, params[4]);
> + SETINT(rp->custom->description->rel1.id_x, params[3]);
> + SETINT(rp->custom->description->rel1.id_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_REL1_OFFSET:
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->rel1.offset_x, params[3]);
> - SETINT(rp->custom.description->rel1.offset_y, params[4]);
> + SETINT(rp->custom->description->rel1.offset_x, params[3]);
> + SETINT(rp->custom->description->rel1.offset_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_REL2:
> CHKPARAM(4);
>
> - SETFLOAT(rp->custom.description->rel2.relative_x, params[3]);
> - SETFLOAT(rp->custom.description->rel2.relative_y, params[4]);
> + SETFLOAT(rp->custom->description->rel2.relative_x, params[3]);
> + SETFLOAT(rp->custom->description->rel2.relative_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_REL2_TO:
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->rel2.id_x, params[3]);
> - SETINT(rp->custom.description->rel2.id_y, params[4]);
> + SETINT(rp->custom->description->rel2.id_x, params[3]);
> + SETINT(rp->custom->description->rel2.id_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_REL2_OFFSET:
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->rel2.offset_x, params[3]);
> - SETINT(rp->custom.description->rel2.offset_y, params[4]);
> + SETINT(rp->custom->description->rel2.offset_x, params[3]);
> + SETINT(rp->custom->description->rel2.offset_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_IMAGE:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(3);
>
> - SETINT(rp->custom.description->image.id, params[3]);
> + SETINT(rp->custom->description->image.id, params[3]);
>
> break;
> case EDJE_STATE_PARAM_BORDER:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(6);
>
> - SETINT(rp->custom.description->border.l, params[3]);
> - SETINT(rp->custom.description->border.r, params[4]);
> - SETINT(rp->custom.description->border.t, params[5]);
> - SETINT(rp->custom.description->border.b, params[6]);
> + SETINT(rp->custom->description->border.l, params[3]);
> + SETINT(rp->custom->description->border.r, params[4]);
> + SETINT(rp->custom->description->border.t, params[5]);
> + SETINT(rp->custom->description->border.b, params[6]);
>
> break;
> case EDJE_STATE_PARAM_FILL_SMOOTH:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(3);
>
> - SETINT(rp->custom.description->fill.smooth, params[3]);
> + SETINT(rp->custom->description->fill.smooth, params[3]);
>
> break;
> case EDJE_STATE_PARAM_FILL_POS:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(6);
>
> - SETFLOAT(rp->custom.description->fill.pos_rel_x, params[3]);
> - SETFLOAT(rp->custom.description->fill.pos_rel_y, params[4]);
> - SETINT(rp->custom.description->fill.pos_abs_x, params[5]);
> - SETINT(rp->custom.description->fill.pos_abs_y, params[6]);
> + SETFLOAT(rp->custom->description->fill.pos_rel_x, params[3]);
> + SETFLOAT(rp->custom->description->fill.pos_rel_y, params[4]);
> + SETINT(rp->custom->description->fill.pos_abs_x, params[5]);
> + SETINT(rp->custom->description->fill.pos_abs_y, params[6]);
>
> break;
> case EDJE_STATE_PARAM_FILL_SIZE:
> if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
> CHKPARAM(6);
>
> - SETFLOAT(rp->custom.description->fill.rel_x, params[3]);
> - SETFLOAT(rp->custom.description->fill.rel_y, params[4]);
> - SETINT(rp->custom.description->fill.abs_x, params[5]);
> - SETINT(rp->custom.description->fill.abs_y, params[6]);
> + SETFLOAT(rp->custom->description->fill.rel_x, params[3]);
> + SETFLOAT(rp->custom->description->fill.rel_y, params[4]);
> + SETINT(rp->custom->description->fill.abs_x, params[5]);
> + SETINT(rp->custom->description->fill.abs_y, params[6]);
>
> break;
> case EDJE_STATE_PARAM_TEXT:
> @@ -2079,7 +2088,7 @@
> return 0;
> CHKPARAM(4);
>
> - s = rp->custom.description->text.text;
> + s = rp->custom->description->text.text;
> SETSTRALLOCATE(s);
>
> break;
> @@ -2089,7 +2098,7 @@
> return 0;
> CHKPARAM(4);
>
> - s = rp->custom.description->text.text_class;
> + s = rp->custom->description->text.text_class;
> SETSTRALLOCATE(s);
>
> break;
> @@ -2097,7 +2106,7 @@
> if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
> CHKPARAM(4);
>
> - s = rp->custom.description->text.font;
> + s = rp->custom->description->text.font;
> SETSTRALLOCATE(s);
>
> break;
> @@ -2105,7 +2114,7 @@
> if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0;
> CHKPARAM(4);
>
> - s = rp->custom.description->text.style;
> + s = rp->custom->description->text.style;
> SETSTRALLOCATE(s);
>
> break;
> @@ -2113,15 +2122,15 @@
> if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
> CHKPARAM(3);
>
> - SETINT(rp->custom.description->text.size, params[3]);
> + SETINT(rp->custom->description->text.size, params[3]);
>
> break;
> case EDJE_STATE_PARAM_TEXT_FIT:
> if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->text.fit_x, params[3]);
> - SETINT(rp->custom.description->text.fit_y, params[4]);
> + SETINT(rp->custom->description->text.fit_x, params[3]);
> + SETINT(rp->custom->description->text.fit_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_TEXT_MIN:
> @@ -2130,8 +2139,8 @@
> return 0;
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->text.min_x, params[3]);
> - SETINT(rp->custom.description->text.min_y, params[4]);
> + SETINT(rp->custom->description->text.min_x, params[3]);
> + SETINT(rp->custom->description->text.min_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_TEXT_MAX:
> @@ -2140,22 +2149,22 @@
> return 0;
> CHKPARAM(4);
>
> - SETINT(rp->custom.description->text.max_x, params[3]);
> - SETINT(rp->custom.description->text.max_y, params[4]);
> + SETINT(rp->custom->description->text.max_x, params[3]);
> + SETINT(rp->custom->description->text.max_y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_TEXT_ALIGN:
> if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
> CHKPARAM(4);
>
> - SETFLOAT(rp->custom.description->text.align.x, params[3]);
> - SETFLOAT(rp->custom.description->text.align.y, params[4]);
> + SETFLOAT(rp->custom->description->text.align.x, params[3]);
> + SETFLOAT(rp->custom->description->text.align.y, params[4]);
>
> break;
> case EDJE_STATE_PARAM_VISIBLE:
> CHKPARAM(3);
>
> - SETINT(rp->custom.description->visible, params[3]);
> + SETINT(rp->custom->description->visible, params[3]);
>
> break;
> default:
>
> Modified: trunk/edje/src/lib/edje_load.c
> ===================================================================
> --- trunk/edje/src/lib/edje_load.c 2009-08-14 17:17:01 UTC (rev 41770)
> +++ trunk/edje/src/lib/edje_load.c 2009-08-14 17:19:42 UTC (rev 41771)
> @@ -346,13 +346,15 @@
> Edje_Real_Part *rp;
>
> ep = eina_list_data_get(l);
> - rp = calloc(1, sizeof(Edje_Real_Part));
> + rp = eina_mempool_malloc(_edje_real_part_mp,
> sizeof(Edje_Real_Part));
> if (!rp)
> {
> ed->load_error =
> EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
> return 0;
> }
>
> + memset(rp, 0, sizeof (Edje_Real_Part));
> +
> if ((ep->dragable.x != 0) || (ep->dragable.y != 0))
> {
> rp->drag = calloc(1, sizeof (Edje_Real_Part_Drag));
> @@ -846,13 +848,17 @@
> if (rp->text.cache.in_str)
> eina_stringshare_del(rp->text.cache.in_str);
> if (rp->text.cache.out_str)
> eina_stringshare_del(rp->text.cache.out_str);
>
> - if (rp->custom.description)
> -
> _edje_collection_free_part_description_free(rp->custom.description,
> ed->file->free_strings);
> + if (rp->custom)
> +
> _edje_collection_free_part_description_free(rp->custom->description,
> ed->file->free_strings);
>
> + /* Cleanup optional part. */
> free(rp->drag);
>
> + eina_mempool_free(_edje_real_part_state_mp, rp->param2);
> + eina_mempool_free(_edje_real_part_state_mp, rp->custom);
> +
> _edje_unref(rp->edje);
> - free(rp);
> + eina_mempool_free(_edje_real_part_mp, rp);
> }
> }
> if ((ed->file) && (ed->collection))
>
> Modified: trunk/edje/src/lib/edje_main.c
> ===================================================================
> --- trunk/edje/src/lib/edje_main.c 2009-08-14 17:17:01 UTC (rev 41770)
> +++ trunk/edje/src/lib/edje_main.c 2009-08-14 17:19:42 UTC (rev 41771)
> @@ -7,6 +7,8 @@
> #include "edje_private.h"
>
> static int initted = 0;
> +Eina_Mempool *_edje_real_part_mp = NULL;
> +Eina_Mempool *_edje_real_part_state_mp = NULL;
>
> /************************** API Routines **************************/
>
> @@ -20,6 +22,8 @@
> initted++;
> if (initted == 1)
> {
> + const char *choice;
> +
> eina_init();
> ecore_job_init();
> srand(time(NULL));
> @@ -28,9 +32,34 @@
> _edje_box_init();
> embryo_init();
> eet_init();
> +
> + _edje_real_part_mp = eina_mempool_add("chained_mempool",
> + "Edje_Real_Part", NULL,
> + sizeof (Edje_Real_Part), 128);
> + if (!_edje_real_part_mp)
> + {
> + EINA_ERROR_PERR("ERROR: Mempool for Edje_Real_Part cannot be
> allocated.\n");
> + goto on_error;
> + }
> +
> + _edje_real_part_state_mp = eina_mempool_add("chained_mempool",
> + "Edje_Real_Part_State", NULL,
> + sizeof (Edje_Real_Part_State),
> 256);
> + if (!_edje_real_part_state_mp)
> + {
> + EINA_ERROR_PERR("ERROR: Mempool for Edje_Real_Part_State cannot be
> allocated.\n");
> + goto on_error;
> + }
> }
> _edje_message_init();
> return initted;
> +
> + on_error:
> + eina_mempool_del(_edje_real_part_state_mp);
> + eina_mempool_del(_edje_real_part_mp);
> + _edje_real_part_state_mp = NULL;
> + _edje_real_part_mp = NULL;
> + return 0;
> }
>
> /** Shutdown the EDJE library.
> @@ -55,6 +84,12 @@
> _edje_text_class_members_free();
> _edje_text_class_hash_free();
> _edje_box_shutdown();
> +
> + eina_mempool_del(_edje_real_part_state_mp);
> + eina_mempool_del(_edje_real_part_mp);
> + _edje_real_part_state_mp = NULL;
> + _edje_real_part_mp = NULL;
> +
> embryo_shutdown();
> ecore_job_shutdown();
> eet_shutdown();
>
> Modified: trunk/edje/src/lib/edje_private.h
> ===================================================================
> --- trunk/edje/src/lib/edje_private.h 2009-08-14 17:17:01 UTC (rev 41770)
> +++ trunk/edje/src/lib/edje_private.h 2009-08-14 17:19:42 UTC (rev 41771)
> @@ -840,11 +840,11 @@
>
> double description_pos; // 8
> Edje_Part_Description *chosen_description; // 4
> - Edje_Real_Part_State param1, param2, custom; // 60 // FIXME: custom
> should be alloced on demand - 20--
> - // WITH EDJE_CALC_CACHE: 420
> + Edje_Real_Part_State param1; // 20
> + // WITH EDJE_CALC_CACHE: 140
> + Edje_Real_Part_State *param2, *custom; // 8
>
> #ifdef EDJE_CALC_CACHE
> - Edje_Calc_Params p; // 116
> int state; // 4
> #endif
>
> @@ -862,8 +862,8 @@
> #ifdef EDJE_CALC_CACHE
> unsigned char invalidate : 1;
> #endif
> -}; // 298
> -// WITH EDJE_CALC_CACHE: 778
> +}; // 260
> +// WITH EDJE_CALC_CACHE: 400
>
> struct _Edje_Running_Program
> {
> @@ -1101,6 +1101,9 @@
> extern int _edje_freeze_val;
> extern int _edje_freeze_calc_count;
>
> +extern Eina_Mempool *_edje_real_part_mp;
> +extern Eina_Mempool *_edje_real_part_state_mp;
> +
> 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);
>
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel