[PATCH 2/5] d3dx9_36: Implement ID3DXFileImpl_RegisterTemplates. (try 6)
Christian Costa
titan.costa at gmail.com
Thu Oct 25 16:16:58 CDT 2012
---
dlls/d3dx9_36/xfile.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dx9_36/xfile.c b/dlls/d3dx9_36/xfile.c
index 16fcdcf..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,6 +137,7 @@ static const ID3DXFileVtbl ID3DXFile_Vtbl =
HRESULT WINAPI D3DXFileCreate(ID3DXFile **d3dxfile)
{
ID3DXFileImpl *object;
+ HRESULT ret;
TRACE("(%p)\n", d3dxfile);
@@ -138,6 +147,13 @@ HRESULT WINAPI D3DXFileCreate(ID3DXFile **d3dxfile)
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