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_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);
}

View File

@ -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

View File

@ -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;