21 #include "../../SDL_internal.h"
23 #if SDL_VIDEO_DRIVER_X11
25 #define DEBUG_DYNAMIC_X11 0
33 #ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC
44 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
45 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT NULL
47 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR
48 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR NULL
50 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA
51 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA NULL
53 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2
54 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 NULL
56 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR
57 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR NULL
59 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS
60 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS NULL
62 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE
63 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE NULL
66 static x11dynlib x11libs[] = {
69 {
NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR},
78 X11_GetSym(
const char *fnname,
int *pHasModule)
83 if (x11libs[
i].lib !=
NULL) {
92 printf(
"X11: Found '%s' in %s (%p)\n", fnname, x11libs[
i].libname, fn);
94 printf(
"X11: Symbol '%s' NOT FOUND!\n", fnname);
106 #define SDL_X11_SYM(rc,fn,params,args,ret) SDL_DYNX11FN_##fn X11_##fn = NULL;
110 #ifdef X_HAVE_UTF8_STRING
111 SDL_DYNX11FN_XCreateIC X11_XCreateIC =
NULL;
112 SDL_DYNX11FN_XGetICValues X11_XGetICValues =
NULL;
116 #define SDL_X11_MODULE(modname) int SDL_X11_HAVE_##modname = 0;
119 static int x11_load_refcount = 0;
125 if (x11_load_refcount > 0) {
126 if (--x11_load_refcount == 0) {
130 #define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 0;
131 #define SDL_X11_SYM(rc,fn,params,args,ret) X11_##fn = NULL;
134 #ifdef X_HAVE_UTF8_STRING
135 X11_XCreateIC =
NULL;
136 X11_XGetICValues =
NULL;
139 #ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC
141 if (x11libs[
i].lib !=
NULL) {
143 x11libs[
i].lib =
NULL;
158 if (x11_load_refcount++ == 0) {
159 #ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC
163 if (x11libs[
i].libname !=
NULL) {
168 #define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 1;
171 #define SDL_X11_MODULE(modname) thismod = &SDL_X11_HAVE_##modname;
172 #define SDL_X11_SYM(a,fn,x,y,z) X11_##fn = (SDL_DYNX11FN_##fn) X11_GetSym(#fn,thismod);
175 #ifdef X_HAVE_UTF8_STRING
176 X11_XCreateIC = (SDL_DYNX11FN_XCreateIC)
177 X11_GetSym(
"XCreateIC", &SDL_X11_HAVE_UTF8);
178 X11_XGetICValues = (SDL_DYNX11FN_XGetICValues)
179 X11_GetSym(
"XGetICValues", &SDL_X11_HAVE_UTF8);
182 if (SDL_X11_HAVE_BASEXLIB) {
193 #define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 1;
194 #define SDL_X11_SYM(a,fn,x,y,z) X11_##fn = (SDL_DYNX11FN_##fn) fn;
197 #ifdef X_HAVE_UTF8_STRING
198 X11_XCreateIC = XCreateIC;
199 X11_XGetICValues = XGetICValues;