bdallen Wrote:However in 1.3 the iconification-on-lost-focus behavior for SDL_WINDOW_FULLSCREEN seems arbitrary. Why isn't there an option to disable the iconification-on-lost-focus behavior, like there is for grabbing? If FULLSCREEN really does have potential performance optimizations, then FULLSCREEN with no grab and no iconification would really be different (and better for some applications) than (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_BORDERLESS). Perhaps this is not the place to split hairs about API design, but I'm curious if you have any insight into why this is being done.
It isn't arbitrary at all. Undew win32, FULLSCREEN isn't a very good term for what you're requesting when you pass SDL_FULLSCREEN to SDL_SetVideoMode.
What you're requesting is a temporary change in resolution of the primary display and then create a window to fill that new resolution. Think of when you want to play a 720p video and you're running your desktop at 1600x1200. You swap the resolution to 1280x720 and start playing the video. Now suddenly you decide you want to browse the web. When focus leaves XBMC, resolution should return to desktop resolution. Well what should that 1280x720 video window now do? Rather than leave a window that thought it was fullscreen but now is half the size of the screen dangling over your desktop, the window is minimized. If you switch back to that window, your display resolution will switch back to 1280x720 fullscreen again.
That's what FULLSCREEN means. It implies "take up the whole screen" but the real purpose of it is to
change the resolution and capture input, and when the window loses focus to reverse those changes and iconify.
Just thinking out lout here but what we should do is identify our goals here change the XBMC preferences to match those goals. What varieties of window do we need?
- Windowed mode: A fixed size decorated window with borders.
- Maximized mode: A fixed size borderless window with no decoration that is topmost and the size of the current screen resolution.
The next question is how does the user tell XBMC it wants it to switch the resolution. Maybe I'm creating too many options? How about something more along of three options
- Resolution
- Windowed?
- Display (if not windowed)
If not windowed then XBMC does not FULLSCREEN but rather permanently switches resolution to this new mode. Display is used only if there are multiple displays on the user's system.