diff --git a/libobs-opengl/gl-x11.c b/libobs-opengl/gl-x11.c index d94310775..f5bc2aca6 100644 --- a/libobs-opengl/gl-x11.c +++ b/libobs-opengl/gl-x11.c @@ -138,6 +138,17 @@ struct gl_platform *gl_platform_create(device_t device, XSetErrorHandler(GLXErrorHandler); + /* We require glX version 1.4 */ + { + int major = 0, minor = 0; + + glXQueryVersion(display, &major, &minor); + if (major < 1 || minor < 4) { + blog(LOG_ERROR, "GLX version isn't high enough."); + goto fail0; + } + } + glXCreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)glXGetProcAddress("glXCreateContextAttribsARB"); if (!glXCreateContextAttribsARB) { blog(LOG_ERROR, "ARB_GLX_create_context not supported!"); @@ -169,9 +180,9 @@ struct gl_platform *gl_platform_create(device_t device, } /* Initialize GLEW */ - { - GLenum err = glewInit(); + { glewExperimental = true; + GLenum err = glewInit(); if (GLEW_OK != err) { blog(LOG_ERROR, glewGetErrorString(err)); @@ -192,6 +203,7 @@ struct gl_platform *gl_platform_create(device_t device, return plat; fail2: + glXMakeCurrent(display, None, NULL); glXDestroyContext(display, plat->context); fail1: XFree(configs);