[PATCH 2/5] d3dx9_36: Implement ID3DXFileImpl_RegisterTemplates. (try 5)
Christian Costa
titan.costa at gmail.com
Thu Oct 25 02:34:24 CDT 2012
---
dlls/d3dx9_36/xfile.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dx9_36/xfile.c b/dlls/d3dx9_36/xfile.c
index c934b04..ebaefaf 100644
--- a/dlls/d3dx9_36/xfile.c
+++ b/dlls/d3dx9_36/xfile.c
@@ -21,12 +21,15 @@
#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;
@@ -75,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;
}
@@ -101,9 +107,11 @@ static HRESULT WINAPI ID3DXFileImpl_CreateSaveObject(ID3DXFile *iface, const voi
static HRESULT WINAPI ID3DXFileImpl_RegisterTemplates(ID3DXFile *iface, const void *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, (void*)data, size);
}
@@ -129,13 +137,23 @@ static const ID3DXFileVtbl ID3DXFile_Vtbl =
HRESULT WINAPI D3DXFileCreate(ID3DXFile **d3dxfile)
{
ID3DXFileImpl *object;
+ HRESULT ret;
TRACE("(%p)\n", d3dxfile);
+ *d3dxfile = NULL;
+
object = HeapAlloc(GetProcessHeap(), 0, sizeof(*object));
if (!object)
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