fix map overdraw issue that has snuck in during development
SVN revision: 69534
This commit is contained in:
parent
dd9945b9ed
commit
e92d5fb2eb
|
@ -374,9 +374,11 @@ evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
|
|||
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
Eina_Bool pchange = EINA_FALSE;
|
||||
|
||||
enabled = !!enabled;
|
||||
if (obj->cur.usemap == enabled) return;
|
||||
pchange = obj->changed;
|
||||
obj->cur.usemap = enabled;
|
||||
if (enabled)
|
||||
{
|
||||
|
@ -405,6 +407,8 @@ evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
|
|||
/* This is a bit heavy handed, but it fixes the case of same geometry, but
|
||||
* changed colour or UV settings. */
|
||||
evas_object_change(obj);
|
||||
if (!obj->changed_pchange) obj->changed_pchange = pchange;
|
||||
obj->changed_map = EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
|
|
|
@ -612,6 +612,8 @@ pending_change(void *data, void *gdata __UNUSED__)
|
|||
obj->changed_move_only = 0;
|
||||
obj->changed_nomove = 0;
|
||||
obj->changed_move = 0;
|
||||
obj->changed_map = 0;
|
||||
obj->changed_pchange = 0;
|
||||
}
|
||||
return obj->changed ? EINA_TRUE : EINA_FALSE;
|
||||
}
|
||||
|
@ -984,6 +986,8 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
|
|||
o2->changed_move_only = 0;
|
||||
o2->changed_nomove = 0;
|
||||
o2->changed_move = 0;
|
||||
o2->changed_map = 0;
|
||||
o2->changed_pchange = 0;
|
||||
continue;
|
||||
}
|
||||
if (o2->changed)
|
||||
|
@ -994,6 +998,8 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
|
|||
o2->changed_move_only = 0;
|
||||
o2->changed_nomove = 0;
|
||||
o2->changed_move = 0;
|
||||
o2->changed_map = 0;
|
||||
o2->changed_pchange = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1002,16 +1008,21 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
|
|||
obj->changed_move_only = 0;
|
||||
obj->changed_nomove = 0;
|
||||
obj->changed_move = 0;
|
||||
obj->changed_map = 0;
|
||||
obj->changed_pchange = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (obj->changed)
|
||||
{
|
||||
changed = 1;
|
||||
if ((obj->changed_pchange) && (obj->changed_map))
|
||||
changed = 1;
|
||||
obj->changed = 0;
|
||||
obj->changed_move_only = 0;
|
||||
obj->changed_nomove = 0;
|
||||
obj->changed_move = 0;
|
||||
obj->changed_map = 0;
|
||||
obj->changed_pchange = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1144,10 +1155,12 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
|
|||
e->engine.data.context,
|
||||
ecx, ecy, ecw, ech);
|
||||
if (obj->cur.cache.clip.visible)
|
||||
obj->layer->evas->engine.func->image_map_draw
|
||||
(e->engine.data.output, e->engine.data.context, surface,
|
||||
obj->cur.map->surface, obj->cur.map->count, pts,
|
||||
obj->cur.map->smooth, 0);
|
||||
{
|
||||
obj->layer->evas->engine.func->image_map_draw
|
||||
(e->engine.data.output, e->engine.data.context, surface,
|
||||
obj->cur.map->surface, obj->cur.map->count, pts,
|
||||
obj->cur.map->smooth, 0);
|
||||
}
|
||||
// FIXME: needs to cache these maps and
|
||||
// keep them only rendering updates
|
||||
// obj->layer->evas->engine.func->image_map_surface_free
|
||||
|
@ -1640,6 +1653,8 @@ evas_render_updates_internal(Evas *e,
|
|||
obj->changed_move_only = 0;
|
||||
obj->changed_nomove = 0;
|
||||
obj->changed_move = 0;
|
||||
obj->changed_map = 0;
|
||||
obj->changed_pchange = 0;
|
||||
}
|
||||
else if ((obj->cur.map != obj->prev.map) ||
|
||||
(obj->cur.usemap != obj->prev.usemap))
|
||||
|
@ -1651,6 +1666,8 @@ evas_render_updates_internal(Evas *e,
|
|||
obj->changed_move_only = 0;
|
||||
obj->changed_nomove = 0;
|
||||
obj->changed_move = 0;
|
||||
obj->changed_map = 0;
|
||||
obj->changed_pchange = 0;
|
||||
}
|
||||
/* moved to other pre-process phase 1
|
||||
if (obj->delete_me == 2)
|
||||
|
|
|
@ -615,6 +615,8 @@ struct _Evas_Object
|
|||
Eina_Bool changed_move : 1;
|
||||
Eina_Bool changed_move_only : 1;
|
||||
Eina_Bool changed_nomove : 1;
|
||||
Eina_Bool changed_map : 1;
|
||||
Eina_Bool changed_pchange : 1;
|
||||
Eina_Bool del_ref : 1;
|
||||
|
||||
Eina_Bool is_frame : 1;
|
||||
|
|
Loading…
Reference in New Issue