Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje
Dir : e17/libs/edje/src/lib Modified Files: edje_calc.c edje_callbacks.c edje_load.c edje_match.c Log Message: 1. cedrics patches for speedups. they breka nothing. 2. fix mouse in/out and other event flags stuff again. =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_calc.c,v retrieving revision 1.123 retrieving revision 1.124 diff -u -3 -r1.123 -r1.124 --- edje_calc.c 31 Mar 2008 21:38:51 -0000 1.123 +++ edje_calc.c 3 Apr 2008 18:18:36 -0000 1.124 @@ -1114,6 +1114,61 @@ } } +static int +_edje_nitoa_rec(char *string, int len, unsigned int value) +{ + const char *array = "0123456789"; + int length; + int quotient; + int modulo; + + if (len <= 0) return 0; + if (value == 0) return 0; + + quotient = value / 10; + modulo = value % 10; + + length = _edje_nitoa_rec(string, len - 1, quotient); + + if (length + 1 > len) return length; + + string[length] = array[modulo]; + + return length + 1; +} + +static int +_edje_nitoa(char *string, int len, int value) +{ + int length; + + if (len <= 0) return 0; + if (len == 1) + { + *string = '\0'; + return 1; + } + + if (value < 0) + { + *string = '-'; + + ++string; + --len; + } + + if (value == 0) + { + strncpy(string, "0", len); + return 1; + } + + length = _edje_nitoa_rec(string, len, value); + string[length] = '\0'; + + return length; +} + static void _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description *chosen_desc, double pos) { @@ -1173,7 +1228,11 @@ } else { - snprintf(buf, sizeof(buf), "images/%i", image_id); + /* Replace snprint("images/%i") == memcpy + itoa */ +#define IMAGES "images/" + memcpy(buf, IMAGES, strlen(IMAGES)); + _edje_nitoa(buf + strlen(IMAGES), sizeof(buf) - strlen(IMAGES), image_id); + evas_object_image_file_set(ep->object, ed->file->path, buf); if (evas_object_image_load_error_get(ep->object) != EVAS_LOAD_ERROR_NONE) { @@ -1391,8 +1450,12 @@ (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); + if (!pf->visible) + { + evas_object_hide(ep->object); + break; + } + evas_object_show(ep->object); /* move and resize are needed for all previous object => no break here. */ case EDJE_PART_TYPE_SWALLOW: case EDJE_PART_TYPE_GROUP: @@ -1436,10 +1499,14 @@ // (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); + if (pf->visible) + { + evas_object_show(ep->swallowed_object); + evas_object_move(ep->swallowed_object, ed->x + pf->x, ed->y + pf->y); + evas_object_resize(ep->swallowed_object, pf->w, pf->h); + } + else + evas_object_hide(ep->swallowed_object); } } =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_callbacks.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- edje_callbacks.c 1 Apr 2008 21:33:17 -0000 1.27 +++ edje_callbacks.c 3 Apr 2008 18:18:36 -0000 1.28 @@ -34,7 +34,9 @@ ev = event_info; ed = data; rp = evas_object_data_get(obj, "real_part"); - if (!rp || !(rp->part->ignore_flags & ev->event_flags)) return; + if ((!rp) || + ((ev->event_flags) && + (!(rp->part->ignore_flags & ev->event_flags)))) return; _edje_emit(ed, "mouse,in", rp->part->name); return; e = NULL; @@ -50,7 +52,9 @@ ev = event_info; ed = data; rp = evas_object_data_get(obj, "real_part"); - if (!rp || !(rp->part->ignore_flags & ev->event_flags)) return; + if ((!rp) || + ((ev->event_flags) && + (!(rp->part->ignore_flags & ev->event_flags)))) return; _edje_emit(ed, "mouse,out", rp->part->name); return; e = NULL; @@ -75,7 +79,7 @@ _edje_ref(ed); _edje_freeze(ed); - if (!ignored) + if ((ev->event_flags) && (!ignored)) { if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK) snprintf(buf, sizeof(buf), "mouse,down,%i,triple", ev->button); @@ -187,7 +191,7 @@ _edje_ref(ed); _edje_freeze(ed); - if (!ignored) + if ((ev->event_flags) && (!ignored)) { snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button); _edje_emit(ed, buf, rp->part->name); @@ -249,7 +253,7 @@ ignored = rp->part->ignore_flags & ev->event_flags; _edje_ref(ed); - if (!ignored) + if ((ev->event_flags) && (!ignored)) _edje_emit(ed, "mouse,move", rp->part->name); if (rp->still_in) @@ -319,7 +323,9 @@ ev = event_info; ed = data; rp = evas_object_data_get(obj, "real_part"); - if (!rp || !(rp->part->ignore_flags & ev->event_flags)) return; + if ((!rp) || + ((ev->event_flags) && + (!(rp->part->ignore_flags & ev->event_flags)))) return; snprintf(buf, sizeof(buf), "mouse,wheel,%i,%i", ev->direction, (ev->z < 0) ? (-1) : (1)); _edje_emit(ed, buf, rp->part->name); =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_load.c,v retrieving revision 1.121 retrieving revision 1.122 diff -u -3 -r1.121 -r1.122 --- edje_load.c 24 Mar 2008 08:22:01 -0000 1.121 +++ edje_load.c 3 Apr 2008 18:18:36 -0000 1.122 @@ -1002,14 +1002,24 @@ static void _cb_signal_repeat(void *data, Evas_Object *obj, const char *signal, const char *source) { - Evas_Object *parent; - Edje *ed; - char new_src[4096]; /* XXX is this max reasonable? */ + Evas_Object *parent; + Edje *ed; + char new_src[4096]; /* XXX is this max reasonable? */ + int length_parent; + int length_source; parent = data; ed = _edje_fetch(obj); if (!ed) return; - snprintf(new_src, sizeof(new_src), "%s%c%s", ed->parent, - EDJE_PART_PATH_SEPARATOR, source); + /* Replace snprint("%s%c%s") == memcpy + *new_src + memcat */ + length_parent = strlen(ed->parent); + length_source = strlen(source); + if (length_source + length_parent + 2 > sizeof(new_src)) + return ; + + memcpy(new_src, ed->parent, length_parent); + new_src[length_parent] = EDJE_PART_PATH_SEPARATOR; + memcpy(new_src + length_parent + 1, source, length_source + 1); + edje_object_signal_emit(parent, signal, new_src); } =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_match.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- edje_match.c 26 Feb 2008 20:12:00 -0000 1.3 +++ edje_match.c 3 Apr 2008 18:18:36 -0000 1.4 @@ -95,7 +95,7 @@ { const size_t i = idx * (patterns_max_length + 1) + pos; - if (list->has[i]) return; + if (list->size > i && list->has[i]) return; list->has[i] = 1; } @@ -103,6 +103,7 @@ list->states[i].idx = idx; list->states[i].pos = pos; + list->has[i] = 0; ++list->size; } @@ -112,7 +113,6 @@ size_t patterns_max_length) { list->size = 0; - memset(list->has, 0, patterns_size * (patterns_max_length + 1) * sizeof (*list->has)); } /* Token manipulation. */ @@ -232,9 +232,6 @@ states->size = patterns_size; - memset(states->has, - 0, - patterns_size * (patterns_max_length + 1) * sizeof (*states->has)); for (i = 0; i < patterns_size; ++i) { states->states[i].idx = i; ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs