Check if 'GLX_ARB_get_proc_address' is supported before using
glXGetProcAddressARB.
This commit is contained in:
parent
64852f4b0e
commit
aa95df0d94
|
@ -624,7 +624,8 @@ static BOOL process_attach(void)
|
||||||
Window root = (Window)GetPropA( GetDesktopWindow(), "__wine_x11_whole_window" );
|
Window root = (Window)GetPropA( GetDesktopWindow(), "__wine_x11_whole_window" );
|
||||||
HMODULE mod = GetModuleHandleA( "x11drv.dll" );
|
HMODULE mod = GetModuleHandleA( "x11drv.dll" );
|
||||||
void *opengl_handle;
|
void *opengl_handle;
|
||||||
|
const char *extensions = NULL;
|
||||||
|
|
||||||
if (!root || !mod)
|
if (!root || !mod)
|
||||||
{
|
{
|
||||||
ERR("X11DRV not loaded. Cannot create default context.\n");
|
ERR("X11DRV not loaded. Cannot create default context.\n");
|
||||||
|
@ -665,13 +666,16 @@ static BOOL process_attach(void)
|
||||||
vis = XGetVisualInfo(default_display, VisualIDMask, &template, &num);
|
vis = XGetVisualInfo(default_display, VisualIDMask, &template, &num);
|
||||||
if (vis != NULL) default_cx = glXCreateContext(default_display, vis, 0, GL_TRUE);
|
if (vis != NULL) default_cx = glXCreateContext(default_display, vis, 0, GL_TRUE);
|
||||||
if (default_cx != NULL) glXMakeCurrent(default_display, root, default_cx);
|
if (default_cx != NULL) glXMakeCurrent(default_display, root, default_cx);
|
||||||
|
extensions = glXQueryExtensionsString(default_display, DefaultScreen(default_display));
|
||||||
XFree(vis);
|
XFree(vis);
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
|
|
||||||
opengl_handle = wine_dlopen(SONAME_LIBGL, RTLD_NOW|RTLD_GLOBAL, NULL, 0);
|
if ((extensions != NULL) && (strstr(extensions, "GLX_ARB_get_proc_address"))) {
|
||||||
if (opengl_handle != NULL) {
|
opengl_handle = wine_dlopen(SONAME_LIBGL, RTLD_NOW|RTLD_GLOBAL, NULL, 0);
|
||||||
p_glXGetProcAddressARB = wine_dlsym(opengl_handle, "glXGetProcAddressARB", NULL, 0);
|
if (opengl_handle != NULL) {
|
||||||
wine_dlclose(opengl_handle, NULL, 0);
|
p_glXGetProcAddressARB = wine_dlsym(opengl_handle, "glXGetProcAddressARB", NULL, 0);
|
||||||
|
wine_dlclose(opengl_handle, NULL, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (default_cx == NULL) {
|
if (default_cx == NULL) {
|
||||||
|
|
Loading…
Reference in New Issue