evas/map - Fixed the map surface to be updated properly.
authorChunEon Park <hermet@hermet.pe.kr>
Tue, 15 Oct 2013 13:24:27 +0000 (22:24 +0900)
committerChunEon Park <hermet@hermet.pe.kr>
Tue, 15 Oct 2013 13:24:27 +0000 (22:24 +0900)
By tranversing the whole of the map target's tree,
it decides to update the map surface to be redrawn if one of the objects is changed except the clipper itself.

ChangeLog
NEWS
src/lib/evas/canvas/evas_object_smart.c

index 3b93761..aaf58a1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2013-10-15  ChunEon Park (Hermet)
 
+        * Fixed the map surface to be updated properly. By tranversing the 
+        whole of the map target's tree, it decides to update the map
+        surface to be redrawn if one of the objects is changed except the
+        clipper itself.
+
+2013-10-15  ChunEon Park (Hermet)
+
         * Fixed memory leak in the edje map color transition.
 
 2013-10-11  Carsten Haitzler (The Rasterman)
diff --git a/NEWS b/NEWS
index 9693b0d..000fe0d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -356,6 +356,8 @@ Fixes:
      - Skip the map rendering if all points are transparent.
      - Evas bidi: Fixed a bug causing BiDi not to work in some cases.
      - Evas textblock: fixed an issue with markup_get and markup_to_utf8 behaving differently (markup_get was misbehaving).
+     - Fixed the map surface to be updated properly. By tranversing the whole of the map target's tree, it decides to update the map surface to be redrawn if one of the objects is changed except the clipper itself.
+
     * Ecore:
      - Don't leak fd on exec.
      - Fix fd handler increase issue when ecore_pipe_add/del is called repeatedly.
index 8f156c0..dc3ae11 100644 (file)
@@ -1221,13 +1221,15 @@ _smart_members_changed_check(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
 {
    Evas_Object_Protected_Data *o2;
 
-   if (!obj->changed) return EINA_FALSE;
-   if (!obj->smart.smart) return EINA_TRUE;
-
    if (!evas_object_is_visible(eo_obj, obj) &&
        !evas_object_was_visible(eo_obj, obj))
      return EINA_FALSE;
 
+   if (!obj->smart.smart)
+     {
+        if (obj->changed && !obj->clip.clipees) return EINA_TRUE;
+        return EINA_FALSE;
+     }
    if (_evas_render_has_map(eo_obj, obj))
      {
         if (((obj->changed_pchange) && (obj->changed_map)) ||
@@ -1246,7 +1248,12 @@ 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;
 
-   if (!obj->is_smart) return obj->changed;
+   if (!obj->is_smart)
+     {
+        if (obj->changed && !obj->clip.clipees) return EINA_TRUE;
+        else return EINA_FALSE;
+     }
+
    if (obj->changed_color) return EINA_TRUE;
 
    EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), o2)