[PATCH 2/5] d3dx9_36: Implement ID3DXFileImpl_RegisterTemplates. (try 3)

Christian Costa titan.costa at gmail.com
Tue Oct 23 14:27:49 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 72d4f7d..f9a25f6 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,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(*object));
     if (!object)
     {
@@ -139,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