[2/5] d3drm: Add IDirect3DRMWinDevice interface (try 2)

André Hentschel nerv at dawncrow.de
Tue Jan 17 15:56:24 CST 2012


---
 dlls/d3drm/device.c |  155 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 155 insertions(+), 0 deletions(-)

diff --git a/dlls/d3drm/device.c b/dlls/d3drm/device.c
index a203b0c..8be92e6 100644
--- a/dlls/d3drm/device.c
+++ b/dlls/d3drm/device.c
@@ -29,12 +29,15 @@
 #include "wingdi.h"
 
 #include "d3drm_private.h"
+#include "initguid.h"
+#include "d3drmwin.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
 
 typedef struct {
     IDirect3DRMDevice2 IDirect3DRMDevice2_iface;
     IDirect3DRMDevice3 IDirect3DRMDevice3_iface;
+    IDirect3DRMWinDevice IDirect3DRMWinDevice_iface;
     LONG ref;
 } IDirect3DRMDeviceImpl;
 
@@ -48,6 +51,11 @@ static inline IDirect3DRMDeviceImpl *impl_from_IDirect3DRMDevice3(IDirect3DRMDev
     return CONTAINING_RECORD(iface, IDirect3DRMDeviceImpl, IDirect3DRMDevice3_iface);
 }
 
+static inline IDirect3DRMDeviceImpl *impl_from_IDirect3DRMWinDevice(IDirect3DRMWinDevice *iface)
+{
+    return CONTAINING_RECORD(iface, IDirect3DRMDeviceImpl, IDirect3DRMWinDevice_iface);
+}
+
 /*** IUnknown methods ***/
 static HRESULT WINAPI IDirect3DRMDevice2Impl_QueryInterface(IDirect3DRMDevice2* iface,
                                                             REFIID riid, void** object)
@@ -68,6 +76,10 @@ static HRESULT WINAPI IDirect3DRMDevice2Impl_QueryInterface(IDirect3DRMDevice2*
     {
         *object = &This->IDirect3DRMDevice3_iface;
     }
+    else if(IsEqualGUID(riid, &IID_IDirect3DRMWinDevice))
+    {
+        *object = &This->IDirect3DRMWinDevice_iface;
+    }
     else
     {
         FIXME("interface %s not implemented\n", debugstr_guid(riid));
@@ -994,6 +1006,148 @@ static const struct IDirect3DRMDevice3Vtbl Direct3DRMDevice3_Vtbl =
     IDirect3DRMDevice3Impl_SetStateChangeOptions
 };
 
+
+/*** IUnknown methods ***/
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_QueryInterface(IDirect3DRMWinDevice* iface,
+                                                              REFIID riid, void** object)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+    return IDirect3DRMDevice2_QueryInterface(&This->IDirect3DRMDevice2_iface, riid, object);
+}
+
+static ULONG WINAPI IDirect3DRMWinDeviceImpl_AddRef(IDirect3DRMWinDevice* iface)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+    return IDirect3DRMDevice2_AddRef(&This->IDirect3DRMDevice2_iface);
+}
+
+static ULONG WINAPI IDirect3DRMWinDeviceImpl_Release(IDirect3DRMWinDevice* iface)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+    return IDirect3DRMDevice2_Release(&This->IDirect3DRMDevice2_iface);
+}
+
+/*** IDirect3DRMObject methods ***/
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_Clone(IDirect3DRMWinDevice* iface,
+                                                        LPUNKNOWN unkwn, REFIID riid,
+                                                        LPVOID* object)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_AddDestroyCallback(IDirect3DRMWinDevice* iface,
+                                                                     D3DRMOBJECTCALLBACK cb,
+                                                                     LPVOID argument)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_DeleteDestroyCallback(IDirect3DRMWinDevice* iface,
+                                                                        D3DRMOBJECTCALLBACK cb,
+                                                                        LPVOID argument)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_SetAppData(IDirect3DRMWinDevice* iface,
+                                                             DWORD data)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
+
+    return E_NOTIMPL;
+}
+
+static DWORD WINAPI IDirect3DRMWinDeviceImpl_GetAppData(IDirect3DRMWinDevice* iface)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(): stub\n", iface, This);
+
+    return 0;
+}
+
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_SetName(IDirect3DRMWinDevice* iface, LPCSTR name)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_GetName(IDirect3DRMWinDevice* iface,
+                                                          LPDWORD size, LPSTR name)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_GetClassName(IDirect3DRMWinDevice* iface,
+                                                               LPDWORD size, LPSTR name)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
+
+    return E_NOTIMPL;
+}
+
+/*** IDirect3DRMWinDevice methods ***/
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_HandlePaint(IDirect3DRMWinDevice* iface, HDC hdc)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%p): stub\n", iface, This, hdc);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRMWinDeviceImpl_HandleActivate(IDirect3DRMWinDevice* iface, WORD wparam)
+{
+    IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+
+    FIXME("(%p/%p)->(%u): stub\n", iface, This, wparam);
+
+    return E_NOTIMPL;
+}
+
+static const struct IDirect3DRMWinDeviceVtbl Direct3DRMWinDevice_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IDirect3DRMWinDeviceImpl_QueryInterface,
+    IDirect3DRMWinDeviceImpl_AddRef,
+    IDirect3DRMWinDeviceImpl_Release,
+    /*** IDirect3DRMObject methods ***/
+    IDirect3DRMWinDeviceImpl_Clone,
+    IDirect3DRMWinDeviceImpl_AddDestroyCallback,
+    IDirect3DRMWinDeviceImpl_DeleteDestroyCallback,
+    IDirect3DRMWinDeviceImpl_SetAppData,
+    IDirect3DRMWinDeviceImpl_GetAppData,
+    IDirect3DRMWinDeviceImpl_SetName,
+    IDirect3DRMWinDeviceImpl_GetName,
+    IDirect3DRMWinDeviceImpl_GetClassName,
+    /*** IDirect3DRMWinDevice methods ***/
+    IDirect3DRMWinDeviceImpl_HandlePaint,
+    IDirect3DRMWinDeviceImpl_HandleActivate
+};
+
 HRESULT Direct3DRMDevice_create(REFIID riid, IUnknown** ppObj)
 {
     IDirect3DRMDeviceImpl* object;
@@ -1009,6 +1163,7 @@ HRESULT Direct3DRMDevice_create(REFIID riid, IUnknown** ppObj)
 
     object->IDirect3DRMDevice2_iface.lpVtbl = &Direct3DRMDevice2_Vtbl;
     object->IDirect3DRMDevice3_iface.lpVtbl = &Direct3DRMDevice3_Vtbl;
+    object->IDirect3DRMWinDevice_iface.lpVtbl = &Direct3DRMWinDevice_Vtbl;
     object->ref = 1;
 
     if (IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
-- 

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/20120117/02d53855/attachment.ksh>


More information about the wine-patches mailing list