evas/map - fixed afterimage problem. now we don't need work-around code anymore.

SVN revision: 71549
This commit is contained in:
ChunEon Park 2012-05-30 10:12:10 +00:00
parent 318bd30043
commit 88c5f1df74
9 changed files with 26 additions and 48 deletions

View File

@ -408,14 +408,6 @@ evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
{
_evas_map_calc_geom_change(obj);
evas_object_mapped_clip_across_mark(obj);
//FIXME: Since the last frame is not updated when map is
//disabled, afterimage problem is happened in s/w rendering.
//Need to find out the fundamental reason then fix it.
evas_damage_rectangle_add(obj->layer->evas,
0,
0,
obj->layer->evas->output.w,
obj->layer->evas->output.h);
}
}
_evas_map_calc_map_geometry(obj);
@ -476,6 +468,8 @@ evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
{
if (obj->cur.map)
{
obj->changed_map = EINA_TRUE;
if (obj->cur.map->surface)
{
obj->layer->evas->engine.func->image_map_surface_free
@ -496,28 +490,14 @@ evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
if (!obj->cur.usemap) _evas_map_calc_geom_change(obj);
else _evas_map_calc_map_geometry(obj);
if (obj->cur.usemap)
{
evas_object_mapped_clip_across_mark(obj);
//FIXME: Since the last frame is not updated when map is
//disabled, afterimage problem is happened in s/w
//rendering. Need to find out the fundamental reason
//then fix it.
evas_damage_rectangle_add(obj->layer->evas,
0,
0,
obj->layer->evas->output.w,
obj->layer->evas->output.h);
}
evas_object_mapped_clip_across_mark(obj);
}
return;
}
// We do have the same exact count of point in this map, so just copy it
if ((obj->cur.map) && (obj->cur.map->count == map->count))
{
/* We do have the same exact count of point in this map, so just copy it */
_evas_map_copy(obj->cur.map, map);
if (obj->prev.map == obj->cur.map) obj->prev.map = NULL;
}
_evas_map_copy(obj->cur.map, map);
else
{
if (obj->cur.map) evas_map_free(obj->cur.map);
@ -525,6 +505,8 @@ evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
if (obj->cur.usemap)
evas_object_mapped_clip_across_mark(obj);
}
obj->changed_map = EINA_TRUE;
_evas_map_calc_map_geometry(obj);
}

View File

@ -3224,8 +3224,7 @@ evas_object_image_render_pre(Evas_Object *obj)
evas_object_render_pre_visible_change(&e->clip_changes, obj, is_v, was_v);
if (!o->pixel_updates) goto done;
}
if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap))
if (obj->changed_map)
{
evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
goto done;

View File

@ -310,10 +310,10 @@ evas_object_line_render_pre(Evas_Object *obj)
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
goto done;
}
if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap))
if (obj->changed_map)
{
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */

View File

@ -366,10 +366,10 @@ evas_object_polygon_render_pre(Evas_Object *obj)
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
goto done;
}
if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap))
if (obj->changed_map)
{
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */

View File

@ -194,10 +194,10 @@ evas_object_rectangle_render_pre(Evas_Object *obj)
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
goto done;
}
if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap))
if (obj->changed_map)
{
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */

View File

@ -927,8 +927,7 @@ evas_object_smart_render_pre(Evas_Object *obj)
}
#endif
}
if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap))
if (obj->changed_map)
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
obj->pre_render_done = EINA_TRUE;

View File

@ -1699,11 +1699,10 @@ evas_object_text_render_pre(Evas_Object *obj)
obj, is_v, was_v);
goto done;
}
if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap))
if (obj->changed_map)
{
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
obj);
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
obj);
goto done;
}
/* its not visible - we accounted for it appearing or not so just abort */

View File

@ -9784,10 +9784,10 @@ evas_object_textblock_render_pre(Evas_Object *obj)
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
goto done;
}
if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap))
if (obj->changed_map)
{
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */

View File

@ -316,7 +316,7 @@ _evas_render_phase1_object_process(Evas *e, Evas_Object *obj,
}
return clean_them;
}
else if (_evas_render_had_map(obj))
else if (hmap)
{
RDI(level);
RD(" had map - restack objs\n");
@ -1634,8 +1634,7 @@ evas_render_updates_internal(Evas *e,
obj->restack = EINA_FALSE;
evas_object_change_reset(obj);
}
else if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap) || clean_them)
else if (clean_them)
{
RD(" OBJ [%p] post... func2\n", obj);
obj->func->render_post(obj);