evas_object: Add function to test if an object is on a hardware plane
authorDerek Foreman <derek.foreman.samsung@gmail.com>
Mon, 22 Oct 2018 15:20:28 +0000 (10:20 -0500)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 18 Dec 2018 04:20:08 +0000 (13:20 +0900)
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7190

src/lib/evas/canvas/evas_object_image.c
src/lib/evas/include/evas_inline.x
src/lib/evas/include/evas_private.h

index 1a94724..ec25d1d 100755 (executable)
@@ -54,6 +54,7 @@ static void         evas_object_image_render_prepare(Evas_Object *obj, Evas_Obje
 
 static void         evas_object_image_filled_resize_listener(void *data, Evas *eo_e, Evas_Object *eo_obj, void *einfo);
 
+static int          evas_object_image_is_on_plane(Evas_Object *obj EINA_UNUSED, Evas_Object_Protected_Data *pd EINA_UNUSED, void *type_private_data);
 static const Evas_Object_Func object_func =
 {
    /* methods (compulsory) */
@@ -73,7 +74,8 @@ static const Evas_Object_Func object_func =
    evas_object_image_has_opaque_rect,
    evas_object_image_get_opaque_rect,
    evas_object_image_can_map,
-   evas_object_image_render_prepare   // render_prepare
+   evas_object_image_render_prepare,   // render_prepare
+   evas_object_image_is_on_plane,
 };
 
 static const Evas_Object_Image_Load_Opts default_load_opts = {
@@ -1776,6 +1778,14 @@ _evas_object_image_can_use_plane(Evas_Object_Protected_Data *obj,
    return EINA_TRUE;
 }
 
+static int
+evas_object_image_is_on_plane(Evas_Object *obj EINA_UNUSED, Evas_Object_Protected_Data *pd EINA_UNUSED, void *type_private_data)
+{
+   Evas_Image_Data *o = type_private_data;
+
+   if (o->plane) return 1;
+   return 0;
+}
 static void
 evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *type_private_data,
                          void *engine, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
index a2b96b1..739a59b 100644 (file)
@@ -118,6 +118,14 @@ evas_object_is_opaque(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
 }
 
 static inline int
+evas_object_is_on_plane(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
+{
+   if (obj->func->is_on_plane)
+     return obj->func->is_on_plane(eo_obj, obj, obj->private_data);
+   return 0;
+}
+
+static inline int
 evas_event_freezes_through(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
 {
    if (obj->freeze_events) return 1;
index 802f1ad..d319f3b 100755 (executable)
@@ -1264,6 +1264,7 @@ struct _Evas_Object_Func
 // preparation - may include rendering content to buffer or loading data
 // from disk or uploading to texture etc.
    void (*render_prepare) (Evas_Object *obj, Evas_Object_Protected_Data *pd, Eina_Bool do_async);
+   int (*is_on_plane) (Evas_Object *obj, Evas_Object_Protected_Data *pd, void *type_private_data);
 };
 
 struct _Evas_Func