osu-framework icon indicating copy to clipboard operation
osu-framework copied to clipboard

The window is severely deformed when switching back from the background

Open smoogipoo opened this issue 3 years ago • 1 comments

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 image updater.log runtime.log network.log performance.log

smoogipoo avatar Sep 14 '22 07:09 smoogipoo

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: image

smoogipoo avatar Sep 14 '22 07:09 smoogipoo

On windows, this can only be reproduced in borderless fullscreen.

Susko3 avatar Oct 08 '22 23:10 Susko3

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.

Susko3 avatar Oct 18 '22 08:10 Susko3

I'll look to update SDL after the next release.

peppy avatar Oct 21 '22 12:10 peppy

  • Fixed with https://github.com/ppy/osu-framework/pull/5476

Susko3 avatar Nov 18 '22 19:11 Susko3