From c6f16ea85d45506c9470ec9b99162d8035802d84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ri=C4=8Dardas=20Barkauskas?= Date: Wed, 27 Jul 2011 17:45:13 +0300 Subject: ddraw: COM cleanup for IDirect3DTexture interface. --- dlls/ddraw/ddraw_private.h | 6 +++--- dlls/ddraw/surface.c | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h index 6f17912..0c9c41b 100644 --- a/dlls/ddraw/ddraw_private.h +++ b/dlls/ddraw/ddraw_private.h @@ -159,7 +159,7 @@ struct IDirectDrawSurfaceImpl IDirectDrawSurface IDirectDrawSurface_iface; IDirectDrawGammaControl IDirectDrawGammaControl_iface; const IDirect3DTexture2Vtbl *IDirect3DTexture2_vtbl; - const IDirect3DTextureVtbl *IDirect3DTexture_vtbl; + IDirect3DTexture IDirect3DTexture_iface; LONG ref7, ref4, ref3, ref2, ref1, iface_count, gamma_count; IUnknown *ifaceToRelease; @@ -214,9 +214,9 @@ HRESULT ddraw_surface_init(IDirectDrawSurfaceImpl *surface, IDirectDrawImpl *ddr DDSURFACEDESC2 *desc, UINT mip_level, WINED3DSURFTYPE surface_type, UINT version) DECLSPEC_HIDDEN; ULONG ddraw_surface_release_iface(IDirectDrawSurfaceImpl *This) DECLSPEC_HIDDEN; -static inline IDirectDrawSurfaceImpl *surface_from_texture1(IDirect3DTexture *iface) +static inline IDirectDrawSurfaceImpl *impl_from_IDirect3DTexture(IDirect3DTexture *iface) { - return (IDirectDrawSurfaceImpl *)((char*)iface - FIELD_OFFSET(IDirectDrawSurfaceImpl, IDirect3DTexture_vtbl)); + return CONTAINING_RECORD(iface, IDirectDrawSurfaceImpl, IDirect3DTexture_iface); } static inline IDirectDrawSurfaceImpl *surface_from_texture2(IDirect3DTexture2 *iface) diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index d0e0ab2..e4c7436 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -141,7 +141,7 @@ static HRESULT WINAPI ddraw_surface7_QueryInterface(IDirectDrawSurface7 *iface, { if (IsEqualGUID( &IID_IDirect3DTexture, riid )) { - *obj = &This->IDirect3DTexture_vtbl; + *obj = &This->IDirect3DTexture_iface; TRACE(" returning Direct3DTexture interface at %p.\n", *obj); } else @@ -209,7 +209,7 @@ static HRESULT WINAPI d3d_texture2_QueryInterface(IDirect3DTexture2 *iface, REFI static HRESULT WINAPI d3d_texture1_QueryInterface(IDirect3DTexture *iface, REFIID riid, void **object) { - IDirectDrawSurfaceImpl *This = surface_from_texture1(iface); + IDirectDrawSurfaceImpl *This = impl_from_IDirect3DTexture(iface); TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object); return ddraw_surface7_QueryInterface(&This->IDirectDrawSurface7_iface, riid, object); @@ -340,7 +340,7 @@ static ULONG WINAPI d3d_texture2_AddRef(IDirect3DTexture2 *iface) static ULONG WINAPI d3d_texture1_AddRef(IDirect3DTexture *iface) { - IDirectDrawSurfaceImpl *This = surface_from_texture1(iface); + IDirectDrawSurfaceImpl *This = impl_from_IDirect3DTexture(iface); TRACE("iface %p.\n", iface); return ddraw_surface1_AddRef(&This->IDirectDrawSurface_iface); @@ -623,7 +623,7 @@ static ULONG WINAPI d3d_texture2_Release(IDirect3DTexture2 *iface) static ULONG WINAPI d3d_texture1_Release(IDirect3DTexture *iface) { - IDirectDrawSurfaceImpl *This = surface_from_texture1(iface); + IDirectDrawSurfaceImpl *This = impl_from_IDirect3DTexture(iface); TRACE("iface %p.\n", iface); return ddraw_surface1_Release(&This->IDirectDrawSurface_iface); @@ -4450,7 +4450,7 @@ static HRESULT WINAPI d3d_texture2_PaletteChanged(IDirect3DTexture2 *iface, DWOR static HRESULT WINAPI d3d_texture1_PaletteChanged(IDirect3DTexture *iface, DWORD start, DWORD count) { - IDirectDrawSurfaceImpl *surface = surface_from_texture1(iface); + IDirectDrawSurfaceImpl *surface = impl_from_IDirect3DTexture(iface); TRACE("iface %p, start %u, count %u.\n", iface, start, count); @@ -4521,12 +4521,12 @@ static HRESULT WINAPI d3d_texture2_GetHandle(IDirect3DTexture2 *iface, static HRESULT WINAPI d3d_texture1_GetHandle(IDirect3DTexture *iface, IDirect3DDevice *device, D3DTEXTUREHANDLE *handle) { - IDirect3DTexture2 *texture2 = (IDirect3DTexture2 *)&surface_from_texture1(iface)->IDirect3DTexture2_vtbl; + IDirectDrawSurfaceImpl *This = impl_from_IDirect3DTexture(iface); IDirect3DDevice2 *device2 = (IDirect3DDevice2 *)&device_from_device1(device)->IDirect3DDevice2_vtbl; TRACE("iface %p, device %p, handle %p.\n", iface, device, handle); - return d3d_texture2_GetHandle(texture2, device2, handle); + return d3d_texture2_GetHandle((IDirect3DTexture2 *)&This->IDirect3DTexture2_vtbl, device2, handle); } /***************************************************************************** @@ -4703,10 +4703,11 @@ static HRESULT WINAPI d3d_texture2_Load(IDirect3DTexture2 *iface, IDirect3DTextu static HRESULT WINAPI d3d_texture1_Load(IDirect3DTexture *iface, IDirect3DTexture *src_texture) { + IDirectDrawSurfaceImpl* This = impl_from_IDirect3DTexture(iface); IDirectDrawSurfaceImpl* src_surface = unsafe_impl_from_IDirect3DTexture(src_texture); TRACE("iface %p, src_texture %p.\n", iface, src_texture); - return d3d_texture2_Load((IDirect3DTexture2 *)&surface_from_texture1(iface)->IDirect3DTexture2_vtbl, + return d3d_texture2_Load((IDirect3DTexture2 *)&This->IDirect3DTexture2_vtbl, src_surface ? (IDirect3DTexture2 *)&src_surface->IDirect3DTexture2_vtbl : NULL); } @@ -5033,7 +5034,7 @@ IDirectDrawSurfaceImpl *unsafe_impl_from_IDirect3DTexture(IDirect3DTexture *ifac { if (!iface) return NULL; assert(iface->lpVtbl == &d3d_texture1_vtbl); - return CONTAINING_RECORD(iface, IDirectDrawSurfaceImpl, IDirect3DTexture_vtbl); + return CONTAINING_RECORD(iface, IDirectDrawSurfaceImpl, IDirect3DTexture_iface); } static void STDMETHODCALLTYPE ddraw_surface_wined3d_object_destroyed(void *parent) @@ -5200,7 +5201,7 @@ HRESULT ddraw_surface_init(IDirectDrawSurfaceImpl *surface, IDirectDrawImpl *ddr surface->IDirectDrawSurface_iface.lpVtbl = &ddraw_surface1_vtbl; surface->IDirectDrawGammaControl_iface.lpVtbl = &ddraw_gamma_control_vtbl; surface->IDirect3DTexture2_vtbl = &d3d_texture2_vtbl; - surface->IDirect3DTexture_vtbl = &d3d_texture1_vtbl; + surface->IDirect3DTexture_iface.lpVtbl = &d3d_texture1_vtbl; surface->iface_count = 1; surface->version = version; surface->ddraw = ddraw; -- 1.7.5.4