fix arrya state engin issue... redraws vanishing. fixed!

SVN revision: 34808
This commit is contained in:
Carsten Haitzler 2008-06-12 13:22:26 +00:00
parent 8bd0e92e81
commit d4e8f592bb
4 changed files with 9 additions and 15 deletions

View File

@ -79,15 +79,9 @@ evas_object_change(Evas_Object *obj)
obj->layer->evas->changed = 1; obj->layer->evas->changed = 1;
if (obj->changed) return; if (obj->changed) return;
evas_render_object_recalc(obj); evas_render_object_recalc(obj);
obj->changed = 1;
/* set changed flag on all objects this one clips too */ /* set changed flag on all objects this one clips too */
for (l = obj->clip.clipees; l; l = l->next) for (l = obj->clip.clipees; l; l = l->next)
{ evas_object_change((Evas_Object *)l->data);
Evas_Object *o;
o = (Evas_Object *)l->data;
evas_object_change(o);
}
if (obj->smart.parent) evas_object_change(obj->smart.parent); if (obj->smart.parent) evas_object_change(obj->smart.parent);
} }

View File

@ -122,6 +122,8 @@ _evas_render_phase1_object_process(Evas *e, Evas_Object *obj, Evas_Array *active
_evas_array_append(active_objects, obj); _evas_array_append(active_objects, obj);
if (restack) if (restack)
{ {
if (!obj->changed)
_evas_array_append(&e->pending_objects, obj);
obj->restack = 1; obj->restack = 1;
obj->changed = 1; obj->changed = 1;
clean_them = 1; clean_them = 1;
@ -309,10 +311,8 @@ Evas_Bool pending_change(void *data, void *gdata)
Evas_Object *obj; Evas_Object *obj;
obj = data; obj = data;
if (obj->delete_me) return 0; if (obj->delete_me) return 0;
return obj->changed;
return obj->changed ? 1 : 0;
} }
static Evas_List * static Evas_List *
@ -715,16 +715,16 @@ evas_render_object_recalc(Evas_Object *obj)
return; return;
MAGIC_CHECK_END(); MAGIC_CHECK_END();
if (!obj->changed && obj->delete_me < 2) if ((!obj->changed) && (obj->delete_me < 2))
{ {
Evas *e; Evas *e;
e = obj->layer->evas; e = obj->layer->evas;
if (!e || e->cleanup) return ; if (!e || e->cleanup) return ;
if (!obj->changed)
_evas_array_append(&e->pending_objects, obj);
obj->changed = 1; obj->changed = 1;
_evas_array_append(&e->pending_objects, obj);
} }
} }

View File

@ -86,7 +86,7 @@ evas_array_remove(Evas_Array *array, Evas_Bool (*keep)(void *data, void *gdata),
tmp = malloc(sizeof (void*) * array->total); tmp = malloc(sizeof (void*) * array->total);
if (!tmp) return ; if (!tmp) return ;
for (i = 0; i < array->count; ++i) for (i = 0; i < array->count; i++)
{ {
void *data; void *data;

View File

@ -161,7 +161,7 @@ evas_object_clip_recalc(Evas_Object *obj)
static inline void static inline void
_evas_array_append(Evas_Array *array, void *data) _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 ; if (!_evas_array_grow(array)) return ;
array->data[array->count++] = data; array->data[array->count++] = data;