From 694329376df2a2a491f1f665e4231a167ff11a3f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 3 Sep 2016 02:52:18 +0300 Subject: Fix context switching in SDL 2. --- src/utils/sdl2helper.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'src/utils') diff --git a/src/utils/sdl2helper.cpp b/src/utils/sdl2helper.cpp index f0a3b7616..7a9a92c88 100644 --- a/src/utils/sdl2helper.cpp +++ b/src/utils/sdl2helper.cpp @@ -104,26 +104,26 @@ void *SDL::createGLContext(SDL_Window *const window, // SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG); SDL_ClearError(); void *context = SDL_GL_CreateContext(window); - if (SDL_GetError()) + if (context == nullptr) { logger->log("Error to switch to context %d.%d: %s", major, minor, SDL_GetError()); } - if (SDL_GetError() && (major > 3 || (major == 3 && minor > 3))) + if (context == nullptr && (major > 3 || (major == 3 && minor > 3))) { - logger->log("Try fallback to OpenGL 3.3 core context"); + logger->log("Try fallback to OpenGL 3.3 context"); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3); SDL_ClearError(); context = SDL_GL_CreateContext(window); - if (SDL_GetError()) + if (context == nullptr) { - logger->log("Error to switch to core context 3.3: %s", + logger->log("Error to switch to context 3.3: %s", SDL_GetError()); } - if (SDL_GetError() && profile == 0x01) + if (context == nullptr && profile == 0x01) { logger->log("Try fallback to OpenGL 3.3 compatibility context"); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); @@ -131,14 +131,14 @@ void *SDL::createGLContext(SDL_Window *const window, SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, 0x02); SDL_ClearError(); context = SDL_GL_CreateContext(window); - if (SDL_GetError()) + if (context == nullptr) { logger->log("Error to switch to compatibility context 3.3: %s", SDL_GetError()); } } } - if (SDL_GetError() && (major > 3 || (major == 3 && minor > 0))) + if (context == nullptr && (major > 3 || (major == 3 && minor > 0))) { logger->log("Error to switch to core context %d.%d: %s", major, @@ -149,25 +149,29 @@ void *SDL::createGLContext(SDL_Window *const window, SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profile); context = SDL_GL_CreateContext(window); - if (SDL_GetError()) + if (context == nullptr) { logger->log("Error to switch to core context 3.0: %s", SDL_GetError()); } } - if (SDL_GetError() && (major > 2 || (major == 2 && minor > 1))) + if (context == nullptr && (major > 2 || (major == 2 && minor > 1))) { logger->log("Try fallback to OpenGL 2.1 compatibility context"); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, 0x02); context = SDL_GL_CreateContext(window); - if (SDL_GetError()) + if (context == nullptr) { logger->log("Error to switch to compatibility context 2.1: %s", SDL_GetError()); } } + if (context == nullptr) + { + logger->log("Cant find working context."); + } return context; } -- cgit v1.2.3-60-g2f50