23 #include "../../SDL_internal.h"
25 #if SDL_VIDEO_DRIVER_KMSDRM
27 #define DEBUG_DYNAMIC_KMSDRM 0
32 #ifdef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
43 #ifndef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
44 #define SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC NULL
46 #ifndef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM
47 #define SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM NULL
50 static kmsdrmdynlib kmsdrmlibs[] = {
51 {
NULL, SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM},
52 {
NULL, SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC}
56 KMSDRM_GetSym(
const char *fnname,
int *pHasModule)
61 if (kmsdrmlibs[
i].lib !=
NULL) {
68 #if DEBUG_DYNAMIC_KMSDRM
70 SDL_Log(
"KMSDRM: Found '%s' in %s (%p)\n", fnname, kmsdrmlibs[
i].libname, fn);
72 SDL_Log(
"KMSDRM: Symbol '%s' NOT FOUND!\n", fnname);
84 #define SDL_KMSDRM_MODULE(modname) int SDL_KMSDRM_HAVE_##modname = 0;
85 #define SDL_KMSDRM_SYM(rc,fn,params) SDL_DYNKMSDRMFN_##fn KMSDRM_##fn = NULL;
86 #define SDL_KMSDRM_SYM_CONST(type,name) SDL_DYNKMSDRMCONST_##name KMSDRM_##name = NULL;
89 static int kmsdrm_load_refcount = 0;
95 if (kmsdrm_load_refcount > 0) {
96 if (--kmsdrm_load_refcount == 0) {
97 #ifdef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
102 #define SDL_KMSDRM_MODULE(modname) SDL_KMSDRM_HAVE_##modname = 0;
103 #define SDL_KMSDRM_SYM(rc,fn,params) KMSDRM_##fn = NULL;
104 #define SDL_KMSDRM_SYM_CONST(type,name) KMSDRM_##name = NULL;
108 #ifdef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
110 if (kmsdrmlibs[
i].lib !=
NULL) {
112 kmsdrmlibs[
i].lib =
NULL;
127 if (kmsdrm_load_refcount++ == 0) {
128 #ifdef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC
132 if (kmsdrmlibs[
i].libname !=
NULL) {
137 #define SDL_KMSDRM_MODULE(modname) SDL_KMSDRM_HAVE_##modname = 1;
140 #define SDL_KMSDRM_MODULE(modname) thismod = &SDL_KMSDRM_HAVE_##modname;
141 #define SDL_KMSDRM_SYM(rc,fn,params) KMSDRM_##fn = (SDL_DYNKMSDRMFN_##fn) KMSDRM_GetSym(#fn,thismod);
142 #define SDL_KMSDRM_SYM_CONST(type,name) KMSDRM_##name = *(SDL_DYNKMSDRMCONST_##name*) KMSDRM_GetSym(#name,thismod);
145 if ((SDL_KMSDRM_HAVE_LIBDRM) && (SDL_KMSDRM_HAVE_GBM)) {
156 #define SDL_KMSDRM_MODULE(modname) SDL_KMSDRM_HAVE_##modname = 1;
157 #define SDL_KMSDRM_SYM(rc,fn,params) KMSDRM_##fn = fn;
158 #define SDL_KMSDRM_SYM_CONST(type,name) KMSDRM_##name = name;
int SDL_KMSDRM_LoadSymbols(void)
void SDL_KMSDRM_UnloadSymbols(void)
void * SDL_LoadFunction(void *handle, const char *name)
#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)