Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/edje
Dir : e17/libs/edje/src/lib Modified Files: edje_calc.c Log Message: Avoid useless huge implicit memcpy. The "simple" block: p3 = p1; was doing an implicity memcpy() responsible for about 1% of processing time when no animation happens. Patch by Cedric BAIL. =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_calc.c,v retrieving revision 1.115 retrieving revision 1.116 diff -u -3 -r1.115 -r1.116 --- edje_calc.c 21 Feb 2008 18:35:27 -0000 1.115 +++ edje_calc.c 27 Feb 2008 14:27:10 -0000 1.116 @@ -1288,7 +1288,7 @@ static void _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) { - Edje_Calc_Params p1, p2, p3; + Edje_Calc_Params p1, p2, p3, *pf; Edje_Part_Description *chosen_desc; double pos = 0.0; @@ -1421,16 +1421,15 @@ p3.gradient.id = pos > 0.5 ? p2.gradient.id : p1.gradient.id; p3.gradient.type = pos > 0.5 ? p2.gradient.type : p1.gradient.type; + + pf = &p3; } else { - p3 = p1; + pf = &p1; } - ep->req.x = p3.req.x; - ep->req.y = p3.req.y; - ep->req.w = p3.req.w; - ep->req.h = p3.req.h; + ep->req = pf->req; if (ep->drag.need_reset) { @@ -1455,18 +1454,18 @@ case EDJE_PART_TYPE_TEXTBLOCK: case EDJE_PART_TYPE_GRADIENT: evas_object_color_set(ep->object, - (p3.color.r * p3.color.a) / 255, - (p3.color.g * p3.color.a) / 255, - (p3.color.b * p3.color.a) / 255, - p3.color.a); - if (p3.visible) evas_object_show(ep->object); + (pf->color.r * pf->color.a) / 255, + (pf->color.g * pf->color.a) / 255, + (pf->color.b * pf->color.a) / 255, + pf->color.a); + if (pf->visible) evas_object_show(ep->object); else evas_object_hide(ep->object); /* move and resize are needed for all previous object => no break here. */ case EDJE_PART_TYPE_SWALLOW: case EDJE_PART_TYPE_GROUP: /* visibility and color have no meaning on SWALLOW and GROUP part. */ - evas_object_move(ep->object, ed->x + p3.x, ed->y + p3.y); - evas_object_resize(ep->object, p3.w, p3.h); + evas_object_move(ep->object, ed->x + pf->x, ed->y + pf->y); + evas_object_resize(ep->object, pf->w, pf->h); break; case EDJE_PART_TYPE_TEXT: /* This is correctly handle in _edje_text_recalc_apply at the moment. */ @@ -1477,13 +1476,13 @@ switch (ep->part->type) { case EDJE_PART_TYPE_TEXT: - _edje_text_recalc_apply(ed, ep, &p3, chosen_desc); + _edje_text_recalc_apply(ed, ep, pf, chosen_desc); break; case EDJE_PART_TYPE_IMAGE: - _edje_image_recalc_apply(ed, ep, &p3, chosen_desc, pos); + _edje_image_recalc_apply(ed, ep, pf, chosen_desc, pos); break; case EDJE_PART_TYPE_GRADIENT: - _edje_gradient_recalc_apply(ed, ep, &p3, chosen_desc); + _edje_gradient_recalc_apply(ed, ep, pf, chosen_desc); break; case EDJE_PART_TYPE_RECTANGLE: case EDJE_PART_TYPE_SWALLOW: @@ -1500,21 +1499,21 @@ //// done via the clipper anyway. this created bugs when objects had their //// colro set and were swallowed - then had their color changed. // evas_object_color_set(ep->swallowed_object, -// (p3.color.r * p3.color.a) / 255, -// (p3.color.g * p3.color.a) / 255, -// (p3.color.b * p3.color.a) / 255, -// p3.color.a); - evas_object_move(ep->swallowed_object, ed->x + p3.x, ed->y + p3.y); - evas_object_resize(ep->swallowed_object, p3.w, p3.h); - if (p3.visible) evas_object_show(ep->swallowed_object); +// (pf->color.r * pf->color.a) / 255, +// (pf->color.g * pf->color.a) / 255, +// (pf->color.b * pf->color.a) / 255, +// pf->color.a); + evas_object_move(ep->swallowed_object, ed->x + pf->x, ed->y + pf->y); + evas_object_resize(ep->swallowed_object, pf->w, pf->h); + if (pf->visible) evas_object_show(ep->swallowed_object); else evas_object_hide(ep->swallowed_object); } } - ep->x = p3.x; - ep->y = p3.y; - ep->w = p3.w; - ep->h = p3.h; + ep->x = pf->x; + ep->y = pf->y; + ep->w = pf->w; + ep->h = pf->h; ep->calculated |= flags; ep->calculating = FLAG_NONE; ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs