[PATCH 4/8] d3dx9_36: COM cleanup for the ID3DXBuffer iface.
Michael Stefaniuc
mstefani at redhat.de
Wed Jan 26 17:27:21 CST 2011
---
dlls/d3dx9_36/core.c | 40 ++++++++++++++++++++++++-------------
dlls/d3dx9_36/d3dx9_36_private.h | 15 --------------
2 files changed, 26 insertions(+), 29 deletions(-)
diff --git a/dlls/d3dx9_36/core.c b/dlls/d3dx9_36/core.c
index 3b63e9e..6990fbd 100644
--- a/dlls/d3dx9_36/core.c
+++ b/dlls/d3dx9_36/core.c
@@ -30,10 +30,23 @@
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
-/* ID3DXBuffer IUnknown parts follow: */
-static HRESULT WINAPI ID3DXBufferImpl_QueryInterface(LPD3DXBUFFER iface, REFIID riid, LPVOID* ppobj)
+typedef struct ID3DXBufferImpl
{
- ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
+ ID3DXBuffer ID3DXBuffer_iface;
+ LONG ref;
+
+ DWORD *buffer;
+ DWORD bufferSize;
+} ID3DXBufferImpl;
+
+static inline ID3DXBufferImpl *impl_from_ID3DXBuffer(ID3DXBuffer *iface)
+{
+ return CONTAINING_RECORD(iface, ID3DXBufferImpl, ID3DXBuffer_iface);
+}
+
+static HRESULT WINAPI ID3DXBufferImpl_QueryInterface(ID3DXBuffer *iface, REFIID riid, void **ppobj)
+{
+ ID3DXBufferImpl *This = impl_from_ID3DXBuffer(iface);
if (IsEqualGUID(riid, &IID_IUnknown)
|| IsEqualGUID(riid, &IID_ID3DXBuffer))
@@ -47,9 +60,9 @@ static HRESULT WINAPI ID3DXBufferImpl_QueryInterface(LPD3DXBUFFER iface, REFIID
return E_NOINTERFACE;
}
-static ULONG WINAPI ID3DXBufferImpl_AddRef(LPD3DXBUFFER iface)
+static ULONG WINAPI ID3DXBufferImpl_AddRef(ID3DXBuffer *iface)
{
- ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
+ ID3DXBufferImpl *This = impl_from_ID3DXBuffer(iface);
ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) : AddRef from %d\n", This, ref - 1);
@@ -57,9 +70,9 @@ static ULONG WINAPI ID3DXBufferImpl_AddRef(LPD3DXBUFFER iface)
return ref;
}
-static ULONG WINAPI ID3DXBufferImpl_Release(LPD3DXBUFFER iface)
+static ULONG WINAPI ID3DXBufferImpl_Release(ID3DXBuffer *iface)
{
- ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
+ ID3DXBufferImpl *This = impl_from_ID3DXBuffer(iface);
ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) : ReleaseRef to %d\n", This, ref);
@@ -72,16 +85,15 @@ static ULONG WINAPI ID3DXBufferImpl_Release(LPD3DXBUFFER iface)
return ref;
}
-/* ID3DXBuffer Interface follow: */
-static LPVOID WINAPI ID3DXBufferImpl_GetBufferPointer(LPD3DXBUFFER iface)
+static LPVOID WINAPI ID3DXBufferImpl_GetBufferPointer(ID3DXBuffer *iface)
{
- ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
+ ID3DXBufferImpl *This = impl_from_ID3DXBuffer(iface);
return This->buffer;
}
-static DWORD WINAPI ID3DXBufferImpl_GetBufferSize(LPD3DXBUFFER iface)
+static DWORD WINAPI ID3DXBufferImpl_GetBufferSize(ID3DXBuffer *iface)
{
- ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
+ ID3DXBufferImpl *This = impl_from_ID3DXBuffer(iface);
return This->bufferSize;
}
@@ -104,7 +116,7 @@ HRESULT WINAPI D3DXCreateBuffer(DWORD NumBytes, LPD3DXBUFFER* ppBuffer)
*ppBuffer = NULL;
return E_OUTOFMEMORY;
}
- object->lpVtbl = &D3DXBuffer_Vtbl;
+ object->ID3DXBuffer_iface.lpVtbl = &D3DXBuffer_Vtbl;
object->ref = 1;
object->bufferSize = NumBytes;
object->buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, NumBytes);
@@ -115,6 +127,6 @@ HRESULT WINAPI D3DXCreateBuffer(DWORD NumBytes, LPD3DXBUFFER* ppBuffer)
return E_OUTOFMEMORY;
}
- *ppBuffer = (LPD3DXBUFFER)object;
+ *ppBuffer = &object->ID3DXBuffer_iface;
return D3D_OK;
}
diff --git a/dlls/d3dx9_36/d3dx9_36_private.h b/dlls/d3dx9_36/d3dx9_36_private.h
index b452a8f..4b2e78d 100644
--- a/dlls/d3dx9_36/d3dx9_36_private.h
+++ b/dlls/d3dx9_36/d3dx9_36_private.h
@@ -50,21 +50,6 @@ HRESULT load_resource_into_memory(HMODULE module, HRSRC resinfo, LPVOID *buffer,
const PixelFormatDesc *get_format_info(D3DFORMAT format);
const PixelFormatDesc *get_format_info_idx(int idx);
-extern const ID3DXBufferVtbl D3DXBuffer_Vtbl;
-
-/* ID3DXBUFFER */
-typedef struct ID3DXBufferImpl
-{
- /* IUnknown fields */
- const ID3DXBufferVtbl *lpVtbl;
- LONG ref;
-
- /* ID3DXBuffer fields */
- DWORD *buffer;
- DWORD bufferSize;
-} ID3DXBufferImpl;
-
-
/* ID3DXFont */
typedef struct ID3DXFontImpl
{
--
1.7.3.5
More information about the wine-patches
mailing list