Christian Costa : d3drm: Hande parent when creating a new frame.
Alexandre Julliard
julliard at winehq.org
Thu May 17 13:45:59 CDT 2012
Module: wine
Branch: master
Commit: 22856e9c96758d3f676f1502e6a9472c390ffaab
URL: http://source.winehq.org/git/wine.git/?a=commit;h=22856e9c96758d3f676f1502e6a9472c390ffaab
Author: Christian Costa <titan.costa at gmail.com>
Date: Thu May 17 10:10:07 2012 +0200
d3drm: Hande parent when creating a new frame.
---
dlls/d3drm/d3drm.c | 33 +++++++++++----------------------
dlls/d3drm/d3drm_private.h | 2 +-
dlls/d3drm/frame.c | 16 ++++++++++++----
3 files changed, 24 insertions(+), 27 deletions(-)
diff --git a/dlls/d3drm/d3drm.c b/dlls/d3drm/d3drm.c
index a96ff52..8dc9523 100644
--- a/dlls/d3drm/d3drm.c
+++ b/dlls/d3drm/d3drm.c
@@ -137,16 +137,13 @@ static HRESULT WINAPI IDirect3DRMImpl_CreateObject(IDirect3DRM* iface, REFCLSID
return E_NOTIMPL;
}
-static HRESULT WINAPI IDirect3DRMImpl_CreateFrame(IDirect3DRM* iface, LPDIRECT3DRMFRAME pFrameParent, LPDIRECT3DRMFRAME * ppFrame)
+static HRESULT WINAPI IDirect3DRMImpl_CreateFrame(IDirect3DRM* iface, LPDIRECT3DRMFRAME parent_frame, LPDIRECT3DRMFRAME * frame)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
- TRACE("(%p/%p)->(%p,%p)\n", iface, This, pFrameParent, ppFrame);
+ TRACE("(%p/%p)->(%p,%p)\n", iface, This, parent_frame, frame);
- if (pFrameParent)
- FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
-
- return Direct3DRMFrame_create(&IID_IDirect3DRMFrame, (IUnknown**)ppFrame);
+ return Direct3DRMFrame_create(&IID_IDirect3DRMFrame, (IUnknown*)parent_frame, (IUnknown**)frame);
}
static HRESULT WINAPI IDirect3DRMImpl_CreateMesh(IDirect3DRM* iface, LPDIRECT3DRMMESH * ppMesh)
@@ -507,18 +504,14 @@ static HRESULT WINAPI IDirect3DRM2Impl_CreateObject(IDirect3DRM2* iface, REFCLSI
return E_NOTIMPL;
}
-static HRESULT WINAPI IDirect3DRM2Impl_CreateFrame(IDirect3DRM2* iface,
- LPDIRECT3DRMFRAME pFrameParent,
- LPDIRECT3DRMFRAME2 * ppFrame)
+static HRESULT WINAPI IDirect3DRM2Impl_CreateFrame(IDirect3DRM2* iface, LPDIRECT3DRMFRAME parent_frame,
+ LPDIRECT3DRMFRAME2 * frame)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
- TRACE("(%p/%p)->(%p,%p)\n", iface, This, pFrameParent, ppFrame);
-
- if (pFrameParent)
- FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
+ TRACE("(%p/%p)->(%p,%p)\n", iface, This, parent_frame, frame);
- return Direct3DRMFrame_create(&IID_IDirect3DRMFrame2, (IUnknown**)ppFrame);
+ return Direct3DRMFrame_create(&IID_IDirect3DRMFrame2, (IUnknown*)parent_frame, (IUnknown**)frame);
}
static HRESULT WINAPI IDirect3DRM2Impl_CreateMesh(IDirect3DRM2* iface, LPDIRECT3DRMMESH * ppMesh)
@@ -936,18 +929,14 @@ static HRESULT WINAPI IDirect3DRM3Impl_CreateObject(IDirect3DRM3* iface, REFCLSI
return E_NOTIMPL;
}
-static HRESULT WINAPI IDirect3DRM3Impl_CreateFrame(IDirect3DRM3* iface,
- LPDIRECT3DRMFRAME3 FrameParent,
- LPDIRECT3DRMFRAME3* Frame)
+static HRESULT WINAPI IDirect3DRM3Impl_CreateFrame(IDirect3DRM3* iface, LPDIRECT3DRMFRAME3 parent_frame,
+ LPDIRECT3DRMFRAME3* frame)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
- TRACE("(%p/%p)->(%p,%p)\n", iface, This, FrameParent, Frame);
-
- if (FrameParent)
- FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
+ TRACE("(%p/%p)->(%p,%p)\n", iface, This, parent_frame, frame);
- return Direct3DRMFrame_create(&IID_IDirect3DRMFrame3, (IUnknown**)Frame);
+ return Direct3DRMFrame_create(&IID_IDirect3DRMFrame3, (IUnknown*)parent_frame, (IUnknown**)frame);
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateMesh(IDirect3DRM3* iface, LPDIRECT3DRMMESH* Mesh)
diff --git a/dlls/d3drm/d3drm_private.h b/dlls/d3drm/d3drm_private.h
index 18d8e0a..aabb878 100644
--- a/dlls/d3drm/d3drm_private.h
+++ b/dlls/d3drm/d3drm_private.h
@@ -26,7 +26,7 @@
HRESULT Direct3DRM_create(IUnknown** ppObj) DECLSPEC_HIDDEN;
HRESULT Direct3DRMDevice_create(REFIID riid, IUnknown** ppObj) DECLSPEC_HIDDEN;
-HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown** ppObj) DECLSPEC_HIDDEN;
+HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown* parent_frame, IUnknown** ret_iface) DECLSPEC_HIDDEN;
HRESULT Direct3DRMLight_create(IUnknown** ppObj) DECLSPEC_HIDDEN;
HRESULT Direct3DRMMeshBuilder_create(REFIID riid, IUnknown** ppObj) DECLSPEC_HIDDEN;
HRESULT Direct3DRMViewport_create(REFIID riid, IUnknown** ppObj) DECLSPEC_HIDDEN;
diff --git a/dlls/d3drm/frame.c b/dlls/d3drm/frame.c
index e530dcd..574e2f8 100644
--- a/dlls/d3drm/frame.c
+++ b/dlls/d3drm/frame.c
@@ -2274,11 +2274,11 @@ static inline IDirect3DRMFrameImpl *unsafe_impl_from_IDirect3DRMFrame3(IDirect3D
return impl_from_IDirect3DRMFrame3(iface);
}
-HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown** ppObj)
+HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown* parent, IUnknown** ret_iface)
{
IDirect3DRMFrameImpl* object;
- TRACE("(%p)\n", ppObj);
+ TRACE("(%s, %p, %p)\n", wine_dbgstr_guid(riid), parent, ret_iface);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMFrameImpl));
if (!object)
@@ -2294,9 +2294,17 @@ HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown** ppObj)
memcpy(&object->transform[0][0], &identity[0][0], sizeof(D3DRMMATRIX4D));
if (IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
- *ppObj = (IUnknown*)&object->IDirect3DRMFrame3_iface;
+ {
+ if (parent)
+ IDirect3DRMFrame3_AddChild((IDirect3DRMFrame3*)parent, &object->IDirect3DRMFrame3_iface);
+ *ret_iface = (IUnknown*)&object->IDirect3DRMFrame3_iface;
+ }
else
- *ppObj = (IUnknown*)&object->IDirect3DRMFrame2_iface;
+ {
+ if (parent)
+ IDirect3DRMFrame2_AddChild((IDirect3DRMFrame2*)parent, (IDirect3DRMFrame*)&object->IDirect3DRMFrame2_iface);
+ *ret_iface = (IUnknown*)&object->IDirect3DRMFrame2_iface;
+ }
return S_OK;
}
More information about the wine-cvs
mailing list