Ričardas Barkauskas : ddraw: COM cleanup for IDirect3DTexture interface.
Alexandre Julliard
julliard at winehq.org
Fri Jul 29 12:37:06 CDT 2011
Module: wine
Branch: master
Commit: 91a1ed8be9be70fc8d4256cc713dfb77fabc551e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=91a1ed8be9be70fc8d4256cc713dfb77fabc551e
Author: Ričardas Barkauskas <rbarkauskas at codeweavers.com>
Date: Wed Jul 27 17:45:13 2011 +0300
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;
More information about the wine-cvs
mailing list