SDL: Make sure we get the correct window size with SDL2

When updating or recreating the window, if we changed the window
size at the same time we also toggle between OpenGL and non
OpenGL mode, or toggle fullscreen mode, we may have a pending
SDL resize event with the wrong size. So we need to make sure to
append another one with the correct size to end up with the correct
size. This fixes bug #9971.
This commit is contained in:
Thierry Crozat 2017-07-27 21:05:27 +01:00
parent 013b09fa28
commit 00bbb73ce5
2 changed files with 20 additions and 1 deletions

View file

@ -253,6 +253,14 @@ bool SdlWindow::createOrUpdateWindow(int width, int height, uint32 flags) {
return false;
}
// In some cases at this point there may be a pending SDL resize event with the old size.
// This happens for example if we destroyed the window, or when switching between windowed
// and fullscreen modes. If we changed the window size here, this pending event will have the
// old (and incorrect) size. To avoid any issue we call SDL_SetWindowSize() to generate another
// resize event (SDL_WINDOWEVENT_SIZE_CHANGED) so that the last resize event we receive has
// the correct size. This fixes for exmample bug #9971: SDL2: Fullscreen to RTL launcher resolution
SDL_SetWindowSize(_window, width, height);
_lastFlags = flags;
return true;