[PATCH 2/5] d3dx9_36: Implement ID3DXFileImpl_RegisterTemplates.
Christian Costa
titan.costa at gmail.com
Mon Oct 22 14:28:08 CDT 2012
---
dlls/d3dx9_36/xfile.c | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/dlls/d3dx9_36/xfile.c b/dlls/d3dx9_36/xfile.c
index 07a9628..297c2a8 100644
--- a/dlls/d3dx9_36/xfile.c
+++ b/dlls/d3dx9_36/xfile.c
@@ -21,16 +21,18 @@
#include "d3dx9.h"
#include "d3dx9xof.h"
+#undef MAKE_DDHRESULT
+#include "dxfile.h"
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
typedef struct {
ID3DXFile ID3DXFile_iface;
LONG ref;
+ IDirectXFile *dxfile;
} ID3DXFileImpl;
-
static inline ID3DXFileImpl *impl_from_ID3DXFile(ID3DXFile *iface)
{
return CONTAINING_RECORD(iface, ID3DXFileImpl, ID3DXFile_iface);
@@ -76,7 +78,10 @@ static ULONG WINAPI ID3DXFileImpl_Release(ID3DXFile* iface)
TRACE("(%p)->(): new ref %d\n", iface, ref);
if (!ref)
+ {
+ IDirectXFile_Release(This->dxfile);
HeapFree(GetProcessHeap(), 0, This);
+ }
return ref;
}
@@ -94,17 +99,19 @@ static HRESULT WINAPI ID3DXFileImpl_CreateEnumObject(ID3DXFile *iface, LPCVOID s
static HRESULT WINAPI ID3DXFileImpl_CreateSaveObject(ID3DXFile *iface, LPCVOID data, D3DXF_FILESAVEOPTIONS options, D3DXF_FILEFORMAT format, LPD3DXFILESAVEOBJECT *save_object)
{
- FIXME("(%p)->(%p, %x, %u, %p): stub\n", iface, data, options, format, save_object);
+ FIXME("(%p)->(%p, %x, %u, %p): stub\n", iface, data, options, format, save_object);
- return E_NOTIMPL;
+ return E_NOTIMPL;
}
static HRESULT WINAPI ID3DXFileImpl_RegisterTemplates(ID3DXFile *iface, LPCVOID data, SIZE_T size)
{
- FIXME("(%p)->(%p, %lu): stub\n", iface, data, size);
+ ID3DXFileImpl *This = impl_from_ID3DXFile(iface);
- return E_NOTIMPL;
+ TRACE("(%p)->(%p, %lu)\n", iface, data, size);
+
+ return IDirectXFile_RegisterTemplates(This->dxfile, (LPVOID)data, size);
}
@@ -130,9 +137,12 @@ static const ID3DXFileVtbl ID3DXFile_Vtbl =
HRESULT WINAPI D3DXFileCreate(ID3DXFile **dxfile)
{
ID3DXFileImpl* object;
+ HRESULT ret;
TRACE("(%p)\n", dxfile);
+ *dxfile = NULL;
+
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ID3DXFileImpl));
if (!object)
{
@@ -140,6 +150,13 @@ HRESULT WINAPI D3DXFileCreate(ID3DXFile **dxfile)
return E_OUTOFMEMORY;
}
+ ret = DirectXFileCreate(&object->dxfile);
+ if (ret != S_OK)
+ {
+ HeapFree(GetProcessHeap(), 0, object);
+ return ret;
+ }
+
object->ID3DXFile_iface.lpVtbl = &ID3DXFile_Vtbl;
object->ref = 1;
More information about the wine-patches
mailing list