Christian Costa : d3dxof: Add some preliminary support for binary objects.

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


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

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

d3dxof: Add some preliminary support for binary objects.

---

 dlls/d3dxof/d3dxof.c         |   33 ++++++++++++++++++++++++++++++++-
 dlls/d3dxof/d3dxof_private.h |    2 ++
 2 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/dlls/d3dxof/d3dxof.c b/dlls/d3dxof/d3dxof.c
index 61017d5..d61d081 100644
--- a/dlls/d3dxof/d3dxof.c
+++ b/dlls/d3dxof/d3dxof.c
@@ -1347,6 +1347,27 @@ static const IDirectXFileVtbl IDirectXFile_Vtbl =
   IDirectXFileImpl_RegisterTemplates
 };
 
+static HRESULT IDirectXFileBinaryImpl_Create(IDirectXFileBinaryImpl** ppObj)
+{
+    IDirectXFileBinaryImpl* object;
+
+    TRACE("(%p)\n", ppObj);
+
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectXFileBinaryImpl));
+    if (!object)
+    {
+        ERR("Out of memory\n");
+        return DXFILEERR_BADALLOC;
+    }
+
+    object->lpVtbl.lpVtbl = &IDirectXFileBinary_Vtbl;
+    object->ref = 1;
+
+    *ppObj = object;
+
+    return DXFILE_OK;
+}
+
 /*** IUnknown methods ***/
 static HRESULT WINAPI IDirectXFileBinaryImpl_QueryInterface(IDirectXFileBinary* iface, REFIID riid, void** ppvObject)
 {
@@ -1606,7 +1627,17 @@ static HRESULT WINAPI IDirectXFileDataImpl_GetNextObject(IDirectXFileData* iface
     return DXFILEERR_NOMOREOBJECTS;
   }
 
-  if (This->pobj->childs[This->cur_enum_object]->ptarget)
+  if (This->pobj->childs[This->cur_enum_object]->binary)
+  {
+    IDirectXFileBinaryImpl *object;
+
+    hr = IDirectXFileBinaryImpl_Create(&object);
+    if (FAILED(hr))
+      return hr;
+
+    *ppChildObj = (LPDIRECTXFILEOBJECT)object;
+  }
+  else if (This->pobj->childs[This->cur_enum_object]->ptarget)
   {
     IDirectXFileDataReferenceImpl *object;
 
diff --git a/dlls/d3dxof/d3dxof_private.h b/dlls/d3dxof/d3dxof_private.h
index 55acce1..7cb82cd 100644
--- a/dlls/d3dxof/d3dxof_private.h
+++ b/dlls/d3dxof/d3dxof_private.h
@@ -55,6 +55,7 @@ typedef struct {
     char name[MAX_NAME_LEN];
     GUID class_id;
     BOOL open;
+    BOOL binary;
     ULONG nb_childs;
     char childs[MAX_CHILDS][MAX_NAME_LEN];
     ULONG nb_members;
@@ -68,6 +69,7 @@ typedef struct {
 } xobject_member;
 
 struct _xobject {
+   BOOL binary;
    struct _xobject* ptarget;
    char name[MAX_NAME_LEN];
    GUID class_id;




More information about the wine-cvs mailing list