evas: CRIT when someone change object geometry during pixels get callback.

This commit is contained in:
Cedric Bail 2013-08-07 18:40:42 +09:00
parent 7c6b3b1d4a
commit a07fab03e8
1 changed files with 13 additions and 0 deletions

View File

@ -3646,6 +3646,8 @@ evas_process_dirty_pixels(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
{
if (o->pixels->func.get_pixels)
{
Evas_Coord x, y, w, h;
if (obj->layer->evas->engine.func->image_native_get)
{
Evas_Native_Surface *ns;
@ -3690,9 +3692,20 @@ evas_process_dirty_pixels(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
}
}
x = obj->cur->geometry.x;
y = obj->cur->geometry.y;
w = obj->cur->geometry.w;
h = obj->cur->geometry.h;
if (!o->direct_render)
o->pixels->func.get_pixels(o->pixels->func.get_pixels_data, eo_obj);
if (!(obj->cur->geometry.x == x &&
obj->cur->geometry.y == y &&
obj->cur->geometry.w == w &&
obj->cur->geometry.h == h))
CRIT("Evas_Object_Image geometry did change during pixels get callback !");
o->engine_data = obj->layer->evas->engine.func->image_dirty_region
(obj->layer->evas->engine.data.output, o->engine_data,
0, 0, o->cur->image.w, o->cur->image.h);