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)
{
/* 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
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;
}
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)
o2->changed_move_only = 0;
o2->changed_nomove = 0;
o2->changed_move = 0;
+ o2->changed_map = 0;
+ o2->changed_pchange = 0;
break;
}
}
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;
}
}
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
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))
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)