From 92d214d8f908c6468fd2262cb0fece507a581873 Mon Sep 17 00:00:00 2001 From: Chris Michael Date: Fri, 9 Jun 2017 10:27:54 -0400 Subject: [PATCH] ecore-wl2: Add API and event for window rotation change prepare @feature Signed-off-by: Chris Michael --- src/lib/ecore_wl2/Ecore_Wl2.h | 11 +++++++++++ src/lib/ecore_wl2/ecore_wl2.c | 5 ++++- src/lib/ecore_wl2/ecore_wl2_window.c | 19 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index f3a8ddd402..08ae40b19d 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -276,6 +276,14 @@ typedef struct _Ecore_Wl2_Event_Output_Transform int transform, old_transform; } Ecore_Wl2_Event_Output_Transform; +typedef struct _Ecore_Wl2_Event_Window_Rotation +{ + Ecore_Wl2_Window *window; + int rotation, w, h; + Eina_Bool resize : 1; +} Ecore_Wl2_Event_Window_Rotation; +typedef struct _Ecore_Wl2_Event_Window_Rotation Ecore_Wl2_Event_Window_Rotation_Change_Prepare; + typedef enum _Ecore_Wl2_Window_Type { ECORE_WL2_WINDOW_TYPE_NONE, @@ -317,6 +325,7 @@ EAPI extern int ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED; /** @since 1.20 */ EAPI extern int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED; /** @since 1.20 */ EAPI extern int ECORE_WL2_EVENT_SEAT_SELECTION; /** @since 1.20 */ EAPI extern int ECORE_WL2_EVENT_OUTPUT_TRANSFORM; /** @since 1.20 */ +EAPI extern int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE; /** @since 1.20 */ /** * @file @@ -1067,6 +1076,8 @@ EAPI void ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, con */ EAPI Eina_Bool ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, unsigned int count); +EAPI void ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot, int w, int h, Eina_Bool resize); + /** * @defgroup Ecore_Wl2_Input_Group Wayland Library Input Functions * @ingroup Ecore_Wl2_Group diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c index fa4a7747b8..01286d88fd 100644 --- a/src/lib/ecore_wl2/ecore_wl2.c +++ b/src/lib/ecore_wl2/ecore_wl2.c @@ -40,6 +40,7 @@ EAPI int ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED = 0; EAPI int ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED = 0; EAPI int ECORE_WL2_EVENT_SEAT_SELECTION = 0; EAPI int ECORE_WL2_EVENT_OUTPUT_TRANSFORM = 0; +EAPI int ECORE_Wl2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = 0; EAPI int _ecore_wl2_event_window_www = -1; EAPI int _ecore_wl2_event_window_www_drag = -1; @@ -109,6 +110,7 @@ ecore_wl2_init(void) ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED = ecore_event_type_new(); ECORE_WL2_EVENT_SEAT_SELECTION = ecore_event_type_new(); ECORE_WL2_EVENT_OUTPUT_TRANSFORM = ecore_event_type_new(); + ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE = ecore_event_type_new(); } if (!no_session_recovery) no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY"); @@ -166,7 +168,8 @@ ecore_wl2_shutdown(void) ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED, ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED, ECORE_WL2_EVENT_SEAT_SELECTION, - ECORE_WL2_EVENT_OUTPUT_TRANSFORM); + ECORE_WL2_EVENT_OUTPUT_TRANSFORM, + ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE); /* shutdown Ecore_Event */ ecore_event_shutdown(); diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index 08b56ffe08..e4ded74569 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -1288,3 +1288,22 @@ ecore_wl2_window_available_rotations_get(Ecore_Wl2_Window *window, int **rots, u return EINA_FALSE; } + +EAPI void +ecore_wl2_window_rotation_change_prepare_send(Ecore_Wl2_Window *window, int rot, int w, int h, Eina_Bool resize) +{ + Ecore_Wl2_Event_Window_Rotation_Change_Prepare *ev; + + EINA_SAFETY_ON_NULL_RETURN(window); + + ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Rotation_Change_Prepare)); + if (!ev) return; + + ev->window = window; + ev->rotation = rot; + ev->w = w; + ev->h = h; + ev->resize = resize; + + ecore_event_add(ECORE_WL2_EVENT_WINDOW_ROTATION_CHANGE_PREPARE, ev, NULL, NULL); +}