From: Derek Foreman Date: Wed, 21 Jun 2017 20:06:01 +0000 (-0500) Subject: evas_object_image: Track whether an image object supports direct scanout X-Git-Tag: upstream/1.20.0~449 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3965a663ccb498baf04f1089fea388011168c2c0;p=platform%2Fupstream%2Fefl.git evas_object_image: Track whether an image object supports direct scanout If an evas object is a wayland dmabuf, uses native surface 5 or higher, and has a scanout handler set, then it meets the basic requirements for placing on a hardware plane. --- diff --git a/src/lib/evas/canvas/evas_image_private.h b/src/lib/evas/canvas/evas_image_private.h index 5c9f79c..a3f3a5b 100644 --- a/src/lib/evas/canvas/evas_image_private.h +++ b/src/lib/evas/canvas/evas_image_private.h @@ -146,6 +146,7 @@ struct _Evas_Image_Data } delayed; Eina_Bool legacy_type : 1; Eina_Bool skip_head : 1; + Eina_Bool can_scanout : 1; }; /* shared functions between legacy and new eo classes */ diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index 820ca41..818c842 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -1033,6 +1033,8 @@ _evas_image_native_surface_set(Eo *eo_obj, Evas_Native_Surface *surf) evas_object_event_callback_add (eo_obj, EVAS_CALLBACK_DEL, _on_image_native_surface_del, NULL); + o->can_scanout = EINA_FALSE; + evas_render_rendering_wait(obj->layer->evas); _evas_image_cleanup(eo_obj, obj, o); if (!ENFN->image_native_set) return EINA_FALSE; @@ -1040,6 +1042,19 @@ _evas_image_native_surface_set(Eo *eo_obj, Evas_Native_Surface *surf) ((surf->version < 2) || (surf->version > EVAS_NATIVE_SURFACE_VERSION))) return EINA_FALSE; o->engine_data = ENFN->image_native_set(ENDT, o->engine_data, surf); + + if (surf && surf->version > 4) + { + switch (surf->type) + { + case EVAS_NATIVE_SURFACE_WL_DMABUF: + if (surf->data.wl_dmabuf.scanout.handler) + o->can_scanout = EINA_TRUE; + break; + default: + break; + } + } return (o->engine_data != NULL); }