From: "Stefan Dösinger" Subject: [PATCH 3/3] ddraw: Thunk to surface1, not surface7 in flip. Message-Id: <20200618173225.155040-3-stefan@codeweavers.com> Date: Thu, 18 Jun 2020 19:32:25 +0200 In-Reply-To: <20200618173225.155040-1-stefan@codeweavers.com> References: <20200618173225.155040-1-stefan@codeweavers.com> Signed-off-by: Stefan Dösinger --- dlls/ddraw/surface.c | 60 ++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index d4435378ddd..9210039ce35 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -1268,16 +1268,16 @@ static unsigned int ddraw_swap_interval_from_flags(DWORD flags) } } -static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface7_Flip(IDirectDrawSurface7 *iface, - IDirectDrawSurface7 *src, DWORD flags) +static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface1_Flip(IDirectDrawSurface *iface, + IDirectDrawSurface *src, DWORD flags) { - struct ddraw_surface *dst_impl = impl_from_IDirectDrawSurface7(iface); - struct ddraw_surface *src_impl = unsafe_impl_from_IDirectDrawSurface7(src); + struct ddraw_surface *dst_impl = impl_from_IDirectDrawSurface(iface); + struct ddraw_surface *src_impl = unsafe_impl_from_IDirectDrawSurface(src); struct ddraw_texture *dst_ddraw_texture, *src_ddraw_texture; struct wined3d_rendertarget_view *tmp_rtv, *src_rtv, *rtv; - DDSCAPS2 caps = {DDSCAPS_FLIP, 0, 0, {0}}; + DDSCAPS caps = {DDSCAPS_FLIP}; struct wined3d_texture *texture; - IDirectDrawSurface7 *current; + IDirectDrawSurface *current; void *texture_memory; HRESULT hr; @@ -1311,13 +1311,13 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface7_Flip(IDirectDrawSurface7 { for (current = iface; current != src;) { - if (FAILED(hr = ddraw_surface7_GetAttachedSurface(current, &caps, ¤t))) + if (FAILED(hr = ddraw_surface1_GetAttachedSurface(current, &caps, ¤t))) { WARN("Surface %p is not on the same flip chain as surface %p.\n", src, iface); wined3d_mutex_unlock(); return DDERR_NOTFLIPPABLE; } - ddraw_surface7_Release(current); + ddraw_surface1_Release(current); if (current == iface) { WARN("Surface %p is not on the same flip chain as surface %p.\n", src, iface); @@ -1344,20 +1344,20 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface7_Flip(IDirectDrawSurface7 { for (current = iface;;) { - if (FAILED(hr = ddraw_surface7_GetAttachedSurface(current, &caps, ¤t))) + if (FAILED(hr = ddraw_surface1_GetAttachedSurface(current, &caps, ¤t))) { ERR("Can't find a flip target\n"); wined3d_mutex_unlock(); return DDERR_NOTFLIPPABLE; /* Unchecked */ } - ddraw_surface7_Release(current); + ddraw_surface1_Release(current); if (current == iface) { - dst_impl = impl_from_IDirectDrawSurface7(iface); + dst_impl = impl_from_IDirectDrawSurface(iface); break; } - src_impl = impl_from_IDirectDrawSurface7(current); + src_impl = impl_from_IDirectDrawSurface(current); src_rtv = ddraw_surface_get_rendertarget_view(src_impl); if (rtv == dst_impl->wined3d_rtv) wined3d_device_set_rendertarget_view(dst_impl->ddraw->wined3d_device, 0, src_rtv, FALSE); @@ -1405,6 +1405,18 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface7_Flip(IDirectDrawSurface7 return hr; } +static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface7_Flip(IDirectDrawSurface7 *iface, + IDirectDrawSurface7 *src, DWORD flags) +{ + struct ddraw_surface *surface = impl_from_IDirectDrawSurface7(iface); + struct ddraw_surface *src_impl = unsafe_impl_from_IDirectDrawSurface7(src); + + TRACE("iface %p, src %p, flags %#x.\n", iface, src, flags); + + return ddraw_surface1_Flip(&surface->IDirectDrawSurface_iface, + src_impl ? &src_impl->IDirectDrawSurface_iface : NULL, flags); +} + static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface4_Flip(IDirectDrawSurface4 *iface, IDirectDrawSurface4 *src, DWORD flags) { @@ -1413,8 +1425,8 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface4_Flip(IDirectDrawSurface4 TRACE("iface %p, src %p, flags %#x.\n", iface, src, flags); - return ddraw_surface7_Flip(&surface->IDirectDrawSurface7_iface, - src_impl ? &src_impl->IDirectDrawSurface7_iface : NULL, flags); + return ddraw_surface1_Flip(&surface->IDirectDrawSurface_iface, + src_impl ? &src_impl->IDirectDrawSurface_iface : NULL, flags); } static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface3_Flip(IDirectDrawSurface3 *iface, @@ -1425,8 +1437,8 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface3_Flip(IDirectDrawSurface3 TRACE("iface %p, src %p, flags %#x.\n", iface, src, flags); - return ddraw_surface7_Flip(&surface->IDirectDrawSurface7_iface, - src_impl ? &src_impl->IDirectDrawSurface7_iface : NULL, flags); + return ddraw_surface1_Flip(&surface->IDirectDrawSurface_iface, + src_impl ? &src_impl->IDirectDrawSurface_iface : NULL, flags); } static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface2_Flip(IDirectDrawSurface2 *iface, @@ -1437,20 +1449,8 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface2_Flip(IDirectDrawSurface2 TRACE("iface %p, src %p, flags %#x.\n", iface, src, flags); - return ddraw_surface7_Flip(&surface->IDirectDrawSurface7_iface, - src_impl ? &src_impl->IDirectDrawSurface7_iface : NULL, flags); -} - -static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface1_Flip(IDirectDrawSurface *iface, - IDirectDrawSurface *src, DWORD flags) -{ - struct ddraw_surface *surface = impl_from_IDirectDrawSurface(iface); - struct ddraw_surface *src_impl = unsafe_impl_from_IDirectDrawSurface(src); - - TRACE("iface %p, src %p, flags %#x.\n", iface, src, flags); - - return ddraw_surface7_Flip(&surface->IDirectDrawSurface7_iface, - src_impl ? &src_impl->IDirectDrawSurface7_iface : NULL, flags); + return ddraw_surface1_Flip(&surface->IDirectDrawSurface_iface, + src_impl ? &src_impl->IDirectDrawSurface_iface : NULL, flags); } static HRESULT ddraw_surface_blt(struct ddraw_surface *dst_surface, const RECT *dst_rect, -- 2.26.2