From 0c463d770bb8da2d891217d2e3d49d4d69c99910 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Thu, 10 Dec 2015 20:25:34 -0400 Subject: [PATCH] SDL_GL_GetAttribute: If a GL context isn't active, only return failure when the specified attribute needs an active GL context to be queried. --- src/render/opengl/SDL_render_gl.c | 2 +- src/render/opengles/SDL_render_gles.c | 2 +- src/render/opengles2/SDL_render_gles2.c | 2 +- src/video/SDL_video.c | 20 ++++++++++---------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index f5ac96d018d57..6b825665bf3a7 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -393,7 +393,7 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags) const char *hint; GLint value; Uint32 window_flags; - int profile_mask, major, minor; + int profile_mask = 0, major = 0, minor = 0; SDL_bool changed_window = SDL_FALSE; SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profile_mask); diff --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index 21c22bfd76c12..18329d798cd3d 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -285,7 +285,7 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags) GLES_RenderData *data; GLint value; Uint32 window_flags; - int profile_mask, major, minor; + int profile_mask = 0, major = 0, minor = 0; SDL_bool changed_window = SDL_FALSE; SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profile_mask); diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index 7254cb7a33778..b911b66a57fdb 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -1956,7 +1956,7 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags) Uint32 window_flags; GLint window_framebuffer; GLint value; - int profile_mask, major, minor; + int profile_mask = 0, major = 0, minor = 0; SDL_bool changed_window = SDL_FALSE; SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profile_mask); diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 753eac98a36aa..68a5ab4568511 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -2913,18 +2913,8 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value) void (APIENTRY *glGetFramebufferAttachmentParameterivFunc) (GLenum target, GLenum attachment, GLenum pname, GLint* params); GLenum attachment = GL_BACK_LEFT; GLenum attachmentattrib = 0; - - glGetStringFunc = SDL_GL_GetProcAddress("glGetString"); - if (!glGetStringFunc) { - return SDL_SetError("Failed getting OpenGL glGetString entry point"); - } #endif - glGetErrorFunc = SDL_GL_GetProcAddress("glGetError"); - if (!glGetErrorFunc) { - return SDL_SetError("Failed getting OpenGL glGetError entry point"); - } - /* Clear value in any case */ *value = 0; @@ -3095,6 +3085,11 @@ 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"); + } + if (attachmentattrib && isAtLeastGL3((const char *) glGetStringFunc(GL_VERSION))) { glGetFramebufferAttachmentParameterivFunc = SDL_GL_GetProcAddress("glGetFramebufferAttachmentParameteriv"); @@ -3115,6 +3110,11 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value) } } + glGetErrorFunc = SDL_GL_GetProcAddress("glGetError"); + if (!glGetErrorFunc) { + return SDL_SetError("Failed getting OpenGL glGetError entry point"); + } + error = glGetErrorFunc(); if (error != GL_NO_ERROR) { if (error == GL_INVALID_ENUM) {