diff --git a/libobs-opengl/gl-subsystem.c b/libobs-opengl/gl-subsystem.c index 05afb7f7429b9657335a8ec78edd7db290161ad7..23a303ea4f352ee62280d1201018d13c33fea2ba 100644 --- a/libobs-opengl/gl-subsystem.c +++ b/libobs-opengl/gl-subsystem.c @@ -72,9 +72,10 @@ static void GLEW_TEMP_API gl_debug_proc( static void gl_enable_debug() { /* Perhaps we should create GLEW contexts? */ - - if (GLEW_ARB_debug_output) + if (GLEW_VERSION_4_3) glDebugMessageCallback(gl_debug_proc, NULL); + if (GLEW_ARB_debug_output) + glDebugMessageCallbackARB(gl_debug_proc, NULL); else { blog(LOG_DEBUG, "Failed to set GL debug callback as it is " "not supported."); diff --git a/libobs-opengl/gl-windows.c b/libobs-opengl/gl-windows.c index cf04c62c1c707cc69ac75d2cc0386a87b0f6bc14..0937b57651d7df2d15d8dfff5742a46bc13a2399 100644 --- a/libobs-opengl/gl-windows.c +++ b/libobs-opengl/gl-windows.c @@ -237,6 +237,7 @@ static inline void required_extension_error(const char *extension) static bool gl_init_extensions(device_t device) { + glewExperimental = true; GLenum errorcode = glewInit(); if (errorcode != GLEW_OK) { blog(LOG_ERROR, "glewInit failed, %u", errorcode); diff --git a/libobs-opengl/gl-x11.c b/libobs-opengl/gl-x11.c index d1eebd6c06b122c98856881dfda74eba42bd497e..046676acd776bc3827e980bb1e72bf5f568cd53b 100644 --- a/libobs-opengl/gl-x11.c +++ b/libobs-opengl/gl-x11.c @@ -26,19 +26,7 @@ static const GLenum ctx_attribs[] = { None, }; -static const char* __GLX_error_table[] = { - "Success", - "Bad Screen", - "Bad Attribute", - "No Extension", - "Bad Visual", - "Bad Content", - "Bad Value", - "Bad Enumeration" -}; - -#define GET_GLX_ERROR(x) \ - __GLX_error_table[x] +#define ERROR_TEXT_LEN 1024 struct gl_windowinfo { uint32_t id; @@ -52,7 +40,11 @@ struct gl_platform { static int GLXErrorHandler(Display *disp, XErrorEvent *error) { - blog(LOG_ERROR, "GLX error: %s\n", GET_GLX_ERROR(error->error_code)); + char error_buf[ERROR_TEXT_LEN]; + + XGetErrorText(disp, error->error_code, error_buf, ERROR_TEXT_LEN); + blog(LOG_ERROR, "GLX error: %s\n", error_buf); + return 0; }