Fixed bug 1006
Get the GLX functions with glXGetProcAddress() when available.
This commit is contained in:
parent
83d6407648
commit
5ae90a3bef
1 changed files with 14 additions and 16 deletions
|
@ -121,28 +121,29 @@ X11_GL_LoadLibrary(_THIS, const char *path)
|
||||||
/* Load function pointers */
|
/* Load function pointers */
|
||||||
handle = _this->gl_config.dll_handle;
|
handle = _this->gl_config.dll_handle;
|
||||||
_this->gl_data->glXGetProcAddress =
|
_this->gl_data->glXGetProcAddress =
|
||||||
(void *(*)(const GLubyte *)) GL_LoadFunction(handle,
|
(void *(*)(const GLubyte *))
|
||||||
"glXGetProcAddressARB");
|
GL_LoadFunction(handle, "glXGetProcAddressARB");
|
||||||
_this->gl_data->glXChooseVisual =
|
_this->gl_data->glXChooseVisual =
|
||||||
(XVisualInfo * (*)(Display *, int, int *)) GL_LoadFunction(handle,
|
(XVisualInfo * (*)(Display *, int, int *))
|
||||||
"glXChooseVisual");
|
X11_GL_GetProcAddress(_this, "glXChooseVisual");
|
||||||
_this->gl_data->glXCreateContext =
|
_this->gl_data->glXCreateContext =
|
||||||
(GLXContext(*)(Display *, XVisualInfo *, GLXContext, int))
|
(GLXContext(*)(Display *, XVisualInfo *, GLXContext, int))
|
||||||
GL_LoadFunction(handle, "glXCreateContext");
|
X11_GL_GetProcAddress(_this, "glXCreateContext");
|
||||||
_this->gl_data->glXDestroyContext =
|
_this->gl_data->glXDestroyContext =
|
||||||
(void (*)(Display *, GLXContext)) GL_LoadFunction(handle,
|
(void (*)(Display *, GLXContext))
|
||||||
"glXDestroyContext");
|
X11_GL_GetProcAddress(_this, "glXDestroyContext");
|
||||||
_this->gl_data->glXMakeCurrent =
|
_this->gl_data->glXMakeCurrent =
|
||||||
(int (*)(Display *, GLXDrawable, GLXContext)) GL_LoadFunction(handle,
|
(int (*)(Display *, GLXDrawable, GLXContext))
|
||||||
"glXMakeCurrent");
|
X11_GL_GetProcAddress(_this, "glXMakeCurrent");
|
||||||
_this->gl_data->glXSwapBuffers =
|
_this->gl_data->glXSwapBuffers =
|
||||||
(void (*)(Display *, GLXDrawable)) GL_LoadFunction(handle,
|
(void (*)(Display *, GLXDrawable))
|
||||||
"glXSwapBuffers");
|
X11_GL_GetProcAddress(_this, "glXSwapBuffers");
|
||||||
|
|
||||||
if (!_this->gl_data->glXChooseVisual ||
|
if (!_this->gl_data->glXChooseVisual ||
|
||||||
!_this->gl_data->glXCreateContext ||
|
!_this->gl_data->glXCreateContext ||
|
||||||
!_this->gl_data->glXDestroyContext ||
|
!_this->gl_data->glXDestroyContext ||
|
||||||
!_this->gl_data->glXMakeCurrent || !_this->gl_data->glXSwapBuffers) {
|
!_this->gl_data->glXMakeCurrent ||
|
||||||
|
!_this->gl_data->glXSwapBuffers) {
|
||||||
SDL_SetError("Could not retrieve OpenGL functions");
|
SDL_SetError("Could not retrieve OpenGL functions");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -156,13 +157,10 @@ X11_GL_LoadLibrary(_THIS, const char *path)
|
||||||
void *
|
void *
|
||||||
X11_GL_GetProcAddress(_THIS, const char *proc)
|
X11_GL_GetProcAddress(_THIS, const char *proc)
|
||||||
{
|
{
|
||||||
void *handle;
|
|
||||||
|
|
||||||
handle = _this->gl_config.dll_handle;
|
|
||||||
if (_this->gl_data->glXGetProcAddress) {
|
if (_this->gl_data->glXGetProcAddress) {
|
||||||
return _this->gl_data->glXGetProcAddress((const GLubyte *) proc);
|
return _this->gl_data->glXGetProcAddress((const GLubyte *) proc);
|
||||||
}
|
}
|
||||||
return GL_LoadFunction(handle, proc);
|
return GL_LoadFunction(_this->gl_config.dll_handle, proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue