Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_render.c Log Message: actually dont delay so long in deleting objects. make it happen sooner =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_render.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- evas_render.c 16 Nov 2006 03:20:24 -0000 1.21 +++ evas_render.c 16 Jan 2007 10:17:10 -0000 1.22 @@ -2,7 +2,7 @@ #include "evas_private.h" static Evas_List * -evas_render_updates_internal(Evas *e, unsigned char make_updates); +evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char do_draw); /** * To be documented. @@ -69,12 +69,16 @@ static void -_evas_render_phase1_object_process(Evas *e, Evas_Object *obj, Evas_List **active_objects, Evas_List **restack_objects, int restack) +_evas_render_phase1_object_process(Evas *e, Evas_Object *obj, Evas_List **active_objects, Evas_List **restack_objects, Evas_List **delete_objects, int restack) { int is_active; /* if (obj->cur.cache.clip.dirty) */ evas_object_clip_recalc(obj); + /* because of clip objects - delete 2 cycles later */ + if (obj->delete_me == 2) + *delete_objects = evas_list_append(*delete_objects, obj); + else if (obj->delete_me != 0) obj->delete_me++; /* build active object list */ is_active = evas_object_is_active(obj); if ((is_active) || (obj->delete_me != 0)) @@ -99,6 +103,7 @@ _evas_render_phase1_object_process(e, obj2, active_objects, restack_objects, + delete_objects, obj->restack); } } @@ -133,6 +138,7 @@ _evas_render_phase1_object_process(e, obj2, active_objects, restack_objects, + delete_objects, restack); } } @@ -152,7 +158,7 @@ } static void -_evas_render_phase1_process(Evas *e, Evas_List **active_objects, Evas_List **restack_objects) +_evas_render_phase1_process(Evas *e, Evas_List **active_objects, Evas_List **restack_objects, Evas_List **delete_objects) { Evas_Object_List *l; @@ -167,13 +173,15 @@ Evas_Object *obj; obj = (Evas_Object *)l2; - _evas_render_phase1_object_process(e, obj, active_objects, restack_objects, 0); + _evas_render_phase1_object_process(e, obj, active_objects, + restack_objects, + delete_objects, 0); } } } static Evas_List * -evas_render_updates_internal(Evas *e, unsigned char make_updates) +evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char do_draw) { Evas_List *updates = NULL; Evas_List *obscuring_objects = NULL; @@ -192,7 +200,7 @@ if (!e->changed) return NULL; /* phase 1. add extra updates for changed objects */ - _evas_render_phase1_process(e, &active_objects, &restack_objects); + _evas_render_phase1_process(e, &active_objects, &restack_objects, &delete_objects); /* phase 2. force updates for restacks */ while (restack_objects) { @@ -325,7 +333,7 @@ obj->cur.cache.clip.y + off_y, obj->cur.cache.clip.w, obj->cur.cache.clip.h); - if ((w > 0) && (h > 0)) + if ((w > 0) && (h > 0) && (do_draw)) { e->engine.func->context_clip_set(e->engine.data.output, e->engine.data.context, @@ -372,17 +380,19 @@ obj = (Evas_Object *)(ll->data); obj->pre_render_done = 0; - if (obj->changed) + if ((obj->changed) && (do_draw)) { obj->func->render_post(obj); obj->restack = 0; obj->changed = 0; } +/* moved to other pre-process phase 1 if (obj->delete_me == 2) { delete_objects = evas_list_append(delete_objects, obj); } else if (obj->delete_me != 0) obj->delete_me++; + */ } /* free our obscuring object list */ evas_list_free(obscuring_objects_orig); @@ -436,7 +446,7 @@ MAGIC_CHECK_END(); if (!e->changed) return NULL; - return evas_render_updates_internal(e, 1); + return evas_render_updates_internal(e, 1, 1); } /** @@ -453,5 +463,23 @@ MAGIC_CHECK_END(); if (!e->changed) return; - evas_render_updates_internal(e, 0); + evas_render_updates_internal(e, 0, 1); +} + +/** + * To be documented. + * + * FIXME: To be fixed. + * + */ +EAPI void +evas_norender(Evas *e) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + +// if (!e->changed) return; + evas_render_updates_internal(e, 0, 0); } + ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs