* PURPOSE: IDirect3D9 implementation
* PROGRAMERS: Gregor Brunmar <gregor (dot) brunmar (at) home (dot) se>
*/
-#include "d3d9_private.h"
+#include "d3d9_common.h"
+#include <d3d9.h>
+#include "d3d9_helpers.h"
#include <debug.h>
-static ULONG WINAPI IDirect3D9Impl_AddRef(LPDIRECT3D9 iface);
-
/* IDirect3D9: IUnknown implementation */
static HRESULT WINAPI IDirect3D9Impl_QueryInterface(LPDIRECT3D9 iface, REFIID riid, LPVOID* ppvObject)
{
- LPDIRECTD3D9_INT This = (LPDIRECTD3D9_INT)iface;
+ LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirect3D9))
{
- IDirect3D9Impl_AddRef(iface);
+ IUnknown_AddRef(iface);
*ppvObject = &This->lpVtbl;
return S_OK;
}
static ULONG WINAPI IDirect3D9Impl_AddRef(LPDIRECT3D9 iface)
{
- LPDIRECTD3D9_INT This = (LPDIRECTD3D9_INT)iface;
+ LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
ULONG ref = InterlockedIncrement(&This->dwRefCnt);
return ref;
static ULONG WINAPI IDirect3D9Impl_Release(LPDIRECT3D9 iface)
{
- LPDIRECTD3D9_INT This = (LPDIRECTD3D9_INT)iface;
+ LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
ULONG ref = InterlockedDecrement(&This->dwRefCnt);
if (ref == 0)
EnterCriticalSection(&This->d3d9_cs);
/* TODO: Free resources here */
LeaveCriticalSection(&This->d3d9_cs);
- HeapFree(GetProcessHeap(), 0, This);
+ AlignedFree(This);
}
return ref;