diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c index 432c114d848..f37aee933ec 100644 --- a/dlls/dxgi/swapchain.c +++ b/dlls/dxgi/swapchain.c @@ -159,13 +159,10 @@ HRESULT dxgi_get_output_from_window(IDXGIFactory *factory, HWND window, IDXGIOut return DXGI_ERROR_NOT_FOUND; } -static HRESULT dxgi_swapchain_resize_target(IDXGISwapChain1 *swapchain, - struct wined3d_swapchain_state *state, const DXGI_MODE_DESC *target_mode_desc) +static HRESULT dxgi_swapchain_resize_target(struct wined3d_swapchain_state *state, + const DXGI_MODE_DESC *target_mode_desc) { struct wined3d_display_mode mode; - struct dxgi_output *dxgi_output; - IDXGIOutput *output; - HRESULT hr; if (!target_mode_desc) { @@ -173,10 +170,6 @@ static HRESULT dxgi_swapchain_resize_target(IDXGISwapChain1 *swapchain, return DXGI_ERROR_INVALID_CALL; } - if (FAILED(hr = IDXGISwapChain1_GetContainingOutput(swapchain, &output))) - return hr; - dxgi_output = unsafe_impl_from_IDXGIOutput(output); - TRACE("Mode: %s.\n", debug_dxgi_mode(target_mode_desc)); if (target_mode_desc->Scaling) @@ -184,9 +177,7 @@ static HRESULT dxgi_swapchain_resize_target(IDXGISwapChain1 *swapchain, wined3d_display_mode_from_dxgi(&mode, target_mode_desc); - hr = wined3d_swapchain_state_resize_target(state, dxgi_output->wined3d_output, &mode); - IDXGIOutput_Release(output); - return hr; + return wined3d_swapchain_state_resize_target(state, &mode); } static HWND d3d11_swapchain_get_hwnd(struct d3d11_swapchain *swapchain) @@ -571,7 +562,7 @@ static HRESULT STDMETHODCALLTYPE d3d11_swapchain_ResizeTarget(IDXGISwapChain1 *i state = wined3d_swapchain_get_state(swapchain->wined3d_swapchain); - return dxgi_swapchain_resize_target(iface, state, target_mode_desc); + return dxgi_swapchain_resize_target(state, target_mode_desc); } static HRESULT STDMETHODCALLTYPE d3d11_swapchain_GetContainingOutput(IDXGISwapChain1 *iface, IDXGIOutput **output) @@ -2399,7 +2390,7 @@ static HRESULT STDMETHODCALLTYPE d3d12_swapchain_ResizeTarget(IDXGISwapChain3 *i TRACE("iface %p, target_mode_desc %p.\n", iface, target_mode_desc); - return dxgi_swapchain_resize_target((IDXGISwapChain1 *)iface, swapchain->state, target_mode_desc); + return dxgi_swapchain_resize_target(swapchain->state, target_mode_desc); } static HRESULT STDMETHODCALLTYPE d3d12_swapchain_GetContainingOutput(IDXGISwapChain3 *iface, diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 0e439e1b068..0af6e8e41c5 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -1459,7 +1459,7 @@ static HRESULT wined3d_swapchain_state_set_display_mode(struct wined3d_swapchain } HRESULT CDECL wined3d_swapchain_state_resize_target(struct wined3d_swapchain_state *state, - struct wined3d_output *output, const struct wined3d_display_mode *mode) + const struct wined3d_display_mode *mode) { struct wined3d_display_mode actual_mode; struct wined3d_output_desc output_desc; @@ -1468,7 +1468,7 @@ HRESULT CDECL wined3d_swapchain_state_resize_target(struct wined3d_swapchain_sta HWND window; HRESULT hr; - TRACE("state %p, output %p, mode %p.\n", state, output, mode); + TRACE("state %p, mode %p.\n", state, mode); wined3d_mutex_lock(); @@ -1492,7 +1492,8 @@ HRESULT CDECL wined3d_swapchain_state_resize_target(struct wined3d_swapchain_sta if (state->desc.flags & WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH) { actual_mode = *mode; - if (FAILED(hr = wined3d_swapchain_state_set_display_mode(state, output, &actual_mode))) + if (FAILED(hr = wined3d_swapchain_state_set_display_mode(state, state->desc.output, + &actual_mode))) { ERR("Failed to set display mode, hr %#x.\n", hr); wined3d_mutex_unlock(); @@ -1500,7 +1501,7 @@ HRESULT CDECL wined3d_swapchain_state_resize_target(struct wined3d_swapchain_sta } } - if (FAILED(hr = wined3d_output_get_desc(output, &output_desc))) + if (FAILED(hr = wined3d_output_get_desc(state->desc.output, &output_desc))) { ERR("Failed to get output description, hr %#x.\n", hr); wined3d_mutex_unlock(); diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 22b837bc4bd..e7d08914cda 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -283,7 +283,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_resize_target(ptr ptr) @ cdecl wined3d_swapchain_state_set_fullscreen(ptr ptr ptr) @ cdecl wined3d_texture_add_dirty_region(ptr long ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 75734949af6..f42c1a80502 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2772,7 +2772,7 @@ HRESULT __cdecl wined3d_swapchain_state_create(const struct wined3d_swapchain_de HWND window, struct wined3d_swapchain_state **state); void __cdecl wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *state); HRESULT __cdecl wined3d_swapchain_state_resize_target(struct wined3d_swapchain_state *state, - struct wined3d_output *output, const struct wined3d_display_mode *mode); + const struct wined3d_display_mode *mode); HRESULT __cdecl wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_state *state, const struct wined3d_swapchain_desc *desc, const struct wined3d_display_mode *mode);