Commit 005a6c63 authored by Józef Kucia's avatar Józef Kucia Committed by Alexandre Julliard

dxgi: Switch display mode when creating fullscreen swapchains.

parent bbc2d604
...@@ -443,8 +443,7 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device ...@@ -443,8 +443,7 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device
WARN("Failed to get adapter parent, hr %#x.\n", hr); WARN("Failed to get adapter parent, hr %#x.\n", hr);
return hr; return hr;
} }
swapchain->device = &device->IWineDXGIDevice_iface; IWineDXGIDevice_AddRef(swapchain->device = &device->IWineDXGIDevice_iface);
IWineDXGIDevice_AddRef(swapchain->device);
} }
else else
{ {
...@@ -454,8 +453,6 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device ...@@ -454,8 +453,6 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device
swapchain->IDXGISwapChain_iface.lpVtbl = &dxgi_swapchain_vtbl; swapchain->IDXGISwapChain_iface.lpVtbl = &dxgi_swapchain_vtbl;
swapchain->refcount = 1; swapchain->refcount = 1;
swapchain->fullscreen = FALSE;
swapchain->target = NULL;
wined3d_mutex_lock(); wined3d_mutex_lock();
wined3d_private_store_init(&swapchain->private_store); wined3d_private_store_init(&swapchain->private_store);
...@@ -463,6 +460,34 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device ...@@ -463,6 +460,34 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device
&dxgi_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain))) &dxgi_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain)))
{ {
WARN("Failed to create wined3d swapchain, hr %#x.\n", hr); WARN("Failed to create wined3d swapchain, hr %#x.\n", hr);
goto cleanup;
}
swapchain->fullscreen = !desc->windowed;
swapchain->target = NULL;
if (swapchain->fullscreen)
{
if (FAILED(hr = wined3d_swapchain_set_fullscreen(swapchain->wined3d_swapchain,
desc, NULL)))
{
WARN("Failed to set fullscreen state, hr %#x.\n", hr);
wined3d_swapchain_decref(swapchain->wined3d_swapchain);
goto cleanup;
}
if (FAILED(hr = IDXGISwapChain_GetContainingOutput(&swapchain->IDXGISwapChain_iface,
&swapchain->target)))
{
WARN("Failed to get target output for fullscreen swapchain, hr %#x.\n", hr);
wined3d_swapchain_decref(swapchain->wined3d_swapchain);
goto cleanup;
}
}
wined3d_mutex_unlock();
return S_OK;
cleanup:
wined3d_private_store_cleanup(&swapchain->private_store); wined3d_private_store_cleanup(&swapchain->private_store);
wined3d_mutex_unlock(); wined3d_mutex_unlock();
if (swapchain->factory) if (swapchain->factory)
...@@ -470,8 +495,4 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device ...@@ -470,8 +495,4 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device
if (swapchain->device) if (swapchain->device)
IWineDXGIDevice_Release(swapchain->device); IWineDXGIDevice_Release(swapchain->device);
return hr; return hr;
}
wined3d_mutex_unlock();
return S_OK;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment