1 | /* |
2 | Simple DirectMedia Layer |
3 | Copyright (C) 1997-2021 Sam Lantinga <slouken@libsdl.org> |
4 | |
5 | This software is provided 'as-is', without any express or implied |
6 | warranty. In no event will the authors be held liable for any damages |
7 | arising from the use of this software. |
8 | |
9 | Permission is granted to anyone to use this software for any purpose, |
10 | including commercial applications, and to alter it and redistribute it |
11 | freely, subject to the following restrictions: |
12 | |
13 | 1. The origin of this software must not be misrepresented; you must not |
14 | claim that you wrote the original software. If you use this software |
15 | in a product, an acknowledgment in the product documentation would be |
16 | appreciated but is not required. |
17 | 2. Altered source versions must be plainly marked as such, and must not be |
18 | misrepresented as being the original software. |
19 | 3. This notice may not be removed or altered from any source distribution. |
20 | */ |
21 | |
22 | #include "../../SDL_internal.h" |
23 | #include "SDL_stdinc.h" |
24 | |
25 | #ifndef SDL_waylandvideo_h_ |
26 | #define SDL_waylandvideo_h_ |
27 | |
28 | |
29 | /* |
30 | !!! FIXME: xdg_wm_base is the stable replacement for zxdg_shell_v6. While it's |
31 | !!! FIXME: harmless to leave it here, consider deleting the obsolete codepath |
32 | !!! FIXME: soon, since Wayland (with xdg_wm_base) will probably be mainline |
33 | !!! FIXME: by the time people are relying on this SDL target. It's available |
34 | !!! FIXME: in Ubuntu 18.04 (and other distros). |
35 | */ |
36 | |
37 | #define |
38 | #define EGL_NO_X11 |
39 | #include <EGL/egl.h> |
40 | #include "wayland-util.h" |
41 | |
42 | #include "../SDL_sysvideo.h" |
43 | #include "../../core/linux/SDL_dbus.h" |
44 | #include "../../core/linux/SDL_ime.h" |
45 | |
46 | struct xkb_context; |
47 | struct SDL_WaylandInput; |
48 | |
49 | #ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH |
50 | struct SDL_WaylandTouch; |
51 | struct qt_surface_extension; |
52 | struct qt_windowmanager; |
53 | #endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ |
54 | |
55 | typedef struct { |
56 | struct wl_display *display; |
57 | int display_disconnected; |
58 | struct wl_registry *registry; |
59 | struct wl_compositor *compositor; |
60 | struct wl_shm *shm; |
61 | struct wl_cursor_theme *cursor_theme; |
62 | struct wl_pointer *pointer; |
63 | struct { |
64 | struct xdg_wm_base *xdg; |
65 | struct zxdg_shell_v6 *zxdg; |
66 | struct wl_shell *wl; |
67 | } shell; |
68 | struct zwp_relative_pointer_manager_v1 *relative_pointer_manager; |
69 | struct zwp_pointer_constraints_v1 *pointer_constraints; |
70 | struct wl_data_device_manager *data_device_manager; |
71 | struct zxdg_decoration_manager_v1 *decoration_manager; |
72 | struct zwp_keyboard_shortcuts_inhibit_manager_v1 *key_inhibitor_manager; |
73 | struct zwp_idle_inhibit_manager_v1 *idle_inhibit_manager; |
74 | |
75 | EGLDisplay edpy; |
76 | EGLContext context; |
77 | EGLConfig econf; |
78 | |
79 | struct xkb_context *xkb_context; |
80 | struct SDL_WaylandInput *input; |
81 | |
82 | #ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH |
83 | struct SDL_WaylandTouch *touch; |
84 | struct qt_surface_extension *surface_extension; |
85 | struct qt_windowmanager *windowmanager; |
86 | #endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ |
87 | |
88 | char *classname; |
89 | |
90 | int relative_mouse_mode; |
91 | } SDL_VideoData; |
92 | |
93 | typedef struct { |
94 | struct wl_output *output; |
95 | float scale_factor; |
96 | int width, height, refresh, transform; |
97 | SDL_VideoDisplay placeholder; |
98 | SDL_bool done; |
99 | } SDL_WaylandOutputData; |
100 | |
101 | #endif /* SDL_waylandvideo_h_ */ |
102 | |
103 | /* vi: set ts=4 sw=4 expandtab: */ |
104 | |