Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje
Dir : e17/libs/edje/src/lib Modified Files: edje_calc.c edje_load.c edje_match.c Log Message: cedric small speedups patches for edje back in - minus the ones that break things. (0004). =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_calc.c,v retrieving revision 1.125 retrieving revision 1.126 diff -u -3 -r1.125 -r1.126 --- edje_calc.c 3 Apr 2008 19:27:53 -0000 1.125 +++ edje_calc.c 10 Apr 2008 08:58:19 -0000 1.126 @@ -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) { =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_load.c,v retrieving revision 1.123 retrieving revision 1.124 diff -u -3 -r1.123 -r1.124 --- edje_load.c 3 Apr 2008 19:27:53 -0000 1.123 +++ edje_load.c 10 Apr 2008 08:58:19 -0000 1.124 @@ -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.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- edje_match.c 3 Apr 2008 19:27:53 -0000 1.5 +++ edje_match.c 10 Apr 2008 08:58:19 -0000 1.6 @@ -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; ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs