diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-09-03 02:52:18 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-09-03 02:52:49 +0300 |
commit | 694329376df2a2a491f1f665e4231a167ff11a3f (patch) | |
tree | a60f4ba0863cf011901f1cad92d4a6bf27128813 | |
parent | 6007cebe8ac49ca4f3d09b6bed5e3d41a197221a (diff) | |
download | plus-694329376df2a2a491f1f665e4231a167ff11a3f.tar.gz plus-694329376df2a2a491f1f665e4231a167ff11a3f.tar.bz2 plus-694329376df2a2a491f1f665e4231a167ff11a3f.tar.xz plus-694329376df2a2a491f1f665e4231a167ff11a3f.zip |
Fix context switching in SDL 2.
-rw-r--r-- | src/utils/sdl2helper.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
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; } |