Enlightenment CVS committal Author : cedric Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_render.c Log Message: Cleanly handle evas_object_release. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_render.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -3 -r1.31 -r1.32 --- evas_render.c 12 Jun 2008 13:22:26 -0000 1.31 +++ evas_render.c 17 Jun 2008 09:04:12 -0000 1.32 @@ -244,53 +244,62 @@ obj = _evas_array_get(pending_objects, i); + if (!obj->layer) goto clean_stuff; + evas_object_clip_recalc(obj); is_active = evas_object_is_active(obj); - if (!is_active && !obj->is_active && !obj->render_pre && !obj->rect_del) - ok = 1; - else - if (obj->is_active == is_active) - { - if (obj->changed) - { - if (obj->smart.smart) + if (!is_active && + !obj->is_active && + !obj->render_pre && + !obj->rect_del) + { + ok = 1; + goto clean_stuff; + } + + if (obj->is_active == is_active) + { + if (obj->changed) + { + if (obj->smart.smart) + { + if (obj->render_pre + || obj->rect_del) + ok = 1; + } + else + if ((is_active) && (obj->restack) && (!obj->clip.clipees) && + ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) || + (evas_object_was_visible(obj) && (!obj->prev.have_clipees)))) { - if (obj->render_pre - || obj->rect_del) + if (!(obj->render_pre + || obj->rect_del)) ok = 1; } else - if ((is_active) && (obj->restack) && (!obj->clip.clipees) && + if (is_active && (!obj->clip.clipees) && ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) || (evas_object_was_visible(obj) && (!obj->prev.have_clipees)))) { - if (!(obj->render_pre - || obj->rect_del)) + if (obj->render_pre + || obj->rect_del) ok = 1; } - else - if (is_active && (!obj->clip.clipees) && - ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) || - (evas_object_was_visible(obj) && (!obj->prev.have_clipees)))) - { - if (obj->render_pre - || obj->rect_del) - ok = 1; - } - } - else - { - if ((!obj->clip.clipees) && (obj->delete_me == 0) && - (!obj->cur.have_clipees || (evas_object_was_visible(obj) && (!obj->prev.have_clipees))) - && evas_object_is_opaque(obj) && evas_object_is_visible(obj)) - if (obj->rect_del || obj->smart.smart) - { - ok = 1; - } - } - } + } + else + { + if ((!obj->clip.clipees) && (obj->delete_me == 0) && + (!obj->cur.have_clipees || (evas_object_was_visible(obj) && (!obj->prev.have_clipees))) + && evas_object_is_opaque(obj) && evas_object_is_visible(obj)) + if (obj->rect_del || obj->smart.smart) + { + ok = 1; + } + } + } + clean_stuff: if (!ok) { evas_array_clean(&e->active_objects); @@ -311,7 +320,8 @@ Evas_Object *obj; obj = data; - if (obj->delete_me) return 0; + if (!obj->layer) obj->changed = 0; + if (obj->delete_me) obj->changed = 0; return obj->changed; } ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs