From d4e8f592bb8711754932e3ae23fb89959cc14b12 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 12 Jun 2008 13:22:26 +0000 Subject: [PATCH] fix arrya state engin issue... redraws vanishing. fixed! SVN revision: 34808 --- legacy/evas/src/lib/canvas/evas_object_main.c | 8 +------- legacy/evas/src/lib/canvas/evas_render.c | 12 ++++++------ legacy/evas/src/lib/data/evas_array.c | 2 +- legacy/evas/src/lib/include/evas_inline.x | 2 +- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/legacy/evas/src/lib/canvas/evas_object_main.c b/legacy/evas/src/lib/canvas/evas_object_main.c index 8a53dbff0e..576b948c99 100644 --- a/legacy/evas/src/lib/canvas/evas_object_main.c +++ b/legacy/evas/src/lib/canvas/evas_object_main.c @@ -79,15 +79,9 @@ evas_object_change(Evas_Object *obj) obj->layer->evas->changed = 1; if (obj->changed) return; evas_render_object_recalc(obj); - obj->changed = 1; /* set changed flag on all objects this one clips too */ for (l = obj->clip.clipees; l; l = l->next) - { - Evas_Object *o; - - o = (Evas_Object *)l->data; - evas_object_change(o); - } + evas_object_change((Evas_Object *)l->data); if (obj->smart.parent) evas_object_change(obj->smart.parent); } diff --git a/legacy/evas/src/lib/canvas/evas_render.c b/legacy/evas/src/lib/canvas/evas_render.c index 2ca4890fb6..f3c348eb78 100644 --- a/legacy/evas/src/lib/canvas/evas_render.c +++ b/legacy/evas/src/lib/canvas/evas_render.c @@ -122,6 +122,8 @@ _evas_render_phase1_object_process(Evas *e, Evas_Object *obj, Evas_Array *active _evas_array_append(active_objects, obj); if (restack) { + if (!obj->changed) + _evas_array_append(&e->pending_objects, obj); obj->restack = 1; obj->changed = 1; clean_them = 1; @@ -309,10 +311,8 @@ Evas_Bool pending_change(void *data, void *gdata) Evas_Object *obj; obj = data; - if (obj->delete_me) return 0; - - return obj->changed ? 1 : 0; + return obj->changed; } static Evas_List * @@ -715,16 +715,16 @@ evas_render_object_recalc(Evas_Object *obj) return; MAGIC_CHECK_END(); - if (!obj->changed && obj->delete_me < 2) + if ((!obj->changed) && (obj->delete_me < 2)) { Evas *e; e = obj->layer->evas; if (!e || e->cleanup) return ; + if (!obj->changed) + _evas_array_append(&e->pending_objects, obj); obj->changed = 1; - - _evas_array_append(&e->pending_objects, obj); } } diff --git a/legacy/evas/src/lib/data/evas_array.c b/legacy/evas/src/lib/data/evas_array.c index 95ea6d970c..7fc33199ce 100644 --- a/legacy/evas/src/lib/data/evas_array.c +++ b/legacy/evas/src/lib/data/evas_array.c @@ -86,7 +86,7 @@ evas_array_remove(Evas_Array *array, Evas_Bool (*keep)(void *data, void *gdata), tmp = malloc(sizeof (void*) * array->total); if (!tmp) return ; - for (i = 0; i < array->count; ++i) + for (i = 0; i < array->count; i++) { void *data; diff --git a/legacy/evas/src/lib/include/evas_inline.x b/legacy/evas/src/lib/include/evas_inline.x index 1f2e24d03e..4334c83eb9 100644 --- a/legacy/evas/src/lib/include/evas_inline.x +++ b/legacy/evas/src/lib/include/evas_inline.x @@ -161,7 +161,7 @@ evas_object_clip_recalc(Evas_Object *obj) static inline void _evas_array_append(Evas_Array *array, void *data) { - if (UNLIKELY(array->count + array->step > array->total)) + if (UNLIKELY((array->count + array->step) > array->total)) if (!_evas_array_grow(array)) return ; array->data[array->count++] = data;