osu-framework
osu-framework copied to clipboard
The window is severely deformed when switching back from the background
Discussed in https://github.com/ppy/osu-framework/discussions/5406
Originally posted by RBQcat September 14, 2022
win+D minimize window and switch back
problem appear
Switching back to the window again will return to normal
But the cursor will be limited to the upper left corner
I am playing on windows 11
updater.log
runtime.log
network.log
performance.log
Perhaps this is a recurrence of the recent (well, "recent" - been going on for a few months now) Linux issues, allowing these sorts of states to happen:

On windows, this can only be reproduced in borderless fullscreen.
This is fixed in current SDL2 main (0bc852ce5354d29beb9a77957ba7e82ced37bd61).
Seems to be related to invalid SDL_WINDOWEVENT_MOVED and SDL_WINDOWEVENT_SIZE_CHANGED events being sent when minimizing a borderless window.
Testing with https://github.com/ppy/osu-framework/compare/master...Susko3:fix-minimize-in-borderless?expand=1 (this test scene should be added once we update SDL.)
Current SDL2 version:
[runtime] 2022-10-18 07:59:51 [verbose]: 🔸 Step #4 set to borderless
[runtime] 2022-10-18 07:59:51 [verbose]: 🔸 Step #5 store size and position
[runtime] 2022-10-18 07:59:51 [verbose]: 🔸 Step #6 minimize window
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3497 windowid=1 event=SDL_WINDOWEVENT_MOVED data1=-32000 data2=-32000)
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3497 windowid=1 event=SDL_WINDOWEVENT_SIZE_CHANGED data1=527 data2=39)
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3497 windowid=1 event=SDL_WINDOWEVENT_RESIZED data1=527 data2=39)
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3501 windowid=1 event=SDL_WINDOWEVENT_MINIMIZED data1=0 data2=0)
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3503 windowid=1 event=SDL_WINDOWEVENT_EXPOSED data1=0 data2=0)
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3505 windowid=1 event=SDL_WINDOWEVENT_FOCUS_LOST data1=0 data2=0)
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3514 windowid=1 event=SDL_WINDOWEVENT_LEAVE data1=0 data2=0)
[runtime] 2022-10-18 07:59:51 [verbose]: 🔸 Step #7 restore and focus window
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3716 windowid=1 event=SDL_WINDOWEVENT_FOCUS_GAINED data1=0 data2=0)
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3722 windowid=1 event=SDL_WINDOWEVENT_RESTORED data1=0 data2=0)
[runtime] 2022-10-18 07:59:51 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=3723 windowid=1 event=SDL_WINDOWEVENT_EXPOSED data1=0 data2=0)
[runtime] 2022-10-18 07:59:51 [verbose]: 🔸 Step #8 display matches
[runtime] 2022-10-18 07:59:52 [verbose]: 🔸 Step #9 client size matches
[runtime] 2022-10-18 07:59:52 [verbose]: 💥 Failed
Latest SDL2 version:
[runtime] 2022-10-18 08:19:57 [verbose]: 🔸 Step #4 set to borderless
[runtime] 2022-10-18 08:19:57 [verbose]: 🔸 Step #5 store size and position
[runtime] 2022-10-18 08:19:57 [verbose]: 🔸 Step #6 minimize window
[runtime] 2022-10-18 08:19:57 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110534 windowid=1 event=SDL_WINDOWEVENT_MINIMIZED data1=0 data2=0)
[runtime] 2022-10-18 08:19:57 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110550 windowid=1 event=SDL_WINDOWEVENT_FOCUS_LOST data1=0 data2=0)
[runtime] 2022-10-18 08:19:57 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110566 windowid=1 event=SDL_WINDOWEVENT_LEAVE data1=0 data2=0)
[runtime] 2022-10-18 08:19:57 [verbose]: 🔸 Step #7 restore and focus window
[runtime] 2022-10-18 08:19:57 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110751 windowid=1 event=SDL_WINDOWEVENT_MOVED data1=-32000 data2=-32000)
[runtime] 2022-10-18 08:19:57 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110751 windowid=1 event=SDL_WINDOWEVENT_SIZE_CHANGED data1=527 data2=39)
[runtime] 2022-10-18 08:19:57 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110751 windowid=1 event=SDL_WINDOWEVENT_RESIZED data1=527 data2=39)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110751 windowid=1 event=SDL_WINDOWEVENT_FOCUS_GAINED data1=0 data2=0)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110755 windowid=1 event=SDL_WINDOWEVENT_EXPOSED data1=0 data2=0)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110758 windowid=1 event=SDL_WINDOWEVENT_MOVED data1=-1200 data2=-232)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110758 windowid=1 event=SDL_WINDOWEVENT_RESIZED data1=1201 data2=1600)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110758 windowid=1 event=SDL_WINDOWEVENT_SIZE_CHANGED data1=1201 data2=1600)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110758 windowid=1 event=SDL_WINDOWEVENT_RESIZED data1=1201 data2=1600)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110759 windowid=1 event=SDL_WINDOWEVENT_RESTORED data1=0 data2=0)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110760 windowid=1 event=SDL_WINDOWEVENT_EXPOSED data1=0 data2=0)
[runtime] 2022-10-18 08:19:58 [verbose]: SDL application log [info]: SDL EVENT: SDL_WINDOWEVENT (timestamp=110769 windowid=1 event=SDL_WINDOWEVENT_ENTER data1=0 data2=0)
[runtime] 2022-10-18 08:19:58 [verbose]: 🔸 Step #8 display matches
[runtime] 2022-10-18 08:19:58 [verbose]: 🔸 Step #9 client size matches
[runtime] 2022-10-18 08:19:58 [verbose]: 🔸 Step #10 position matches
[runtime] 2022-10-18 08:19:58 [verbose]: ✅ TestSceneSDLMinimize completed
For whatever reason, if the events happen after the window is restored, everything is fine.
I'll look to update SDL after the next release.
- Fixed with https://github.com/ppy/osu-framework/pull/5476