21 #include "../../SDL_internal.h"
23 #if SDL_VIDEO_DRIVER_MIR
25 #define DEBUG_DYNAMIC_MIR 0
33 #ifdef SDL_VIDEO_DRIVER_MIR_DYNAMIC
44 #ifndef SDL_VIDEO_DRIVER_MIR_DYNAMIC
45 #define SDL_VIDEO_DRIVER_MIR_DYNAMIC NULL
47 #ifndef SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON
48 #define SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON NULL
51 static mirdynlib mirlibs[] = {
52 {
NULL, SDL_VIDEO_DRIVER_MIR_DYNAMIC},
53 {
NULL, SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON}
57 MIR_GetSym(
const char *fnname,
int *pHasModule)
62 if (mirlibs[
i].lib !=
NULL) {
71 SDL_Log(
"MIR: Found '%s' in %s (%p)\n", fnname, mirlibs[
i].libname, fn);
73 SDL_Log(
"MIR: Symbol '%s' NOT FOUND!\n", fnname);
85 #define SDL_MIR_MODULE(modname) int SDL_MIR_HAVE_##modname = 0;
86 #define SDL_MIR_SYM(rc,fn,params) SDL_DYNMIRFN_##fn MIR_##fn = NULL;
87 #define SDL_MIR_SYM_CONST(type,name) SDL_DYMMIRCONST_##name MIR_##name = NULL;
90 static int mir_load_refcount = 0;
96 if (mir_load_refcount > 0) {
97 if (--mir_load_refcount == 0) {
98 #ifdef SDL_VIDEO_DRIVER_MIR_DYNAMIC
103 #define SDL_MIR_MODULE(modname) SDL_MIR_HAVE_##modname = 0;
104 #define SDL_MIR_SYM(rc,fn,params) MIR_##fn = NULL;
105 #define SDL_MIR_SYM_CONST(type,name) MIR_##name = NULL;
109 #ifdef SDL_VIDEO_DRIVER_MIR_DYNAMIC
111 if (mirlibs[
i].lib !=
NULL) {
113 mirlibs[
i].lib =
NULL;
128 if (mir_load_refcount++ == 0) {
129 #ifdef SDL_VIDEO_DRIVER_MIR_DYNAMIC
133 if (mirlibs[
i].libname !=
NULL) {
138 #define SDL_MIR_MODULE(modname) SDL_MIR_HAVE_##modname = 1;
141 #define SDL_MIR_MODULE(modname) thismod = &SDL_MIR_HAVE_##modname;
142 #define SDL_MIR_SYM(rc,fn,params) MIR_##fn = (SDL_DYNMIRFN_##fn) MIR_GetSym(#fn,thismod);
143 #define SDL_MIR_SYM_CONST(type,name) MIR_##name = *(SDL_DYMMIRCONST_##name*) MIR_GetSym(#name,thismod);
146 if ((SDL_MIR_HAVE_MIR_CLIENT) && (SDL_MIR_HAVE_XKBCOMMON)) {
157 #define SDL_MIR_MODULE(modname) SDL_MIR_HAVE_##modname = 1;
158 #define SDL_MIR_SYM(rc,fn,params) MIR_##fn = fn;
159 #define SDL_MIR_SYM_CONST(type,name) MIR_##name = name;