Am Tuesday 11 August 2009 23:43:33 schrieb Johan Gill:
There is IWineD3DDeviceImpl_SetupFullscreenWindow, but that one is not
exported so it can't be called from ddraw as it is.
Calling it from within IWineD3DDevice_SetDisplayMode seems troublesome since the hwnd to use is not always available in the WineD3DDevice. See for instance this example from CreateSwapChain:
Hmm, this entire problem is pretty tricky, and it goes beyond ddraw. We have to attack the broader set of problems.
For starts, we need a few tests to find out
*) Does ddraw change the window params at all, and if yes, when(your test already answers part of that). *) How does restoredisplaymode behave *) Does ddraw restore the display mode on SetCooperativeLevel(DDSCL_NORMAL) *) Does ddraw restore the display mode on ddraw device release? On primary surface release? *) Who restores the display mode on app exit if the ddraw iface is not released? What happens with the window in that case? *) Who restores the display mode on an app crash? *) How does User32.ChangeDisplaySettingsEx FULLSCREEN flag(= temporary mode change) work? *) What happens if two different apps set conflicting FULLSCREEN modes? *) How does the CDS FULLSCREEN flag affect the window?
And I am sure more questions will arise during the testing process