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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index d1e7b27..564d108 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();