hermet pushed a commit to branch master.
commit 5f4ae9abeb191cff54d6f03b258e4eaaba1e4099
Author: ChunEon Park <[email protected]>
Date: Tue Jul 2 15:28:56 2013 +0900
evas/render - refactoring about checking smart member changed.
move those code to the evas_object_smart.
---
src/lib/evas/canvas/evas_object_smart.c | 44 +++++++++++++++++++++++++++++++++
src/lib/evas/canvas/evas_render.c | 36 ++-------------------------
src/lib/evas/include/evas_private.h | 1 +
3 files changed, 47 insertions(+), 34 deletions(-)
diff --git a/src/lib/evas/canvas/evas_object_smart.c
b/src/lib/evas/canvas/evas_object_smart.c
index 7a002ba..2532746 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -1125,6 +1125,50 @@ _smart_changed(Eo *eo_obj, void *_pd EINA_UNUSED,
va_list *list EINA_UNUSED)
eo_do(eo_obj, evas_obj_smart_need_recalculate_set(1));
}
+static Eina_Bool
+_smart_members_changed_check(Evas_Object *eo_obj, Evas_Object_Protected_Data
*obj)
+{
+ Evas_Object_Protected_Data *o2;
+
+ if (!evas_object_is_visible(eo_obj, obj) &&
+ !evas_object_was_visible(eo_obj, obj))
+ return EINA_FALSE;
+
+ if (!obj->smart.smart) return EINA_TRUE;
+ if (_evas_render_has_map(eo_obj, obj))
+ {
+ if (((obj->changed_pchange) && (obj->changed_map)) ||
+ (obj->changed_color)) return EINA_TRUE;
+ }
+
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), o2)
+ {
+ if (!o2->changed) continue;
+ if (_smart_members_changed_check(o2->object, o2)) return EINA_TRUE;
+ }
+
+ return EINA_FALSE;
+}
+
+Eina_Bool
+evas_object_smart_changed_get(Evas_Object *eo_obj)
+{
+ Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Protected_Data *o2;
+ Eina_Bool changed = EINA_FALSE;
+
+ if (!obj->is_smart) return obj->changed;
+ if (obj->changed_color) return EINA_TRUE;
+
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), o2)
+ {
+ if (!o2->changed) continue;
+ changed = _smart_members_changed_check(o2->object, o2);
+ if (changed) break;
+ }
+ return changed;
+}
+
void
evas_object_smart_del(Evas_Object *eo_obj)
{
diff --git a/src/lib/evas/canvas/evas_render.c
b/src/lib/evas/canvas/evas_render.c
index 72a3028..313c6d4 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -976,28 +976,6 @@ _evas_render_can_use_overlay(Evas_Public_Data *e,
Evas_Object *eo_obj)
}
Eina_Bool
-_smart_members_changed_check(Evas_Object *eo_obj, Evas_Object_Protected_Data
*obj)
-{
- Evas_Object_Protected_Data *o2;
-
- if (!evas_object_is_visible(eo_obj, obj) &&
- !evas_object_was_visible(eo_obj, obj))
- return EINA_FALSE;
-
- if (!obj->smart.smart) return EINA_TRUE;
- if (obj->changed_color) return EINA_TRUE;
- if ((obj->changed_pchange) && (obj->changed_map)) return EINA_TRUE;
-
- EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), o2)
- {
- if (!o2->changed) continue;
- if (_smart_members_changed_check(o2->object, o2)) return EINA_TRUE;
- }
-
- return EINA_FALSE;
-}
-
-Eina_Bool
evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
Evas_Object_Protected_Data *obj, void *context,
void *surface, int off_x, int off_y, int mapped, int ecx,
@@ -1013,6 +991,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object
*eo_obj,
Eina_Bool clean_them = EINA_FALSE;
Eina_Bool proxy_src_clip = EINA_TRUE;
+ //Don't Render if the source is invisible.
if (!proxy_render_data)
{
if ((evas_object_is_source_invisible(eo_obj, obj)))
@@ -1122,18 +1101,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object
*eo_obj,
if (!changed)
{
if (obj->is_smart)
- {
- Evas_Object_Protected_Data *o2;
-
- EINA_INLIST_FOREACH(
- evas_object_smart_members_get_direct(eo_obj), o2)
- {
- if (!o2->changed) continue;
- changed = _smart_members_changed_check(o2->object, o2);
- if (changed) break;
- }
- if (obj->changed_color) changed = EINA_TRUE;
- }
+ changed = evas_object_smart_changed_get(eo_obj);
else if (obj->changed)
{
if (((obj->changed_pchange) && (obj->changed_map)) ||
diff --git a/src/lib/evas/include/evas_private.h
b/src/lib/evas/include/evas_private.h
index 855a130..76c557a 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -991,6 +991,7 @@ void _evas_object_smart_members_all_del(Evas_Object *obj);
void evas_call_smarts_calculate(Evas *e);
void evas_object_smart_bounding_box_update(Evas_Object *eo_obj,
Evas_Object_Protected_Data *obj);
void evas_object_smart_need_bounding_box_update(Evas_Object *obj);
+Eina_Bool evas_object_smart_changed_get(Evas_Object *eo_obj);
void *evas_mem_calloc(int size);
void _evas_post_event_callback_call(Evas *e, Evas_Public_Data* e_pd);
void _evas_post_event_callback_free(Evas *e);
--
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev