Christian Costa : d3dxof: Improve IDirectXFileImpl_CreateSaveObject stub.

Alexandre Julliard julliard at winehq.org
Wed Dec 17 09:39:23 CST 2008


Module: wine
Branch: master
Commit: 40c5c8ad7c7aa2b0bac03e4d7f6858e8322e4f37
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=40c5c8ad7c7aa2b0bac03e4d7f6858e8322e4f37

Author: Christian Costa <titan.costa at wanadoo.fr>
Date:   Tue Dec 16 20:55:22 2008 +0100

d3dxof: Improve IDirectXFileImpl_CreateSaveObject stub.

---

 dlls/d3dxof/d3dxof.c |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dxof/d3dxof.c b/dlls/d3dxof/d3dxof.c
index 25334c2..61017d5 100644
--- a/dlls/d3dxof/d3dxof.c
+++ b/dlls/d3dxof/d3dxof.c
@@ -98,6 +98,7 @@ static WORD check_TOKEN(parse_buffer * buf);
 static BOOL parse_template(parse_buffer * buf);
 static HRESULT IDirectXFileDataReferenceImpl_Create(IDirectXFileDataReferenceImpl** ppObj);
 static HRESULT IDirectXFileEnumObjectImpl_Create(IDirectXFileEnumObjectImpl** ppObj);
+static HRESULT IDirectXFileSaveObjectImpl_Create(IDirectXFileSaveObjectImpl** ppObj);
 
 static void dump_template(xtemplate* templates_array, xtemplate* ptemplate)
 {
@@ -377,9 +378,12 @@ static HRESULT WINAPI IDirectXFileImpl_CreateSaveObject(IDirectXFile* iface, LPC
 {
   IDirectXFileImpl *This = (IDirectXFileImpl *)iface;
 
-  FIXME("(%p/%p)->(%s,%x,%p) stub!\n", This, iface, szFileName, dwFileFormat, ppSaveObj);
+  FIXME("(%p/%p)->(%s,%x,%p) partial stub!\n", This, iface, szFileName, dwFileFormat, ppSaveObj);
 
-  return DXFILEERR_BADVALUE;
+  if (!szFileName || !ppSaveObj)
+    return E_POINTER;
+
+  return IDirectXFileSaveObjectImpl_Create((IDirectXFileSaveObjectImpl**)ppSaveObj);
 }
 
 static BOOL read_bytes(parse_buffer * buf, LPVOID data, DWORD size)
@@ -2352,6 +2356,27 @@ static const IDirectXFileObjectVtbl IDirectXFileObject_Vtbl =
     IDirectXFileObjectImpl_GetId
 };
 
+static HRESULT IDirectXFileSaveObjectImpl_Create(IDirectXFileSaveObjectImpl** ppObj)
+{
+    IDirectXFileSaveObjectImpl* object;
+
+    TRACE("(%p)\n", ppObj);
+
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectXFileSaveObjectImpl));
+    if (!object)
+    {
+        ERR("Out of memory\n");
+        return DXFILEERR_BADALLOC;
+    }
+
+    object->lpVtbl.lpVtbl = &IDirectXFileSaveObject_Vtbl;
+    object->ref = 1;
+
+    *ppObj = object;
+
+    return S_OK;
+}
+
 /*** IUnknown methods ***/
 static HRESULT WINAPI IDirectXFileSaveObjectImpl_QueryInterface(IDirectXFileSaveObject* iface, REFIID riid, void** ppvObject)
 {




More information about the wine-cvs mailing list