struct wined3d_swapchain_desc has already specified a output parameter now.
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/dxgi/swapchain.c | 14 +++++---------
dlls/wined3d/device.c | 11 ++---------
dlls/wined3d/swapchain.c | 17 +++++++++--------
dlls/wined3d/wined3d.spec | 2 +-
dlls/wined3d/wined3d_main.c | 3 +--
include/wine/wined3d.h | 3 +--
6 files changed, 19 insertions(+), 31 deletions(-)
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index e16eb86a701..e2757b5f006 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -160,16 +160,12 @@ HRESULT dxgi_get_output_from_window(IDXGIFactory *factory, HWND window, IDXGIOut
}
static HRESULT dxgi_swapchain_set_fullscreen_state(struct wined3d_swapchain_state *state,
- const struct wined3d_swapchain_desc *swapchain_desc, IDXGIOutput *output)
+ const struct wined3d_swapchain_desc *swapchain_desc)
{
- struct dxgi_output *dxgi_output;
HRESULT hr;
- dxgi_output = unsafe_impl_from_IDXGIOutput(output);
-
wined3d_mutex_lock();
- hr = wined3d_swapchain_state_set_fullscreen(state, swapchain_desc,
- dxgi_output->wined3d_output, NULL);
+ hr = wined3d_swapchain_state_set_fullscreen(state, swapchain_desc, NULL);
wined3d_mutex_unlock();
return hr;
@@ -441,7 +437,7 @@ static HRESULT STDMETHODCALLTYPE DECLSPEC_HOTPATCH d3d11_swapchain_SetFullscreen
wined3d_swapchain_get_desc(swapchain->wined3d_swapchain, &swapchain_desc);
swapchain_desc.output = dxgi_output->wined3d_output;
swapchain_desc.windowed = !fullscreen;
- hr = dxgi_swapchain_set_fullscreen_state(state, &swapchain_desc, target);
+ hr = dxgi_swapchain_set_fullscreen_state(state, &swapchain_desc);
wined3d_mutex_unlock();
if (FAILED(hr))
{
@@ -897,7 +893,7 @@ HRESULT d3d11_swapchain_init(struct d3d11_swapchain *swapchain, struct dxgi_devi
goto cleanup;
}
- if (FAILED(hr = dxgi_swapchain_set_fullscreen_state(state, desc, swapchain->target)))
+ if (FAILED(hr = dxgi_swapchain_set_fullscreen_state(state, desc)))
{
WARN("Failed to set fullscreen state, hr %#x.\n", hr);
IDXGIOutput_Release(swapchain->target);
@@ -2268,7 +2264,7 @@ static HRESULT STDMETHODCALLTYPE DECLSPEC_HOTPATCH d3d12_swapchain_SetFullscreen
goto fail;
wined3d_mutex_lock();
wined3d_desc.windowed = !fullscreen;
- hr = dxgi_swapchain_set_fullscreen_state(swapchain->state, &wined3d_desc, target);
+ hr = dxgi_swapchain_set_fullscreen_state(swapchain->state, &wined3d_desc);
wined3d_mutex_unlock();
if (FAILED(hr))
goto fail;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index ffc73bd2339..7f9b7254bd6 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -5223,7 +5223,6 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
struct wined3d_swapchain *swapchain;
struct wined3d_view_desc view_desc;
BOOL backbuffer_resized, windowed;
- struct wined3d_output *output;
HRESULT hr = WINED3D_OK;
unsigned int i;
@@ -5317,12 +5316,6 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
|| swapchain_desc->backbuffer_height != current_desc->backbuffer_height;
windowed = current_desc->windowed;
- if (!(output = wined3d_swapchain_get_output(swapchain)))
- {
- ERR("Failed to get output from swapchain %p.\n", swapchain);
- return E_FAIL;
- }
-
if (!swapchain_desc->windowed != !windowed || swapchain->reapply_mode
|| mode || (!swapchain_desc->windowed && backbuffer_resized))
{
@@ -5341,7 +5334,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
}
if (FAILED(hr = wined3d_swapchain_state_set_fullscreen(&swapchain->state,
- swapchain_desc, output, mode)))
+ swapchain_desc, mode)))
return hr;
/* Switch from fullscreen to windowed. */
@@ -5358,7 +5351,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
* the window back into the right position. Some applications
* (Battlefield 2, Guild Wars) move it and then call Reset() to clean
* up their mess. Guild Wars also loses the device during that. */
- if (FAILED(hr = wined3d_output_get_desc(output, &output_desc)))
+ if (FAILED(hr = wined3d_output_get_desc(swapchain_desc->output, &output_desc)))
{
ERR("Failed to get output description, hr %#x.\n", hr);
return hr;
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index a4929b7a5b9..0e439e1b068 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -1631,15 +1631,14 @@ void wined3d_swapchain_state_restore_from_fullscreen(struct wined3d_swapchain_st
}
HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_state *state,
- const struct wined3d_swapchain_desc *swapchain_desc, struct wined3d_output *output,
+ const struct wined3d_swapchain_desc *swapchain_desc,
const struct wined3d_display_mode *mode)
{
struct wined3d_display_mode actual_mode;
struct wined3d_output_desc output_desc;
HRESULT hr;
- TRACE("state %p, swapchain_desc %p, output %p, mode %p.\n",
- state, swapchain_desc, output, mode);
+ TRACE("state %p, swapchain_desc %p, mode %p.\n", state, swapchain_desc, mode);
if (state->desc.flags & WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH)
{
@@ -1654,7 +1653,7 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
actual_mode.width = swapchain_desc->backbuffer_width;
actual_mode.height = swapchain_desc->backbuffer_height;
actual_mode.refresh_rate = swapchain_desc->refresh_rate;
- actual_mode.format_id = adapter_format_from_backbuffer_format(output->adapter,
+ actual_mode.format_id = adapter_format_from_backbuffer_format(swapchain_desc->output->adapter,
swapchain_desc->backbuffer_format);
actual_mode.scanline_ordering = WINED3D_SCANLINE_ORDERING_UNKNOWN;
}
@@ -1664,7 +1663,8 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
}
}
- if (FAILED(hr = wined3d_swapchain_state_set_display_mode(state, output, &actual_mode)))
+ if (FAILED(hr = wined3d_swapchain_state_set_display_mode(state, swapchain_desc->output,
+ &actual_mode)))
return hr;
}
else
@@ -1672,7 +1672,8 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
if (mode)
WARN("WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH is not set, ignoring mode.\n");
- if (FAILED(hr = wined3d_output_get_display_mode(output, &actual_mode, NULL)))
+ if (FAILED(hr = wined3d_output_get_display_mode(swapchain_desc->output, &actual_mode,
+ NULL)))
{
ERR("Failed to get display mode, hr %#x.\n", hr);
return WINED3DERR_INVALIDCALL;
@@ -1684,7 +1685,7 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
unsigned int width = actual_mode.width;
unsigned int height = actual_mode.height;
- if (FAILED(hr = wined3d_output_get_desc(output, &output_desc)))
+ if (FAILED(hr = wined3d_output_get_desc(swapchain_desc->output, &output_desc)))
{
ERR("Failed to get output description, hr %#x.\n", hr);
return hr;
@@ -1720,7 +1721,7 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
wined3d_swapchain_state_restore_from_fullscreen(state, state->device_window, window_rect);
}
- state->desc.output = output;
+ state->desc.output = swapchain_desc->output;
state->desc.windowed = swapchain_desc->windowed;
return WINED3D_OK;
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index a240aba555a..22b837bc4bd 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -284,7 +284,7 @@
@ cdecl wined3d_swapchain_state_create(ptr ptr ptr)
@ cdecl wined3d_swapchain_state_destroy(ptr)
@ cdecl wined3d_swapchain_state_resize_target(ptr ptr ptr)
-@ cdecl wined3d_swapchain_state_set_fullscreen(ptr ptr ptr ptr)
+@ cdecl wined3d_swapchain_state_set_fullscreen(ptr ptr ptr)
@ cdecl wined3d_texture_add_dirty_region(ptr long ptr)
@ cdecl wined3d_texture_blt(ptr long ptr ptr long ptr long ptr long)
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c
index a1fe4ac28db..ccddd755803 100644
--- a/dlls/wined3d/wined3d_main.c
+++ b/dlls/wined3d/wined3d_main.c
@@ -605,8 +605,7 @@ static LRESULT CALLBACK wined3d_hook_proc(int code, WPARAM wparam, LPARAM lparam
break;
}
swapchain_desc.output = output;
- wined3d_swapchain_state_set_fullscreen(&swapchain->state, &swapchain_desc, output,
- NULL);
+ wined3d_swapchain_state_set_fullscreen(&swapchain->state, &swapchain_desc, NULL);
wined3d_wndproc_mutex_unlock();
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 381a823cfbf..75734949af6 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2774,8 +2774,7 @@ void __cdecl wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *sta
HRESULT __cdecl wined3d_swapchain_state_resize_target(struct wined3d_swapchain_state *state,
struct wined3d_output *output, const struct wined3d_display_mode *mode);
HRESULT __cdecl wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_state *state,
- const struct wined3d_swapchain_desc *desc, struct wined3d_output *output,
- const struct wined3d_display_mode *mode);
+ const struct wined3d_swapchain_desc *desc, const struct wined3d_display_mode *mode);
HRESULT __cdecl wined3d_texture_add_dirty_region(struct wined3d_texture *texture,
UINT layer, const struct wined3d_box *dirty_region);
--
2.25.1