From 90a27e6c7673b0d710f1b2dccdf7297b8f46440b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ri=C4=8Dardas=20Barkauskas?= Date: Mon, 6 Jun 2011 14:08:23 +0300 Subject: ddraw: Use unsafe_impl_from_IDirectDrawSurface4. --- dlls/ddraw/ddraw.c | 4 ++-- dlls/ddraw/ddraw_private.h | 1 + dlls/ddraw/device.c | 2 +- dlls/ddraw/surface.c | 7 +++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index a8f5418..a265afd 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -4243,7 +4243,7 @@ static HRESULT WINAPI ddraw4_DuplicateSurface(IDirectDraw4 *iface, IDirectDrawSu IDirectDrawSurface4 **dst) { IDirectDrawImpl *This = impl_from_IDirectDraw4(iface); - IDirectDrawSurfaceImpl *src_impl = (IDirectDrawSurfaceImpl *)src; + IDirectDrawSurfaceImpl *src_impl = unsafe_impl_from_IDirectDrawSurface4(src); IDirectDrawSurface7 *dst7; IDirectDrawSurfaceImpl *dst_impl; HRESULT hr; @@ -4879,7 +4879,7 @@ static HRESULT WINAPI d3d3_CreateDevice(IDirect3D3 *iface, REFCLSID riid, IDirectDrawSurface4 *surface, IDirect3DDevice3 **device, IUnknown *outer_unknown) { IDirectDrawImpl *This = impl_from_IDirect3D3(iface); - IDirectDrawSurfaceImpl *surface_impl = (IDirectDrawSurfaceImpl *)surface; + IDirectDrawSurfaceImpl *surface_impl = unsafe_impl_from_IDirectDrawSurface4(surface); HRESULT hr; TRACE("iface %p, riid %s, surface %p, device %p, outer_unknown %p.\n", diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h index 3a8ba04..ff7e2ed 100644 --- a/dlls/ddraw/ddraw_private.h +++ b/dlls/ddraw/ddraw_private.h @@ -231,6 +231,7 @@ static inline IDirectDrawSurfaceImpl *impl_from_IDirectDrawSurface7(IDirectDrawS } IDirectDrawSurfaceImpl *unsafe_impl_from_IDirectDrawSurface3(IDirectDrawSurface3 *iface) DECLSPEC_HIDDEN; +IDirectDrawSurfaceImpl *unsafe_impl_from_IDirectDrawSurface4(IDirectDrawSurface4 *iface) DECLSPEC_HIDDEN; IDirectDrawSurfaceImpl *unsafe_impl_from_IDirectDrawSurface7(IDirectDrawSurface7 *iface) DECLSPEC_HIDDEN; /* Get the number of bytes per pixel for a given surface */ diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c index e0569e7..28477b0 100644 --- a/dlls/ddraw/device.c +++ b/dlls/ddraw/device.c @@ -1889,7 +1889,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_SetRenderTarget(IDirect3DDevice3 *if IDirectDrawSurface4 *NewRenderTarget, DWORD Flags) { IDirect3DDeviceImpl *This = device_from_device3(iface); - IDirectDrawSurfaceImpl *Target = (IDirectDrawSurfaceImpl *)NewRenderTarget; + IDirectDrawSurfaceImpl *Target = unsafe_impl_from_IDirectDrawSurface4(NewRenderTarget); TRACE("iface %p, target %p, flags %#x.\n", iface, NewRenderTarget, Flags); diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index f5f5ceb..5e57518 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -3465,6 +3465,13 @@ IDirectDrawSurfaceImpl *unsafe_impl_from_IDirectDrawSurface7(IDirectDrawSurface7 return CONTAINING_RECORD(iface, IDirectDrawSurfaceImpl, IDirectDrawSurface7_iface); } +IDirectDrawSurfaceImpl *unsafe_impl_from_IDirectDrawSurface4(IDirectDrawSurface4 *iface) +{ + if (!iface) return NULL; + assert(iface->lpVtbl == (struct IDirectDrawSurface4Vtbl *)&ddraw_surface7_vtbl); + return CONTAINING_RECORD(iface, IDirectDrawSurfaceImpl, IDirectDrawSurface7_iface); +} + IDirectDrawSurfaceImpl *unsafe_impl_from_IDirectDrawSurface3(IDirectDrawSurface3 *iface) { if (!iface) return NULL; -- 1.7.5.1