Skip to content

Moving exclusive fullscreen windows between monitors seamlessly #12536

Closed
@theagentd

Description

@theagentd

Hello!

I've been exploring fullscreen windows lately, and I have noticed that there are some odd interactions when moving fullscreen windows between displays using Windows-key+shift+left/right arrow. This works completely seamlessly for borderless fullscreen windows, absolutely great there!

However, for exclusive fullscreen windows, it seems like it tries to bring over the set display mode to the new window, causing a display mode change to happen. It seems like when a window is moved to a different display using this shortcut, all displays will change to the closest display mode of the one initially set using SDL_SetWindowFullscreenMode() when the window ends up on them. This changed display mode remains as long as the program is running.

Example: I have three monitors:

  • A 1440p 240Hz monitor.
  • A 1440p 165Hz monitor.
  • A 4K 120Hz monitor.

Start on the 240 Hz monitor --> 165Hz monitor stays the same; the 4K monitor switches to 1440p.
Start on the 165 Hz monitor --> 240Hz monitor switches to 165Hz; the 4K monitor switches to 1440p.
Start on the 4K monitor --> seamless switching, as the other ones can't do 4K.

Ideally, I would like to use the desktop display mode for all windows, just like for borderless fullscreen. To accomplish that, I attempted to detect the user moving a window from one display to another using this shortcut by looking out for SDL_EVENT_WINDOW_DISPLAY_CHANGED events, and then changing the display mode based on that. Unfortunately, this detection isn't fast enough, so my monitors still switch display modes before I can switch them back, resulting in a lot of flickering, 1-second freezes, etc.

Is there a way to get the same seamless movement between displays as for borderless fullscreen right now? Or is this something that would require changes in SDL to accomplish? Alternatively, can I disable the Win+shift+left/right shortcut for my SDL windows?

Thanks in advance!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions