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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs