|
@@ -1,334 +0,0 @@
|
|
|
-/*
|
|
|
- Simple DirectMedia Layer
|
|
|
- Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
|
|
-
|
|
|
- This software is provided 'as-is', without any express or implied
|
|
|
- warranty. In no event will the authors be held liable for any damages
|
|
|
- arising from the use of this software.
|
|
|
-
|
|
|
- Permission is granted to anyone to use this software for any purpose,
|
|
|
- including commercial applications, and to alter it and redistribute it
|
|
|
- freely, subject to the following restrictions:
|
|
|
-
|
|
|
- 1. The origin of this software must not be misrepresented; you must not
|
|
|
- claim that you wrote the original software. If you use this software
|
|
|
- in a product, an acknowledgment in the product documentation would be
|
|
|
- appreciated but is not required.
|
|
|
- 2. Altered source versions must be plainly marked as such, and must not be
|
|
|
- misrepresented as being the original software.
|
|
|
- 3. This notice may not be removed or altered from any source distribution.
|
|
|
-*/
|
|
|
-
|
|
|
-#ifndef SDL_waylandtouch_h_
|
|
|
-#define SDL_waylandtouch_h_
|
|
|
-
|
|
|
-#include "SDL_internal.h"
|
|
|
-
|
|
|
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
|
|
|
-
|
|
|
-#include "SDL_waylandvideo.h"
|
|
|
-#include <stdint.h>
|
|
|
-#include <stddef.h>
|
|
|
-#include "wayland-util.h"
|
|
|
-
|
|
|
-void Wayland_touch_create(SDL_VideoData *data, uint32_t id);
|
|
|
-void Wayland_touch_destroy(SDL_VideoData *data);
|
|
|
-
|
|
|
-struct qt_touch_extension;
|
|
|
-
|
|
|
-/* Autogenerated QT headers */
|
|
|
-
|
|
|
-/*
|
|
|
- Support for Wayland with QmlCompositor as Server
|
|
|
-================================================
|
|
|
-
|
|
|
-The Wayland video driver has support for some additional features when
|
|
|
-using QtWayland's "qmlcompositor" as Wayland server. This is needed for touch
|
|
|
-input when running SDL applications under a qmlcompositor Wayland server.
|
|
|
-
|
|
|
-The files following headers have been
|
|
|
-generated from the Wayland XML Protocol Definition in QtWayland as follows:
|
|
|
-
|
|
|
-Clone QtWayland from Git:
|
|
|
- http://qt.gitorious.org/qt/qtwayland/
|
|
|
-
|
|
|
-Generate headers and glue code:
|
|
|
- for extension in touch-extension surface-extension windowmanager; do
|
|
|
- wayland-scanner client-header < src/extensions/$extension.xml > wayland-qt-$extension.h
|
|
|
- wayland-scanner code < src/extensions/$extension.xml > wayland-qt-$extension.c
|
|
|
- done
|
|
|
-
|
|
|
-*/
|
|
|
-
|
|
|
-/* wayland-qt-surface-extension.h */
|
|
|
-
|
|
|
-struct wl_client;
|
|
|
-struct wl_resource;
|
|
|
-
|
|
|
-struct qt_surface_extension;
|
|
|
-struct qt_extended_surface;
|
|
|
-
|
|
|
-extern const struct wl_interface qt_surface_extension_interface;
|
|
|
-extern const struct wl_interface qt_extended_surface_interface;
|
|
|
-
|
|
|
-#define QT_SURFACE_EXTENSION_GET_EXTENDED_SURFACE 0
|
|
|
-
|
|
|
-static inline void qt_surface_extension_set_user_data(struct qt_surface_extension *qt_surface_extension, void *user_data)
|
|
|
-{
|
|
|
- wl_proxy_set_user_data((struct wl_proxy *)qt_surface_extension, user_data);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void *qt_surface_extension_get_user_data(struct qt_surface_extension *qt_surface_extension)
|
|
|
-{
|
|
|
- return wl_proxy_get_user_data((struct wl_proxy *)qt_surface_extension);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_surface_extension_destroy(struct qt_surface_extension *qt_surface_extension)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_destroy((struct wl_proxy *)qt_surface_extension);
|
|
|
-}
|
|
|
-
|
|
|
-static inline struct qt_extended_surface *qt_surface_extension_get_extended_surface(struct qt_surface_extension *qt_surface_extension, struct wl_surface *surface)
|
|
|
-{
|
|
|
- struct wl_proxy *id;
|
|
|
-
|
|
|
- id = wl_proxy_create((struct wl_proxy *)qt_surface_extension,
|
|
|
- &qt_extended_surface_interface);
|
|
|
- if (id == NULL)
|
|
|
- return NULL;
|
|
|
-
|
|
|
- WAYLAND_wl_proxy_marshal((struct wl_proxy *)qt_surface_extension,
|
|
|
- QT_SURFACE_EXTENSION_GET_EXTENDED_SURFACE, id, surface);
|
|
|
-
|
|
|
- return (struct qt_extended_surface *)id;
|
|
|
-}
|
|
|
-
|
|
|
-#ifndef QT_EXTENDED_SURFACE_ORIENTATION_ENUM
|
|
|
-#define QT_EXTENDED_SURFACE_ORIENTATION_ENUM
|
|
|
-enum qt_extended_surface_orientation
|
|
|
-{
|
|
|
- QT_EXTENDED_SURFACE_ORIENTATION_PRIMARYORIENTATION = 0,
|
|
|
- QT_EXTENDED_SURFACE_ORIENTATION_PORTRAITORIENTATION = 1,
|
|
|
- QT_EXTENDED_SURFACE_ORIENTATION_LANDSCAPEORIENTATION = 2,
|
|
|
- QT_EXTENDED_SURFACE_ORIENTATION_INVERTEDPORTRAITORIENTATION = 4,
|
|
|
- QT_EXTENDED_SURFACE_ORIENTATION_INVERTEDLANDSCAPEORIENTATION = 8,
|
|
|
-};
|
|
|
-#endif /* QT_EXTENDED_SURFACE_ORIENTATION_ENUM */
|
|
|
-
|
|
|
-#ifndef QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM
|
|
|
-#define QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM
|
|
|
-enum qt_extended_surface_windowflag
|
|
|
-{
|
|
|
- QT_EXTENDED_SURFACE_WINDOWFLAG_OVERRIDESSYSTEMGESTURES = 1,
|
|
|
- QT_EXTENDED_SURFACE_WINDOWFLAG_STAYSONTOP = 2,
|
|
|
-};
|
|
|
-#endif /* QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM */
|
|
|
-
|
|
|
-struct qt_extended_surface_listener
|
|
|
-{
|
|
|
- /**
|
|
|
- * onscreen_visibility - (none)
|
|
|
- * @visible: (none)
|
|
|
- */
|
|
|
- void (*onscreen_visibility)(void *data,
|
|
|
- struct qt_extended_surface *qt_extended_surface,
|
|
|
- int32_t visible);
|
|
|
- /**
|
|
|
- * set_generic_property - (none)
|
|
|
- * @name: (none)
|
|
|
- * @value: (none)
|
|
|
- */
|
|
|
- void (*set_generic_property)(void *data,
|
|
|
- struct qt_extended_surface *qt_extended_surface,
|
|
|
- const char *name,
|
|
|
- struct wl_array *value);
|
|
|
- /**
|
|
|
- * close - (none)
|
|
|
- */
|
|
|
- void (*close)(void *data,
|
|
|
- struct qt_extended_surface *qt_extended_surface);
|
|
|
-};
|
|
|
-
|
|
|
-static inline int qt_extended_surface_add_listener(struct qt_extended_surface *qt_extended_surface,
|
|
|
- const struct qt_extended_surface_listener *listener, void *data)
|
|
|
-{
|
|
|
- return wl_proxy_add_listener((struct wl_proxy *)qt_extended_surface,
|
|
|
- (void (**)(void))listener, data);
|
|
|
-}
|
|
|
-
|
|
|
-#define QT_EXTENDED_SURFACE_UPDATE_GENERIC_PROPERTY 0
|
|
|
-#define QT_EXTENDED_SURFACE_SET_CONTENT_ORIENTATION 1
|
|
|
-#define QT_EXTENDED_SURFACE_SET_WINDOW_FLAGS 2
|
|
|
-
|
|
|
-static inline void qt_extended_surface_set_user_data(struct qt_extended_surface *qt_extended_surface, void *user_data)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_set_user_data((struct wl_proxy *)qt_extended_surface, user_data);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void *qt_extended_surface_get_user_data(struct qt_extended_surface *qt_extended_surface)
|
|
|
-{
|
|
|
- return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *)qt_extended_surface);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_extended_surface_destroy(struct qt_extended_surface *qt_extended_surface)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_destroy((struct wl_proxy *)qt_extended_surface);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_extended_surface_update_generic_property(struct qt_extended_surface *qt_extended_surface, const char *name, struct wl_array *value)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_marshal((struct wl_proxy *)qt_extended_surface,
|
|
|
- QT_EXTENDED_SURFACE_UPDATE_GENERIC_PROPERTY, name, value);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_extended_surface_set_content_orientation(struct qt_extended_surface *qt_extended_surface, int32_t orientation)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_marshal((struct wl_proxy *)qt_extended_surface,
|
|
|
- QT_EXTENDED_SURFACE_SET_CONTENT_ORIENTATION, orientation);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_extended_surface_set_window_flags(struct qt_extended_surface *qt_extended_surface, int32_t flags)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_marshal((struct wl_proxy *)qt_extended_surface,
|
|
|
- QT_EXTENDED_SURFACE_SET_WINDOW_FLAGS, flags);
|
|
|
-}
|
|
|
-
|
|
|
-/* wayland-qt-touch-extension.h */
|
|
|
-
|
|
|
-extern const struct wl_interface qt_touch_extension_interface;
|
|
|
-
|
|
|
-#ifndef QT_TOUCH_EXTENSION_FLAGS_ENUM
|
|
|
-#define QT_TOUCH_EXTENSION_FLAGS_ENUM
|
|
|
-enum qt_touch_extension_flags
|
|
|
-{
|
|
|
- QT_TOUCH_EXTENSION_FLAGS_MOUSE_FROM_TOUCH = 0x1,
|
|
|
-};
|
|
|
-#endif /* QT_TOUCH_EXTENSION_FLAGS_ENUM */
|
|
|
-
|
|
|
-struct qt_touch_extension_listener
|
|
|
-{
|
|
|
- /**
|
|
|
- * touch - (none)
|
|
|
- * @time: (none)
|
|
|
- * @id: (none)
|
|
|
- * @state: (none)
|
|
|
- * @x: (none)
|
|
|
- * @y: (none)
|
|
|
- * @normalized_x: (none)
|
|
|
- * @normalized_y: (none)
|
|
|
- * @width: (none)
|
|
|
- * @height: (none)
|
|
|
- * @pressure: (none)
|
|
|
- * @velocity_x: (none)
|
|
|
- * @velocity_y: (none)
|
|
|
- * @flags: (none)
|
|
|
- * @rawdata: (none)
|
|
|
- */
|
|
|
- void (*touch)(void *data,
|
|
|
- struct qt_touch_extension *qt_touch_extension,
|
|
|
- uint32_t time,
|
|
|
- uint32_t id,
|
|
|
- uint32_t state,
|
|
|
- int32_t x,
|
|
|
- int32_t y,
|
|
|
- int32_t normalized_x,
|
|
|
- int32_t normalized_y,
|
|
|
- int32_t width,
|
|
|
- int32_t height,
|
|
|
- uint32_t pressure,
|
|
|
- int32_t velocity_x,
|
|
|
- int32_t velocity_y,
|
|
|
- uint32_t flags,
|
|
|
- struct wl_array *rawdata);
|
|
|
- /**
|
|
|
- * configure - (none)
|
|
|
- * @flags: (none)
|
|
|
- */
|
|
|
- void (*configure)(void *data,
|
|
|
- struct qt_touch_extension *qt_touch_extension,
|
|
|
- uint32_t flags);
|
|
|
-};
|
|
|
-
|
|
|
-static inline int qt_touch_extension_add_listener(struct qt_touch_extension *qt_touch_extension,
|
|
|
- const struct qt_touch_extension_listener *listener, void *data)
|
|
|
-{
|
|
|
- return wl_proxy_add_listener((struct wl_proxy *)qt_touch_extension,
|
|
|
- (void (**)(void))listener, data);
|
|
|
-}
|
|
|
-
|
|
|
-#define QT_TOUCH_EXTENSION_DUMMY 0
|
|
|
-
|
|
|
-static inline void qt_touch_extension_set_user_data(struct qt_touch_extension *qt_touch_extension, void *user_data)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_set_user_data((struct wl_proxy *)qt_touch_extension, user_data);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void *qt_touch_extension_get_user_data(struct qt_touch_extension *qt_touch_extension)
|
|
|
-{
|
|
|
- return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *)qt_touch_extension);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_touch_extension_destroy(struct qt_touch_extension *qt_touch_extension)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_destroy((struct wl_proxy *)qt_touch_extension);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_touch_extension_dummy(struct qt_touch_extension *qt_touch_extension)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_marshal((struct wl_proxy *)qt_touch_extension,
|
|
|
- QT_TOUCH_EXTENSION_DUMMY);
|
|
|
-}
|
|
|
-
|
|
|
-/* wayland-qt-windowmanager.h */
|
|
|
-
|
|
|
-extern const struct wl_interface qt_windowmanager_interface;
|
|
|
-
|
|
|
-struct qt_windowmanager_listener
|
|
|
-{
|
|
|
- /**
|
|
|
- * hints - (none)
|
|
|
- * @show_is_fullscreen: (none)
|
|
|
- */
|
|
|
- void (*hints)(void *data,
|
|
|
- struct qt_windowmanager *qt_windowmanager,
|
|
|
- int32_t show_is_fullscreen);
|
|
|
- /**
|
|
|
- * quit - (none)
|
|
|
- */
|
|
|
- void (*quit)(void *data,
|
|
|
- struct qt_windowmanager *qt_windowmanager);
|
|
|
-};
|
|
|
-
|
|
|
-static inline int qt_windowmanager_add_listener(struct qt_windowmanager *qt_windowmanager,
|
|
|
- const struct qt_windowmanager_listener *listener, void *data)
|
|
|
-{
|
|
|
- return wl_proxy_add_listener((struct wl_proxy *)qt_windowmanager,
|
|
|
- (void (**)(void))listener, data);
|
|
|
-}
|
|
|
-
|
|
|
-#define QT_WINDOWMANAGER_OPEN_URL 0
|
|
|
-
|
|
|
-static inline void qt_windowmanager_set_user_data(struct qt_windowmanager *qt_windowmanager, void *user_data)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_set_user_data((struct wl_proxy *)qt_windowmanager, user_data);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void *qt_windowmanager_get_user_data(struct qt_windowmanager *qt_windowmanager)
|
|
|
-{
|
|
|
- return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *)qt_windowmanager);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_windowmanager_destroy(struct qt_windowmanager *qt_windowmanager)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_destroy((struct wl_proxy *)qt_windowmanager);
|
|
|
-}
|
|
|
-
|
|
|
-static inline void qt_windowmanager_open_url(struct qt_windowmanager *qt_windowmanager, uint32_t remaining, const char *url)
|
|
|
-{
|
|
|
- WAYLAND_wl_proxy_marshal((struct wl_proxy *)qt_windowmanager,
|
|
|
- QT_WINDOWMANAGER_OPEN_URL, remaining, url);
|
|
|
-}
|
|
|
-
|
|
|
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
|
|
|
-
|
|
|
-#endif /* SDL_waylandtouch_h_ */
|