evas/evas_render - and should update the mapped objects when their color is changed since color should be multiplied again.

SVN revision: 71226
This commit is contained in:
ChunEon Park 2012-05-18 07:17:34 +00:00
parent 03995b4e98
commit 2a9f42c47e
3 changed files with 10 additions and 8 deletions

View File

@ -35,6 +35,7 @@ evas_object_change_reset(Evas_Object *obj)
{ {
obj->changed = EINA_FALSE; obj->changed = EINA_FALSE;
obj->changed_move = EINA_FALSE; obj->changed_move = EINA_FALSE;
obj->changed_color = EINA_FALSE;
obj->changed_map = EINA_FALSE; obj->changed_map = EINA_FALSE;
obj->changed_pchange = EINA_FALSE; obj->changed_pchange = EINA_FALSE;
} }
@ -94,7 +95,6 @@ evas_object_change(Evas_Object *obj)
if (obj->changed) return; if (obj->changed) return;
// obj->changed = EINA_TRUE;
evas_render_object_recalc(obj); evas_render_object_recalc(obj);
/* set changed flag on all objects this one clips too */ /* set changed flag on all objects this one clips too */
if (!((movch) && (obj->is_static_clip))) 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.g = g;
obj->cur.color.b = b; obj->cur.color.b = b;
evas_object_clip_dirty(obj); evas_object_clip_dirty(obj);
if ((obj->cur.color.a == 0) && (a == 0) && (obj->cur.render_op == EVAS_RENDER_BLEND)) return; if ((obj->cur.color.a == 0) && (a == 0) && (obj->cur.render_op == EVAS_RENDER_BLEND)) return;
obj->cur.color.a = a; obj->cur.color.a = a;
obj->changed_color = EINA_TRUE;
evas_object_change(obj); evas_object_change(obj);
} }

View File

@ -931,16 +931,15 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
break; break;
} }
} }
if (obj->changed_color) changed = EINA_TRUE;
evas_object_change_reset(obj); evas_object_change_reset(obj);
} }
else else if (obj->changed)
{ {
if (obj->changed) if (((obj->changed_pchange) && (obj->changed_map)) ||
{ (obj->changed_color))
if ((obj->changed_pchange) && (obj->changed_map)) changed = EINA_TRUE;
changed = EINA_TRUE; evas_object_change_reset(obj);
evas_object_change_reset(obj);
}
} }
// clear surface before re-render // clear surface before re-render

View File

@ -616,6 +616,7 @@ struct _Evas_Object
Eina_Bool changed : 1; Eina_Bool changed : 1;
Eina_Bool changed_move : 1; Eina_Bool changed_move : 1;
Eina_Bool changed_color : 1;
Eina_Bool changed_map : 1; Eina_Bool changed_map : 1;
Eina_Bool changed_pchange : 1; Eina_Bool changed_pchange : 1;
Eina_Bool del_ref : 1; Eina_Bool del_ref : 1;