Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_clip.c evas_events.c evas_object_main.c Log Message: natah's clip patch - seems to be all genki :) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_clip.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- evas_clip.c 25 Jul 2005 09:55:47 -0000 1.17 +++ evas_clip.c 29 Jul 2005 07:46:22 -0000 1.18 @@ -6,9 +6,14 @@ { int cx, cy, cw, ch, cvis, cr, cg, cb, ca; int nx, ny, nw, nh, nvis, nr, ng, nb, na; - - if (obj->layer->evas->events_frozen > 0) return; - evas_object_coords_recalc(obj); + // FIXME: This shouldn't be necessary as frozen checks should happen at a + // higher level. + // if (obj->layer->evas->events_frozen > 0) return; + + /* Skip coord recalc on smart object and invalid output */ + if ((!obj->smart.smart) && + (obj->cur.cache.geometry.validity != obj->layer->evas->output_validity)) + evas_object_coords_recalc(obj); cx = obj->cur.cache.geometry.x; cy = obj->cur.cache.geometry.y; cw = obj->cur.cache.geometry.w; ch = obj->cur.cache.geometry.h; if (obj->cur.color.a == 0) cvis = 0; @@ -64,10 +69,10 @@ { Evas_List *l; - if (obj->cur.cache.clip.dirty) + evas_object_clip_recalc(obj); + for (l = obj->clip.clipees; l; l = l->next) { - evas_object_clip_recalc(obj); - for (l = obj->clip.clipees; l; l = l->next) + if (obj->cur.cache.clip.dirty) evas_object_recalc_clippees(l->data); } } @@ -193,7 +198,8 @@ clip->clip.clipees = evas_list_append(clip->clip.clipees, obj); evas_object_change(obj); evas_object_clip_dirty(obj); - evas_object_recalc_clippees(obj); + if ((!obj->layer->evas->events_frozen) && (obj->cur.cache.clip.dirty)) + evas_object_recalc_clippees(obj); if (!obj->smart.smart) { if (evas_object_is_in_output_rect(obj, @@ -281,7 +287,8 @@ obj->cur.clipper = NULL; evas_object_change(obj); evas_object_clip_dirty(obj); - evas_object_recalc_clippees(obj); + if (!obj->layer->evas->events_frozen && obj->cur.cache.clip.dirty) + evas_object_recalc_clippees(obj); if (!obj->smart.smart) { if (evas_object_is_in_output_rect(obj, =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_events.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -3 -r1.36 -r1.37 --- evas_events.c 25 Jul 2005 09:55:47 -0000 1.36 +++ evas_events.c 29 Jul 2005 07:46:22 -0000 1.37 @@ -40,8 +40,6 @@ if (obj == stop) goto done; if ((!evas_event_passes_through(obj)) && (!obj->smart.smart)) { -// FIXME: i don't think we need this -// evas_object_clip_recalc(obj); if ((evas_object_is_in_output_rect(obj, x, y, 1, 1)) && (obj->cur.visible) && (obj->delete_me == 0) && @@ -140,8 +138,8 @@ Evas_Object *obj; obj = (Evas_Object *)l2; - evas_object_clip_recalc(obj); - evas_object_recalc_clippees(obj); + if (obj->cur.cache.clip.dirty) + evas_object_recalc_clippees(obj); } } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_main.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -3 -r1.31 -r1.32 --- evas_object_main.c 25 Jul 2005 09:55:47 -0000 1.31 +++ evas_object_main.c 29 Jul 2005 07:46:22 -0000 1.32 @@ -275,9 +275,10 @@ void evas_object_coords_recalc(Evas_Object *obj) { - if (obj->smart.smart) return; - if (obj->cur.cache.geometry.validity == obj->layer->evas->output_validity) - return; + // FIXME: Check before entering + // if (obj->smart.smart) return; + // if (obj->cur.cache.geometry.validity == obj->layer->evas->output_validity) + // return; obj->cur.cache.geometry.x = evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.x); obj->cur.cache.geometry.y = @@ -482,7 +483,6 @@ evas_object_clip_dirty(obj); if (obj->layer->evas->events_frozen != 0) { - evas_object_recalc_clippees(obj); if (!pass) { if (!obj->smart.smart) @@ -499,6 +499,8 @@ } } } + else if (obj->cur.cache.clip.dirty) + evas_object_recalc_clippees(obj); evas_object_inform_call_move(obj); } @@ -544,7 +546,6 @@ obj->cur.cache.geometry.validity = 0; evas_object_change(obj); evas_object_clip_dirty(obj); - evas_object_recalc_clippees(obj); if (obj->layer->evas->events_frozen != 0) { // if (obj->func->coords_recalc) obj->func->coords_recalc(obj); @@ -564,6 +565,8 @@ } } } + else if (obj->cur.cache.clip.dirty) + evas_object_recalc_clippees(obj); evas_object_inform_call_resize(obj); } @@ -636,7 +639,6 @@ evas_object_clip_dirty(obj); if (obj->layer->evas->events_frozen != 0) { - evas_object_recalc_clippees(obj); if (!evas_event_passes_through(obj)) { if (!obj->smart.smart) @@ -652,6 +654,8 @@ } } } + else if (obj->cur.cache.clip.dirty) + evas_object_recalc_clippees(obj); evas_object_inform_call_show(obj); } @@ -683,7 +687,6 @@ evas_object_clip_dirty(obj); if (obj->layer->evas->events_frozen != 0) { - evas_object_recalc_clippees(obj); if (!evas_event_passes_through(obj)) { if (!obj->smart.smart) @@ -731,6 +734,8 @@ } } } + else if (obj->cur.cache.clip.dirty) + evas_object_recalc_clippees(obj); evas_object_inform_call_hide(obj); } ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs