diff --git a/legacy/evas/src/lib/canvas/evas_object_main.c b/legacy/evas/src/lib/canvas/evas_object_main.c index 36dd494c02..f0da75ef54 100644 --- a/legacy/evas/src/lib/canvas/evas_object_main.c +++ b/legacy/evas/src/lib/canvas/evas_object_main.c @@ -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))) @@ -1264,8 +1264,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); } diff --git a/legacy/evas/src/lib/canvas/evas_render.c b/legacy/evas/src/lib/canvas/evas_render.c index dd154c32af..a890f9ff44 100644 --- a/legacy/evas/src/lib/canvas/evas_render.c +++ b/legacy/evas/src/lib/canvas/evas_render.c @@ -931,16 +931,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 diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 3f62766ca5..d62047ba29 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -616,6 +616,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;