From: raster Date: Thu, 19 Nov 2009 08:37:22 +0000 (+0000) Subject: 0x0 smarts will no be rendered again - well children will be... but its still X-Git-Tag: accepted/2.0/20130306.225542~242^2~2173 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=497188e7682439f6b6556ad4999a02681ad3e97e;p=profile%2Fivi%2Fevas.git 0x0 smarts will no be rendered again - well children will be... but its still bad form to do this. oddly - the desktop panning in e does this. need to check. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@43799 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/canvas/evas_render.c b/src/lib/canvas/evas_render.c index 393628e..d034da3 100644 --- a/src/lib/canvas/evas_render.c +++ b/src/lib/canvas/evas_render.c @@ -126,8 +126,7 @@ static Eina_Bool _evas_render_has_map(Evas_Object *obj) { return ((!((obj->func->can_map) && (obj->func->can_map(obj)))) && - ((obj->cur.map) && (obj->cur.map->count == 4) && - (obj->cur.usemap))); + ((obj->cur.map) && (obj->cur.usemap))); } static Eina_Bool @@ -258,6 +257,14 @@ _evas_render_phase1_object_process(Evas *e, Evas_Object *obj, RD(" [--- PROCESS [%p] '%s' active = %i, del = %i | %i %i %ix%i\n", obj, obj->type, is_active, obj->delete_me, obj->cur.geometry.x, obj->cur.geometry.y, obj->cur.geometry.w, obj->cur.geometry.h); if ((is_active) || (obj->delete_me != 0)) eina_array_push(active_objects, obj); + +#ifdef REND_DGB + if (!is_active) + { + RDI(level); + RD(" [%p] vis: %i, cache.clip.vis: %i cache.clip.a: %i [%p]\n", obj, obj->cur.visible, obj->cur.cache.clip.visible, obj->cur.cache.clip.a, obj->func->is_visible); + } +#endif if (_evas_render_has_map(obj)) map = 1; diff --git a/src/lib/include/evas_inline.x b/src/lib/include/evas_inline.x index 70a9beb..543a6a8 100644 --- a/src/lib/include/evas_inline.x +++ b/src/lib/include/evas_inline.x @@ -81,7 +81,7 @@ static inline int evas_object_is_visible(Evas_Object *obj) { if ((obj->cur.visible) && - (obj->cur.cache.clip.visible) && + ((obj->cur.cache.clip.visible) || (obj->smart.smart)) && (obj->cur.cache.clip.a > 0)) { if (obj->func->is_visible) @@ -119,12 +119,28 @@ evas_object_is_in_output_rect(Evas_Object *obj, int x, int y, int w, int h) static inline int evas_object_is_active(Evas_Object *obj) { - if ((evas_object_is_visible(obj) || evas_object_was_visible(obj)) && - (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w, - obj->layer->evas->output.h) || - evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w, - obj->layer->evas->output.h))) - return 1; + if (evas_object_is_visible(obj) || evas_object_was_visible(obj)) + { + if (obj->smart.smart) + { + int mapsmt = 0; + if (obj->smart.smart && (obj->cur.map && obj->cur.usemap)) mapsmt = 1; + if (!mapsmt) return 1; + if (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w, + obj->layer->evas->output.h) || + evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w, + obj->layer->evas->output.h)) + return 1; + } + else + { + if (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w, + obj->layer->evas->output.h) || + evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w, + obj->layer->evas->output.h)) + return 1; + } + } return 0; }