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 45 #define SDL_VIDEO_DRIVER_X11_DYNAMIC NULL 47 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT 48 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT NULL 50 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR 51 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR NULL 53 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA 54 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA NULL 56 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 57 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 NULL 59 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR 60 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR NULL 62 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS 63 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS NULL 65 #ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE 66 #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE NULL 69 static x11dynlib x11libs[] = {
72 {
NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR},
81 X11_GetSym(
const char *fnname,
int *pHasModule)
86 if (x11libs[i].lib !=
NULL) {
95 printf(
"X11: Found '%s' in %s (%p)\n", fnname, x11libs[i].libname, fn);
97 printf(
"X11: Symbol '%s' NOT FOUND!\n", fnname);
109 #define SDL_X11_MODULE(modname) 110 #define SDL_X11_SYM(rc,fn,params,args,ret) SDL_DYNX11FN_##fn X11_##fn = NULL; 112 #undef SDL_X11_MODULE 116 #ifdef X_HAVE_UTF8_STRING 117 SDL_DYNX11FN_XCreateIC X11_XCreateIC =
NULL;
118 SDL_DYNX11FN_XGetICValues X11_XGetICValues =
NULL;
122 #define SDL_X11_MODULE(modname) int SDL_X11_HAVE_##modname = 0; 123 #define SDL_X11_SYM(rc,fn,params,args,ret) 125 #undef SDL_X11_MODULE 128 static int x11_load_refcount = 0;
134 if (x11_load_refcount > 0) {
135 if (--x11_load_refcount == 0) {
139 #define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 0; 140 #define SDL_X11_SYM(rc,fn,params,args,ret) X11_##fn = NULL; 142 #undef SDL_X11_MODULE 145 #ifdef X_HAVE_UTF8_STRING 146 X11_XCreateIC =
NULL;
147 X11_XGetICValues =
NULL;
150 #ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC 152 if (x11libs[i].lib !=
NULL) {
154 x11libs[
i].lib =
NULL;
169 if (x11_load_refcount++ == 0) {
170 #ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC 174 if (x11libs[i].libname !=
NULL) {
179 #define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 1; 180 #define SDL_X11_SYM(a,fn,x,y,z) 182 #undef SDL_X11_MODULE 185 #define SDL_X11_MODULE(modname) thismod = &SDL_X11_HAVE_##modname; 186 #define SDL_X11_SYM(a,fn,x,y,z) X11_##fn = (SDL_DYNX11FN_##fn) X11_GetSym(#fn,thismod); 188 #undef SDL_X11_MODULE 191 #ifdef X_HAVE_UTF8_STRING 192 X11_XCreateIC = (SDL_DYNX11FN_XCreateIC)
193 X11_GetSym(
"XCreateIC", &SDL_X11_HAVE_UTF8);
194 X11_XGetICValues = (SDL_DYNX11FN_XGetICValues)
195 X11_GetSym(
"XGetICValues", &SDL_X11_HAVE_UTF8);
198 if (SDL_X11_HAVE_BASEXLIB) {
209 #define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 1; 210 #define SDL_X11_SYM(a,fn,x,y,z) X11_##fn = (SDL_DYNX11FN_##fn) fn; 212 #undef SDL_X11_MODULE 215 #ifdef X_HAVE_UTF8_STRING 216 X11_XCreateIC = XCreateIC;
217 X11_XGetICValues = XGetICValues;
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA
int SDL_X11_LoadSymbols(void)
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
#define SDL_TABLESIZE(table)
#define SDL_VIDEO_DRIVER_X11_DYNAMIC
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)
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE
void SDL_X11_UnloadSymbols(void)
void * SDL_LoadFunction(void *handle, const char *name)
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR