Ecore_Wl2_Display *display;
} Ecore_Wl2_Event_Offer_Data_Ready;
+typedef struct _Ecore_Wl2_Event_Output_Transform
+{
+ Ecore_Wl2_Output *output;
+ int transform, old_transform;
+} Ecore_Wl2_Event_Output_Transform;
+
typedef enum _Ecore_Wl2_Window_Type
{
ECORE_WL2_WINDOW_TYPE_NONE,
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 */
/**
* @file
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_www = -1;
EAPI int _ecore_wl2_event_window_www_drag = -1;
ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED = ecore_event_type_new();
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();
}
if (!no_session_recovery)
no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY");
ECORE_WL2_EVENT_WINDOW_CONFIGURE_COMPLETE,
ECORE_WL2_EVENT_SEAT_KEYMAP_CHANGED,
ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED,
- ECORE_WL2_EVENT_SEAT_SELECTION);
+ ECORE_WL2_EVENT_SEAT_SELECTION,
+ ECORE_WL2_EVENT_OUTPUT_TRANSFORM);
/* shutdown Ecore_Event */
ecore_event_shutdown();
_cb_geometry(void *data, struct wl_output *wl_output EINA_UNUSED, int x, int y, int w, int h, int subpixel EINA_UNUSED, const char *make, const char *model, int transform)
{
Ecore_Wl2_Output *output;
+ int ot;
output = data;
if (!output) return;
+ eina_stringshare_replace(&output->make, make);
+ eina_stringshare_replace(&output->model, model);
+
output->mw = w;
output->mh = h;
output->geometry.x = x;
output->geometry.y = y;
- output->transform = transform;
- eina_stringshare_replace(&output->make, make);
- eina_stringshare_replace(&output->model, model);
+
+ ot = output->transform;
+
+ if (transform & 0x4)
+ ERR("Cannot support output transformation");
+
+ transform &= 0x3;
+ if (output->transform != transform)
+ {
+ Ecore_Wl2_Event_Output_Transform *ev;
+
+ output->transform = transform;
+
+ ev = calloc(1, sizeof(Ecore_Wl2_Event_Output_Transform));
+ if (ev)
+ {
+ ev->output = output;
+ ev->old_transform = ot;
+ ev->transform = transform;
+ ecore_event_add(ECORE_WL2_EVENT_OUTPUT_TRANSFORM, ev, NULL, NULL);
+ }
+ }
}
static void