Switching to a windowed mode can be implemented via a shortcut, so that can be used if you want to access your IM while playing.
Yes, but not all applications want to do that (it might be a very bad user experience in some cases). So
Yeah, OK, but I doubt you will find a solution that pleases everyone. I presented my point of view and, as I said, it's a solution that is used by commercial applications as well. Maybe I'll take a look at Source engine games today, see what they do.
And AFAIK (please correct me if I'm wrong), such a switch can be done without having to reload all resources (e.g. textures), so it's still relatively fast.
Not always : sometime, depending on the screen size, you might want to load different image files (higher/lower resolution).
Of course, but you don't have to reload anything. So it can be done in a fast way, but there might be situations where it could take more time, depending on ones application.
On a slightly unrelated note: OS X still does not offer exclusive access to the video hardware, right?
I think it do offer such access but I don't know how (with Quartz framework maybe).
Huh, okay. I always blamed OS X's poor gaming performance on the non-exclusivity, guess I'll have to shift my blame to the drivers then ;-)
@Ceylo,
The problem is that when you capture the screen cmd+tab won't work at all.
Currently I implement the option B) kind of like you do in 1.6 except I use NSWindow's delegate methods (windowDidBecomeKey/ResignKey) instead of NSApplication notifications.
I guess Ceylo means capturing Cmd+Tab yourself, switching to desktop mode, release the screen, and resend a Cmd+Tab-Event to the system.
And to clarify my rooting for solution A, I always have something open while playing a game. Under normal circumstances I never have to resize a window, because the window manager remembers all my preferences, but when a fullscreen application screws it up it's really a hassle to get all windows back to their optimum sizes.