22 #include "../../SDL_internal.h"
24 #if SDL_VIDEO_DRIVER_KMSDRM
26 #define DEBUG_DYNAMIC_KMSDRM 0
30 #if DEBUG_DYNAMIC_KMSDRM
34 #ifdef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
45 #ifndef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
46 #define SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC NULL
48 #ifndef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM
49 #define SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM NULL
52 static kmsdrmdynlib kmsdrmlibs[] = {
53 {
NULL, SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC},
54 {
NULL, SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM}
58 KMSDRM_GetSym(
const char *fnname,
int *pHasModule)
63 if (kmsdrmlibs[i].lib !=
NULL) {
70 #if DEBUG_DYNAMIC_KMSDRM
72 SDL_Log(
"KMSDRM: Found '%s' in %s (%p)\n", fnname, kmsdrmlibs[i].libname, fn);
74 SDL_Log(
"KMSDRM: Symbol '%s' NOT FOUND!\n", fnname);
86 #define SDL_KMSDRM_MODULE(modname) int SDL_KMSDRM_HAVE_##modname = 0;
87 #define SDL_KMSDRM_SYM(rc,fn,params) SDL_DYNKMSDRMFN_##fn KMSDRM_##fn = NULL;
88 #define SDL_KMSDRM_SYM_CONST(type,name) SDL_DYNKMSDRMCONST_##name KMSDRM_##name = NULL;
91 static int kmsdrm_load_refcount = 0;
97 if (kmsdrm_load_refcount > 0) {
98 if (--kmsdrm_load_refcount == 0) {
99 #ifdef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
104 #define SDL_KMSDRM_MODULE(modname) SDL_KMSDRM_HAVE_##modname = 0;
105 #define SDL_KMSDRM_SYM(rc,fn,params) KMSDRM_##fn = NULL;
106 #define SDL_KMSDRM_SYM_CONST(type,name) KMSDRM_##name = NULL;
110 #ifdef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
112 if (kmsdrmlibs[i].lib !=
NULL) {
114 kmsdrmlibs[
i].lib =
NULL;
129 if (kmsdrm_load_refcount++ == 0) {
130 #ifdef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
134 if (kmsdrmlibs[i].libname !=
NULL) {
139 #define SDL_KMSDRM_MODULE(modname) SDL_KMSDRM_HAVE_##modname = 1;
142 #define SDL_KMSDRM_MODULE(modname) thismod = &SDL_KMSDRM_HAVE_##modname;
143 #define SDL_KMSDRM_SYM(rc,fn,params) KMSDRM_##fn = (SDL_DYNKMSDRMFN_##fn) KMSDRM_GetSym(#fn,thismod);
144 #define SDL_KMSDRM_SYM_CONST(type,name) KMSDRM_##name = *(SDL_DYNKMSDRMCONST_##name*) KMSDRM_GetSym(#name,thismod);
147 if ((SDL_KMSDRM_HAVE_LIBDRM) && (SDL_KMSDRM_HAVE_GBM)) {
158 #define SDL_KMSDRM_MODULE(modname) SDL_KMSDRM_HAVE_##modname = 1;
159 #define SDL_KMSDRM_SYM(rc,fn,params) KMSDRM_##fn = fn;
160 #define SDL_KMSDRM_SYM_CONST(type,name) KMSDRM_##name = name;
void SDL_KMSDRM_UnloadSymbols(void)
int SDL_KMSDRM_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)
#define SDL_TABLESIZE(table)
void * SDL_LoadFunction(void *handle, const char *name)