discomfitor pushed a commit to branch efl-1.14. http://git.enlightenment.org/core/efl.git/commit/?id=c365eb3b449f5c6e66639f1a8b2c72d9a8c5db08
commit c365eb3b449f5c6e66639f1a8b2c72d9a8c5db08 Author: Mike Blumenkrantz <[email protected]> Date: Wed May 27 22:11:56 2015 -0400 evas: make image_size_get() return the actual image size proxy/3d/etc images would previously return 0x0, breaking size calcs @fix @jpeg --- src/lib/evas/canvas/evas_object_image.c | 41 ++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index cabeebb..4370372 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -1156,12 +1156,47 @@ evas_object_image_size_get(const Evas_Image *obj, int *w, int *h) } EOLIAN static void -_evas_image_efl_gfx_view_size_get(Eo *eo_obj EINA_UNUSED, +_evas_image_efl_gfx_view_size_get(Eo *eo_obj, Evas_Image_Data *o, int *w, int *h) { - if (w) *w = o->cur->image.w; - if (h) *h = o->cur->image.h; + int uvw, uvh; + Evas_Object_Protected_Data *source = NULL; + Evas_Object_Protected_Data *obj; + + obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); + if (o->cur->source) + source = eo_data_scope_get(o->cur->source, EVAS_OBJECT_CLASS); + + if (o->cur->scene) + { + uvw = obj->data_3d->w; + uvh = obj->data_3d->h; + } + else if (!o->cur->source) + { + uvw = o->cur->image.w; + uvh = o->cur->image.h; + } + else if (source->proxy->surface && !source->proxy->redraw) + { + uvw = source->proxy->w; + uvh = source->proxy->h; + } + else if (source->type == o_type && + ((Evas_Image_Data *)eo_data_scope_get(o->cur->source, MY_CLASS))->engine_data) + { + uvw = source->cur->geometry.w; + uvh = source->cur->geometry.h; + } + else + { + uvw = source->proxy->w; + uvh = source->proxy->h; + } + + if (w) *w = uvw; + if (h) *h = uvh; } EOLIAN static int --
