forked from enlightenment/efl
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);
|
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
|
||||||
return;
|
return;
|
||||||
MAGIC_CHECK_END();
|
MAGIC_CHECK_END();
|
||||||
|
Eina_Bool pchange = EINA_FALSE;
|
||||||
|
|
||||||
enabled = !!enabled;
|
enabled = !!enabled;
|
||||||
if (obj->cur.usemap == enabled) return;
|
if (obj->cur.usemap == enabled) return;
|
||||||
|
pchange = obj->changed;
|
||||||
obj->cur.usemap = enabled;
|
obj->cur.usemap = enabled;
|
||||||
if (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
|
/* This is a bit heavy handed, but it fixes the case of same geometry, but
|
||||||
* changed colour or UV settings. */
|
* changed colour or UV settings. */
|
||||||
evas_object_change(obj);
|
evas_object_change(obj);
|
||||||
|
if (!obj->changed_pchange) obj->changed_pchange = pchange;
|
||||||
|
obj->changed_map = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
|
|
|
@ -612,6 +612,8 @@ pending_change(void *data, void *gdata __UNUSED__)
|
||||||
obj->changed_move_only = 0;
|
obj->changed_move_only = 0;
|
||||||
obj->changed_nomove = 0;
|
obj->changed_nomove = 0;
|
||||||
obj->changed_move = 0;
|
obj->changed_move = 0;
|
||||||
|
obj->changed_map = 0;
|
||||||
|
obj->changed_pchange = 0;
|
||||||
}
|
}
|
||||||
return obj->changed ? EINA_TRUE : EINA_FALSE;
|
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_move_only = 0;
|
||||||
o2->changed_nomove = 0;
|
o2->changed_nomove = 0;
|
||||||
o2->changed_move = 0;
|
o2->changed_move = 0;
|
||||||
|
o2->changed_map = 0;
|
||||||
|
o2->changed_pchange = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (o2->changed)
|
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_move_only = 0;
|
||||||
o2->changed_nomove = 0;
|
o2->changed_nomove = 0;
|
||||||
o2->changed_move = 0;
|
o2->changed_move = 0;
|
||||||
|
o2->changed_map = 0;
|
||||||
|
o2->changed_pchange = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1002,16 +1008,21 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
|
||||||
obj->changed_move_only = 0;
|
obj->changed_move_only = 0;
|
||||||
obj->changed_nomove = 0;
|
obj->changed_nomove = 0;
|
||||||
obj->changed_move = 0;
|
obj->changed_move = 0;
|
||||||
|
obj->changed_map = 0;
|
||||||
|
obj->changed_pchange = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (obj->changed)
|
if (obj->changed)
|
||||||
{
|
{
|
||||||
changed = 1;
|
if ((obj->changed_pchange) && (obj->changed_map))
|
||||||
|
changed = 1;
|
||||||
obj->changed = 0;
|
obj->changed = 0;
|
||||||
obj->changed_move_only = 0;
|
obj->changed_move_only = 0;
|
||||||
obj->changed_nomove = 0;
|
obj->changed_nomove = 0;
|
||||||
obj->changed_move = 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,
|
e->engine.data.context,
|
||||||
ecx, ecy, ecw, ech);
|
ecx, ecy, ecw, ech);
|
||||||
if (obj->cur.cache.clip.visible)
|
if (obj->cur.cache.clip.visible)
|
||||||
obj->layer->evas->engine.func->image_map_draw
|
{
|
||||||
(e->engine.data.output, e->engine.data.context, surface,
|
obj->layer->evas->engine.func->image_map_draw
|
||||||
obj->cur.map->surface, obj->cur.map->count, pts,
|
(e->engine.data.output, e->engine.data.context, surface,
|
||||||
obj->cur.map->smooth, 0);
|
obj->cur.map->surface, obj->cur.map->count, pts,
|
||||||
|
obj->cur.map->smooth, 0);
|
||||||
|
}
|
||||||
// FIXME: needs to cache these maps and
|
// FIXME: needs to cache these maps and
|
||||||
// keep them only rendering updates
|
// keep them only rendering updates
|
||||||
// obj->layer->evas->engine.func->image_map_surface_free
|
// 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_move_only = 0;
|
||||||
obj->changed_nomove = 0;
|
obj->changed_nomove = 0;
|
||||||
obj->changed_move = 0;
|
obj->changed_move = 0;
|
||||||
|
obj->changed_map = 0;
|
||||||
|
obj->changed_pchange = 0;
|
||||||
}
|
}
|
||||||
else if ((obj->cur.map != obj->prev.map) ||
|
else if ((obj->cur.map != obj->prev.map) ||
|
||||||
(obj->cur.usemap != obj->prev.usemap))
|
(obj->cur.usemap != obj->prev.usemap))
|
||||||
|
@ -1651,6 +1666,8 @@ evas_render_updates_internal(Evas *e,
|
||||||
obj->changed_move_only = 0;
|
obj->changed_move_only = 0;
|
||||||
obj->changed_nomove = 0;
|
obj->changed_nomove = 0;
|
||||||
obj->changed_move = 0;
|
obj->changed_move = 0;
|
||||||
|
obj->changed_map = 0;
|
||||||
|
obj->changed_pchange = 0;
|
||||||
}
|
}
|
||||||
/* moved to other pre-process phase 1
|
/* moved to other pre-process phase 1
|
||||||
if (obj->delete_me == 2)
|
if (obj->delete_me == 2)
|
||||||
|
|
|
@ -615,6 +615,8 @@ struct _Evas_Object
|
||||||
Eina_Bool changed_move : 1;
|
Eina_Bool changed_move : 1;
|
||||||
Eina_Bool changed_move_only : 1;
|
Eina_Bool changed_move_only : 1;
|
||||||
Eina_Bool changed_nomove : 1;
|
Eina_Bool changed_nomove : 1;
|
||||||
|
Eina_Bool changed_map : 1;
|
||||||
|
Eina_Bool changed_pchange : 1;
|
||||||
Eina_Bool del_ref : 1;
|
Eina_Bool del_ref : 1;
|
||||||
|
|
||||||
Eina_Bool is_frame : 1;
|
Eina_Bool is_frame : 1;
|
||||||
|
|
Loading…
Reference in New Issue