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
69static x11dynlib x11libs[] = {
72 {
NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR},
81X11_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_SYM(rc,fn,params,args,ret) SDL_DYNX11FN_##fn X11_##fn = NULL;
113#ifdef X_HAVE_UTF8_STRING
114SDL_DYNX11FN_XCreateIC X11_XCreateIC =
NULL;
115SDL_DYNX11FN_XGetICValues X11_XGetICValues =
NULL;
119#define SDL_X11_MODULE(modname) int SDL_X11_HAVE_##modname = 0;
122static int x11_load_refcount = 0;
128 if (x11_load_refcount > 0) {
129 if (--x11_load_refcount == 0) {
133#define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 0;
134#define SDL_X11_SYM(rc,fn,params,args,ret) X11_##fn = NULL;
137#ifdef X_HAVE_UTF8_STRING
138 X11_XCreateIC =
NULL;
139 X11_XGetICValues =
NULL;
142#ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC
144 if (x11libs[
i].lib !=
NULL) {
146 x11libs[
i].lib =
NULL;
161 if (x11_load_refcount++ == 0) {
162#ifdef SDL_VIDEO_DRIVER_X11_DYNAMIC
166 if (x11libs[
i].libname !=
NULL) {
171#define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 1;
174#define SDL_X11_MODULE(modname) thismod = &SDL_X11_HAVE_##modname;
175#define SDL_X11_SYM(a,fn,x,y,z) X11_##fn = (SDL_DYNX11FN_##fn) X11_GetSym(#fn,thismod);
178#ifdef X_HAVE_UTF8_STRING
179 X11_XCreateIC = (SDL_DYNX11FN_XCreateIC)
180 X11_GetSym(
"XCreateIC", &SDL_X11_HAVE_UTF8);
181 X11_XGetICValues = (SDL_DYNX11FN_XGetICValues)
182 X11_GetSym(
"XGetICValues", &SDL_X11_HAVE_UTF8);
185 if (SDL_X11_HAVE_BASEXLIB) {
196#define SDL_X11_MODULE(modname) SDL_X11_HAVE_##modname = 1;
197#define SDL_X11_SYM(a,fn,x,y,z) X11_##fn = (SDL_DYNX11FN_##fn) fn;
200#ifdef X_HAVE_UTF8_STRING
201 X11_XCreateIC = XCreateIC;
202 X11_XGetICValues = XGetICValues;
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
#define SDL_VIDEO_DRIVER_X11_DYNAMIC
void * SDL_LoadFunction(void *handle, const char *name)
#define SDL_TABLESIZE(table)
void SDL_X11_UnloadSymbols(void)
int SDL_X11_LoadSymbols(void)
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)