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
52static kmsdrmdynlib kmsdrmlibs[] = {
53 {
NULL, SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC},
54 {
NULL, SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM}
58KMSDRM_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;
91static 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;
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)