On Wed, Jul 29, 2009 at 11:55 PM, Johan Gill johan.gill@gmail.com wrote:
This patch fixes bug 17215. Since the patch was seemingly dropped, I made some test improvements and resubmit it.
The tests pass on Windows XP, and of course Wine.
Suggested changelog: In DirectDraw fullscreen mode, make sure the fullscreen window is resized when the display mode changes
Johan Gill
Since I heard nothing on this, I make a request here
/Johan Gill
Am Wednesday 05 August 2009 18:58:42 schrieb Johan Gill:
On Wed, Jul 29, 2009 at 11:55 PM, Johan Gill johan.gill@gmail.com wrote:
This patch fixes bug 17215. Since the patch was seemingly dropped, I made some test improvements and resubmit it.
The tests pass on Windows XP, and of course Wine.
Suggested changelog: In DirectDraw fullscreen mode, make sure the fullscreen window is resized when the display mode changes
Sorry, I haven't noticed the patch earlier. Please nadd the component the patch addresses in topic, for example "ddraw: Resize fullscreen win..." - that makes them more visible for me when I look for ddraw/d3d related patches.
As for the patch itself WineD3D.dll already has similar window resize code. Do you know why it doesn't resize the window, and if we can make wined3d do this job?
On Wed, Aug 5, 2009 at 7:51 PM, Stefan Dösinger stefandoesinger@gmx.atwrote:
Am Wednesday 05 August 2009 18:58:42 schrieb Johan Gill:
On Wed, Jul 29, 2009 at 11:55 PM, Johan Gill johan.gill@gmail.com
wrote:
This patch fixes bug 17215. Since the patch was seemingly dropped, I
made
some test improvements and resubmit it.
The tests pass on Windows XP, and of course Wine.
Suggested changelog: In DirectDraw fullscreen mode, make sure the fullscreen window is
resized
when the display mode changes
Sorry, I haven't noticed the patch earlier. Please nadd the component the patch addresses in topic, for example "ddraw: Resize fullscreen win..." - that makes them more visible for me when I look for ddraw/d3d related patches.
As for the patch itself WineD3D.dll already has similar window resize code. Do you know why it doesn't resize the window, and if we can make wined3d do this job?
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:
/* Setup hwnd we are using, plus which display this equates to */ object->win_handle = pPresentationParameters->hDeviceWindow; if (!object->win_handle) { object->win_handle = This->createParms.hFocusWindow; } if(!pPresentationParameters->Windowed && object->win_handle) { IWineD3DDeviceImpl_SetupFullscreenWindow(iface, object->win_handle,
pPresentationParameters->BackBufferWidth,
pPresentationParameters->BackBufferHeight);
/Johan Gill
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
Am Wednesday 12 August 2009 03:05:43 schrieb Stefan Dösinger:
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
Ah, I forgot to add yesterday, that writing some tests about mode changes is on my todo list, although not within the next few weeks.
On Wed, Aug 12, 2009 at 3:05 AM, Stefan Dösinger stefandoesinger@gmx.atwrote:
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
What's the current status here? I've been up to the nose in other things,
but I should be able to check a few things out if needed.
/Johan Gill