[1/2] d3drm: Partial implementation for [Add/Delete]Child
André Hentschel
nerv at dawncrow.de
Fri Jan 6 12:54:42 CST 2012
---
dlls/d3drm/frame.c | 44 ++++++++++++++++++++++++++++++++++----------
1 files changed, 34 insertions(+), 10 deletions(-)
diff --git a/dlls/d3drm/frame.c b/dlls/d3drm/frame.c
index 212f7dd..0f3c113 100644
--- a/dlls/d3drm/frame.c
+++ b/dlls/d3drm/frame.c
@@ -24,6 +24,7 @@
#include "winbase.h"
#include "wingdi.h"
+#include "wine/list.h"
#include "d3drm_private.h"
@@ -33,6 +34,8 @@ typedef struct {
IDirect3DRMFrame2 IDirect3DRMFrame2_iface;
IDirect3DRMFrame3 IDirect3DRMFrame3_iface;
LONG ref;
+ struct list entry;
+ struct list child_list;
} IDirect3DRMFrameImpl;
static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl;
@@ -64,6 +67,7 @@ HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown** ppObj)
object->IDirect3DRMFrame2_iface.lpVtbl = &Direct3DRMFrame2_Vtbl;
object->IDirect3DRMFrame3_iface.lpVtbl = &Direct3DRMFrame3_Vtbl;
object->ref = 1;
+ list_init(&object->child_list);
if (IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
*ppObj = (IUnknown*)&object->IDirect3DRMFrame3_iface;
@@ -212,10 +216,15 @@ static HRESULT WINAPI IDirect3DRMFrame2Impl_AddChild(IDirect3DRMFrame2* iface,
LPDIRECT3DRMFRAME child)
{
IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
+ IDirect3DRMFrameImpl *Frame = impl_from_IDirect3DRMFrame2((LPDIRECT3DRMFRAME2)child);
- FIXME("(%p/%p)->(%p): stub\n", iface, This, child);
+ FIXME("(%p/%p)->(%p): partial stub\n", iface, This, child);
- return E_NOTIMPL;
+ /* Add the frame in the 'linked' chain */
+ list_add_head(&This->child_list, &Frame->entry);
+ IDirect3DRMFrame_AddRef(child);
+
+ return S_OK;
}
static HRESULT WINAPI IDirect3DRMFrame2Impl_AddLight(IDirect3DRMFrame2* iface,
@@ -488,13 +497,18 @@ static HRESULT WINAPI IDirect3DRMFrame2Impl_Move(IDirect3DRMFrame2* iface, D3DVA
}
static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteChild(IDirect3DRMFrame2* iface,
- LPDIRECT3DRMFRAME frame)
+ LPDIRECT3DRMFRAME child)
{
IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
+ IDirect3DRMFrameImpl *Frame = impl_from_IDirect3DRMFrame2((LPDIRECT3DRMFRAME2)child);
- FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
+ FIXME("(%p/%p)->(%p): partial stub\n", iface, This, child);
- return E_NOTIMPL;
+ /* Remove the frame from the 'linked' chain */
+ list_remove(&Frame->entry);
+ IDirect3DRMFrame_Release(child);
+
+ return S_OK;
}
static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteLight(IDirect3DRMFrame2* iface,
@@ -1073,10 +1087,15 @@ static HRESULT WINAPI IDirect3DRMFrame3Impl_AddChild(IDirect3DRMFrame3* iface,
LPDIRECT3DRMFRAME3 child)
{
IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
+ IDirect3DRMFrameImpl *Frame = impl_from_IDirect3DRMFrame3(child);
- FIXME("(%p/%p)->(%p): stub\n", iface, This, child);
+ FIXME("(%p/%p)->(%p): partial stub\n", iface, This, child);
- return E_NOTIMPL;
+ /* Add the frame in the 'linked' chain */
+ list_add_head(&This->child_list, &Frame->entry);
+ IDirect3DRMFrame_AddRef(child);
+
+ return S_OK;
}
static HRESULT WINAPI IDirect3DRMFrame3Impl_AddLight(IDirect3DRMFrame3* iface,
@@ -1340,13 +1359,18 @@ static HRESULT WINAPI IDirect3DRMFrame3Impl_Move(IDirect3DRMFrame3* iface, D3DVA
}
static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteChild(IDirect3DRMFrame3* iface,
- LPDIRECT3DRMFRAME3 frame)
+ LPDIRECT3DRMFRAME3 child)
{
IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
+ IDirect3DRMFrameImpl *Frame = impl_from_IDirect3DRMFrame3(child);
- FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
+ FIXME("(%p/%p)->(%p): partial stub\n", iface, This, child);
- return E_NOTIMPL;
+ /* Remove the frame from the 'linked' chain */
+ list_remove(&Frame->entry);
+ IDirect3DRMFrame_Release(child);
+
+ return S_OK;
}
static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteLight(IDirect3DRMFrame3* iface,
--
Best Regards, André Hentschel
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Nachrichtenteil als Anhang
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20120106/faa22377/attachment.ksh>
More information about the wine-patches
mailing list