21 #include "../../SDL_internal.h" 23 #if SDL_VIDEO_DRIVER_WAYLAND 25 #define DEBUG_DYNAMIC_WAYLAND 0 29 #if DEBUG_DYNAMIC_WAYLAND 33 #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC 44 #ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC 45 #define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC NULL 47 #ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL 48 #define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL NULL 50 #ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR 51 #define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR NULL 53 #ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON 54 #define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON NULL 57 static waylanddynlib waylandlibs[] = {
58 {
NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC},
59 {
NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL},
60 {
NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR},
61 {
NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON}
65 WAYLAND_GetSym(
const char *fnname,
int *pHasModule)
70 if (waylandlibs[i].lib !=
NULL) {
77 #if DEBUG_DYNAMIC_WAYLAND 79 SDL_Log(
"WAYLAND: Found '%s' in %s (%p)\n", fnname, waylandlibs[i].libname, fn);
81 SDL_Log(
"WAYLAND: Symbol '%s' NOT FOUND!\n", fnname);
93 #define SDL_WAYLAND_MODULE(modname) int SDL_WAYLAND_HAVE_##modname = 0; 94 #define SDL_WAYLAND_SYM(rc,fn,params) SDL_DYNWAYLANDFN_##fn WAYLAND_##fn = NULL; 95 #define SDL_WAYLAND_INTERFACE(iface) const struct wl_interface *WAYLAND_##iface = NULL; 98 static int wayland_load_refcount = 0;
104 if (wayland_load_refcount > 0) {
105 if (--wayland_load_refcount == 0) {
106 #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC 111 #define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 0; 112 #define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = NULL; 113 #define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = NULL; 117 #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC 119 if (waylandlibs[i].lib !=
NULL) {
121 waylandlibs[
i].lib =
NULL;
136 if (wayland_load_refcount++ == 0) {
137 #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC 141 if (waylandlibs[i].libname !=
NULL) {
146 #define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 1; 149 #define SDL_WAYLAND_MODULE(modname) thismod = &SDL_WAYLAND_HAVE_##modname; 150 #define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = (SDL_DYNWAYLANDFN_##fn) WAYLAND_GetSym(#fn,thismod); 151 #define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = (struct wl_interface *) WAYLAND_GetSym(#iface,thismod); 154 if (SDL_WAYLAND_HAVE_WAYLAND_CLIENT) {
165 #define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 1; 166 #define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = fn; 167 #define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = &iface;
void SDL_WAYLAND_UnloadSymbols(void)
int SDL_WAYLAND_LoadSymbols(void)
#define SDL_TABLESIZE(table)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
void * SDL_LoadFunction(void *handle, const char *name)