Module: wine Branch: master Commit: 76d52393e87002e419bdf1f7426c4cb6c1b92dc6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=76d52393e87002e419bdf1f742...
Author: Christian Costa titan.costa@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;