forked from enlightenment/efl
evas_object: Add function to test if hardware plane status changed
This is used to check if an object has been put on or removed from a hardware plane between calls. Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com> Reviewed-by: Cedric BAIL <cedric.bail@free.fr> Differential Revision: https://phab.enlightenment.org/D7192
This commit is contained in:
parent
73e5bb84a1
commit
ac065749a6
|
@ -148,6 +148,7 @@ struct _Evas_Image_Data
|
||||||
Eina_Bool legacy_type : 1;
|
Eina_Bool legacy_type : 1;
|
||||||
Eina_Bool skip_head : 1;
|
Eina_Bool skip_head : 1;
|
||||||
Eina_Bool can_scanout : 1;
|
Eina_Bool can_scanout : 1;
|
||||||
|
Eina_Bool plane_status : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* shared functions between legacy and new eo classes */
|
/* shared functions between legacy and new eo classes */
|
||||||
|
|
|
@ -55,6 +55,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 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 int evas_object_image_is_on_plane(Evas_Object *obj EINA_UNUSED, Evas_Object_Protected_Data *pd EINA_UNUSED, void *type_private_data);
|
||||||
|
static int evas_object_image_plane_changed(Evas_Object *obj EINA_UNUSED, Evas_Object_Protected_Data *pd EINA_UNUSED, void *type_private_data);
|
||||||
static const Evas_Object_Func object_func =
|
static const Evas_Object_Func object_func =
|
||||||
{
|
{
|
||||||
/* methods (compulsory) */
|
/* methods (compulsory) */
|
||||||
|
@ -76,6 +77,7 @@ static const Evas_Object_Func object_func =
|
||||||
evas_object_image_can_map,
|
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,
|
evas_object_image_is_on_plane,
|
||||||
|
evas_object_image_plane_changed
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Evas_Object_Image_Load_Opts default_load_opts = {
|
static const Evas_Object_Image_Load_Opts default_load_opts = {
|
||||||
|
@ -1753,6 +1755,21 @@ evas_object_image_is_on_plane(Evas_Object *obj EINA_UNUSED, Evas_Object_Protecte
|
||||||
if (o->plane) return 1;
|
if (o->plane) return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
evas_object_image_plane_changed(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 != o->plane_status)
|
||||||
|
{
|
||||||
|
o->plane_status = !!o->plane;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *type_private_data,
|
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)
|
void *engine, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
|
||||||
|
|
|
@ -125,6 +125,14 @@ evas_object_is_on_plane(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
evas_object_plane_changed(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
|
{
|
||||||
|
if (obj->func->plane_changed)
|
||||||
|
return obj->func->plane_changed(eo_obj, obj, obj->private_data);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
evas_event_freezes_through(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
|
evas_event_freezes_through(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1261,6 +1261,7 @@ struct _Evas_Object_Func
|
||||||
// from disk or uploading to texture etc.
|
// from disk or uploading to texture etc.
|
||||||
void (*render_prepare) (Evas_Object *obj, Evas_Object_Protected_Data *pd, Eina_Bool do_async);
|
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);
|
int (*is_on_plane) (Evas_Object *obj, Evas_Object_Protected_Data *pd, void *type_private_data);
|
||||||
|
int (*plane_changed) (Evas_Object *obj, Evas_Object_Protected_Data *pd, void *type_private_data);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Evas_Func
|
struct _Evas_Func
|
||||||
|
|
Loading…
Reference in New Issue