diff --git a/desktop_version/src/Graphics.cpp b/desktop_version/src/Graphics.cpp index 4adab7de..95da6806 100644 --- a/desktop_version/src/Graphics.cpp +++ b/desktop_version/src/Graphics.cpp @@ -3278,22 +3278,27 @@ void Graphics::processVsync() { SDL_SetHintWithPriority(SDL_HINT_RENDER_VSYNC, vsync ? "1" : "0", SDL_HINT_OVERRIDE); - // FIXME: Sigh... work around SDL2 bug where the VSync hint is only listened to at renderer creation if (screenbuffer == NULL) { return; } + + // FIXME: Sigh... work around SDL2 bug where the VSync hint is only + // listened to at renderer creation + + // Ugh, have to re-create m_screenTexture as well, otherwise the screen + // will be black... + if (screenbuffer->m_screenTexture != NULL) + { + SDL_DestroyTexture(screenbuffer->m_screenTexture); + } + if (screenbuffer->m_renderer != NULL) { SDL_DestroyRenderer(screenbuffer->m_renderer); } screenbuffer->m_renderer = SDL_CreateRenderer(screenbuffer->m_window, -1, 0); - // Ugh, have to re-create m_screenTexture as well, otherwise the screen will be black... - if (screenbuffer->m_screenTexture != NULL) - { - SDL_DestroyTexture(screenbuffer->m_screenTexture); - } // FIXME: This is duplicated from Screen::init()! screenbuffer->m_screenTexture = SDL_CreateTexture( screenbuffer->m_renderer, @@ -3303,6 +3308,7 @@ void Graphics::processVsync() 240 ); - // Ugh, have to make sure to re-apply graphics options after doing the above, otherwise letterbox/integer won't be applied... + // Ugh, have to make sure to re-apply graphics options after doing the + // above, otherwise letterbox/integer won't be applied... screenbuffer->ResizeScreen(-1, -1); }