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 | #ifndef SDL_waylanddyn_h_ |
23 | #define SDL_waylanddyn_h_ |
24 | |
25 | #include "../../SDL_internal.h" |
26 | |
27 | /* We can't include wayland-client.h here |
28 | * but we need some structs from it |
29 | */ |
30 | struct wl_interface; |
31 | struct wl_proxy; |
32 | struct wl_event_queue; |
33 | struct wl_display; |
34 | struct wl_surface; |
35 | struct wl_shm; |
36 | |
37 | #include <stdint.h> |
38 | #include "wayland-cursor.h" |
39 | #include "wayland-util.h" |
40 | #include "xkbcommon/xkbcommon.h" |
41 | #include "xkbcommon/xkbcommon-compose.h" |
42 | |
43 | #ifdef __cplusplus |
44 | extern "C" |
45 | { |
46 | #endif |
47 | |
48 | int SDL_WAYLAND_LoadSymbols(void); |
49 | void SDL_WAYLAND_UnloadSymbols(void); |
50 | |
51 | #define SDL_WAYLAND_MODULE(modname) extern int SDL_WAYLAND_HAVE_##modname; |
52 | #define SDL_WAYLAND_SYM(rc,fn,params) \ |
53 | typedef rc (*SDL_DYNWAYLANDFN_##fn) params; \ |
54 | extern SDL_DYNWAYLANDFN_##fn WAYLAND_##fn; |
55 | #define SDL_WAYLAND_INTERFACE(iface) extern const struct wl_interface *WAYLAND_##iface; |
56 | #include "SDL_waylandsym.h" |
57 | |
58 | |
59 | #ifdef __cplusplus |
60 | } |
61 | #endif |
62 | |
63 | /* Must be included before our #defines, see Bugzilla #4957 */ |
64 | #include "wayland-client-core.h" |
65 | |
66 | #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC |
67 | |
68 | #if defined(_WAYLAND_CLIENT_H) || defined(WAYLAND_CLIENT_H) |
69 | #error Do not include wayland-client ahead of SDL_waylanddyn.h in dynamic loading mode |
70 | #endif |
71 | |
72 | /* wayland-client-protocol.h included from wayland-client.h |
73 | * has inline functions that require these to be defined in dynamic loading mode |
74 | */ |
75 | |
76 | #define wl_proxy_create (*WAYLAND_wl_proxy_create) |
77 | #define wl_proxy_destroy (*WAYLAND_wl_proxy_destroy) |
78 | #define wl_proxy_marshal (*WAYLAND_wl_proxy_marshal) |
79 | #define wl_proxy_set_user_data (*WAYLAND_wl_proxy_set_user_data) |
80 | #define wl_proxy_get_user_data (*WAYLAND_wl_proxy_get_user_data) |
81 | #define wl_proxy_get_version (*WAYLAND_wl_proxy_get_version) |
82 | #define wl_proxy_add_listener (*WAYLAND_wl_proxy_add_listener) |
83 | #define wl_proxy_marshal_constructor (*WAYLAND_wl_proxy_marshal_constructor) |
84 | #define wl_proxy_marshal_constructor_versioned (*WAYLAND_wl_proxy_marshal_constructor_versioned) |
85 | |
86 | #define wl_seat_interface (*WAYLAND_wl_seat_interface) |
87 | #define wl_surface_interface (*WAYLAND_wl_surface_interface) |
88 | #define wl_shm_pool_interface (*WAYLAND_wl_shm_pool_interface) |
89 | #define wl_buffer_interface (*WAYLAND_wl_buffer_interface) |
90 | #define wl_registry_interface (*WAYLAND_wl_registry_interface) |
91 | #define wl_shell_surface_interface (*WAYLAND_wl_shell_surface_interface) |
92 | #define wl_region_interface (*WAYLAND_wl_region_interface) |
93 | #define wl_pointer_interface (*WAYLAND_wl_pointer_interface) |
94 | #define wl_keyboard_interface (*WAYLAND_wl_keyboard_interface) |
95 | #define wl_compositor_interface (*WAYLAND_wl_compositor_interface) |
96 | #define wl_output_interface (*WAYLAND_wl_output_interface) |
97 | #define wl_shell_interface (*WAYLAND_wl_shell_interface) |
98 | #define wl_shm_interface (*WAYLAND_wl_shm_interface) |
99 | #define wl_data_device_interface (*WAYLAND_wl_data_device_interface) |
100 | #define wl_data_offer_interface (*WAYLAND_wl_data_offer_interface) |
101 | #define wl_data_source_interface (*WAYLAND_wl_data_source_interface) |
102 | #define wl_data_device_manager_interface (*WAYLAND_wl_data_device_manager_interface) |
103 | |
104 | #endif /* SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC */ |
105 | |
106 | #include "wayland-client-protocol.h" |
107 | #include "wayland-egl.h" |
108 | |
109 | #endif /* SDL_waylanddyn_h_ */ |
110 | |
111 | /* vi: set ts=4 sw=4 expandtab: */ |
112 | |