From 4a9c6f0a14b2b17c335eacba46a52a2241428db6 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 12 Aug 2017 15:55:54 -0700 Subject: [PATCH] Fixed bug 3173 - SDL_GL_GetAttribute overwrites error code from SDL_GL_GetProcAddress Yann Dirson When SDL_GL_GetProcAddress returns in error, the cause of the error is overwritten in GL_GL_GetAttribute, reporting to the user "Failed getting OpenGL glGetString entry point", whereas the original "OpenGL library not loaded" never makes it to the user. Pushed a fix to: https://github.com/O-Computers/SDL/commit/f94cb13708ef4d236f8a2a330135b9b3a47db204 Note that the "OpenGL library not loaded" error looks like no root cause either, and I'm still puzzled by the code path used: I'm forcing opengles2 renderer on the x11 video driver on a rpi2, as in https://bugzilla.libsdl.org/3169, and although I now know that I must force the use of the RPI video driver instead of the x11 one, I suspect even more accurate info can be given to user. --- src/video/SDL_video.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index d1e7b278c..564d108c7 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -3302,7 +3302,7 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value) #if SDL_VIDEO_OPENGL glGetStringFunc = SDL_GL_GetProcAddress("glGetString"); if (!glGetStringFunc) { - return SDL_SetError("Failed getting OpenGL glGetString entry point"); + return -1; } if (attachmentattrib && isAtLeastGL3((const char *) glGetStringFunc(GL_VERSION))) { @@ -3311,7 +3311,7 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value) if (glGetFramebufferAttachmentParameterivFunc) { glGetFramebufferAttachmentParameterivFunc(GL_FRAMEBUFFER, attachment, attachmentattrib, (GLint *) value); } else { - return SDL_SetError("Failed getting OpenGL glGetFramebufferAttachmentParameteriv entry point"); + return -1; } } else #endif @@ -3321,13 +3321,13 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value) if (glGetIntegervFunc) { glGetIntegervFunc(attrib, (GLint *) value); } else { - return SDL_SetError("Failed getting OpenGL glGetIntegerv entry point"); + return -1; } } glGetErrorFunc = SDL_GL_GetProcAddress("glGetError"); if (!glGetErrorFunc) { - return SDL_SetError("Failed getting OpenGL glGetError entry point"); + return -1; } error = glGetErrorFunc();