evas/evas_render - and should update the mapped objects when their color is changed...
authorhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 18 May 2012 07:17:34 +0000 (07:17 +0000)
committerChunEon Park <chuneon.park@samsung.com>
Mon, 21 May 2012 02:00:27 +0000 (11:00 +0900)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@71226 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_object_main.c
src/lib/canvas/evas_render.c
src/lib/include/evas_private.h

index 9f7195b..a755b87 100644 (file)
@@ -35,6 +35,7 @@ evas_object_change_reset(Evas_Object *obj)
 {
    obj->changed = EINA_FALSE;
    obj->changed_move = EINA_FALSE;
+   obj->changed_color = EINA_FALSE;
    obj->changed_map = EINA_FALSE;
    obj->changed_pchange = EINA_FALSE;
 }
@@ -94,7 +95,6 @@ evas_object_change(Evas_Object *obj)
 
      if (obj->changed) return;
 
-//   obj->changed = EINA_TRUE;
    evas_render_object_recalc(obj);
    /* set changed flag on all objects this one clips too */
    if (!((movch) && (obj->is_static_clip)))
@@ -1078,8 +1078,10 @@ evas_object_color_set(Evas_Object *obj, int r, int g, int b, int a)
    obj->cur.color.g = g;
    obj->cur.color.b = b;
    evas_object_clip_dirty(obj);
+
    if ((obj->cur.color.a == 0) && (a == 0) && (obj->cur.render_op == EVAS_RENDER_BLEND)) return;
    obj->cur.color.a = a;
+   obj->changed_color = EINA_TRUE;
    evas_object_change(obj);
 }
 
index b1ade0b..75cde70 100644 (file)
@@ -933,16 +933,15 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
                        break;
                     }
                }
+             if (obj->changed_color) changed = EINA_TRUE;
              evas_object_change_reset(obj);
           }
-        else
+        else if (obj->changed)
           {
-             if (obj->changed)
-               {
-                  if ((obj->changed_pchange) && (obj->changed_map))
-                    changed = EINA_TRUE;
-                  evas_object_change_reset(obj);
-               }
+             if (((obj->changed_pchange) && (obj->changed_map)) ||
+                 (obj->changed_color))
+               changed = EINA_TRUE;
+             evas_object_change_reset(obj);
           }
 
         // clear surface before re-render
index b4197ed..57147e3 100644 (file)
@@ -613,6 +613,7 @@ struct _Evas_Object
 
    Eina_Bool                   changed : 1;
    Eina_Bool                   changed_move : 1;
+   Eina_Bool                   changed_color : 1;
    Eina_Bool                   changed_map : 1;
    Eina_Bool                   changed_pchange : 1;
    Eina_Bool                   del_ref : 1;