diff options
Diffstat (limited to 'src/gl.c')
-rw-r--r-- | src/gl.c | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -8,13 +8,13 @@ typedef struct { const char *name; } dlsym_assign; -static void* dlsym_print_fail(void *handle, const char *name) { +static void* dlsym_print_fail(void *handle, const char *name, int required) { dlerror(); void *sym = dlsym(handle, name); char *err_str = dlerror(); if(!sym) - fprintf(stderr, "dlsym(handle, \"%s\") failed, error: %s\n", name, err_str ? err_str : "(null)"); + fprintf(stderr, "mgl %s: dlsym(handle, \"%s\") failed, error: %s\n", required ? "error" : "warning", name, err_str ? err_str : "(null)"); return sym; } @@ -26,16 +26,17 @@ int mgl_gl_load(mgl_gl *self) { const char *glx_path = "libGL.so.1"; self->handle = dlopen(glx_path, RTLD_LAZY); if(!self->handle) { - fprintf(stderr, "dlopen(\"%s\", RTLD_LAZY) failed\n", glx_path); + fprintf(stderr, "mgl error:dlopen(\"%s\", RTLD_LAZY) failed\n", glx_path); return -1; } const dlsym_assign required_dlsym[] = { - { &self->glXChooseVisual, "glXChooseVisual" }, - { &self->glXCreateContext, "glXCreateContext" }, + { &self->glXCreateNewContext, "glXCreateNewContext" }, + { &self->glXMakeContextCurrent, "glXMakeContextCurrent" }, { &self->glXDestroyContext, "glXDestroyContext" }, - { &self->glXMakeCurrent, "glXMakeCurrent" }, { &self->glXSwapBuffers, "glXSwapBuffers" }, + { &self->glXChooseFBConfig, "glXChooseFBConfig" }, + { &self->glXGetVisualFromFBConfig, "glXGetVisualFromFBConfig" }, { &self->glViewport, "glViewport" }, { &self->glScissor, "glScissor" }, @@ -98,7 +99,7 @@ int mgl_gl_load(mgl_gl *self) { }; for(int i = 0; required_dlsym[i].func; ++i) { - *required_dlsym[i].func = dlsym_print_fail(self->handle, required_dlsym[i].name); + *required_dlsym[i].func = dlsym_print_fail(self->handle, required_dlsym[i].name, 1); if(!required_dlsym[i].func) { mgl_gl_unload(self); return -1; @@ -114,7 +115,7 @@ int mgl_gl_load(mgl_gl *self) { }; for(int i = 0; optional_dlsym[i].func; ++i) { - *optional_dlsym[i].func = dlsym_print_fail(self->handle, optional_dlsym[i].name); + *optional_dlsym[i].func = dlsym_print_fail(self->handle, optional_dlsym[i].name, 0); } return 0; |