[4/5] d3drm: Add IDirect3DRMWinDevice interface
André Hentschel
nerv at dawncrow.de
Sun Jan 15 10:04:15 CST 2012
---
dlls/d3drm/device.c | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 165 insertions(+), 0 deletions(-)
diff --git a/dlls/d3drm/device.c b/dlls/d3drm/device.c
index f02ce33..957b465 100644
--- a/dlls/d3drm/device.c
+++ b/dlls/d3drm/device.c
@@ -29,17 +29,20 @@
#include "wingdi.h"
#include "d3drm_private.h"
+#include "d3drmwin.h"
WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
typedef struct {
IDirect3DRMDevice2 IDirect3DRMDevice2_iface;
IDirect3DRMDevice3 IDirect3DRMDevice3_iface;
+ IDirect3DRMWinDevice IDirect3DRMWinDevice_iface;
LONG ref;
} IDirect3DRMDeviceImpl;
static const struct IDirect3DRMDevice2Vtbl Direct3DRMDevice2_Vtbl;
static const struct IDirect3DRMDevice3Vtbl Direct3DRMDevice3_Vtbl;
+static const struct IDirect3DRMWinDeviceVtbl Direct3DRMWinDevice_Vtbl;
static inline IDirect3DRMDeviceImpl *impl_from_IDirect3DRMDevice2(IDirect3DRMDevice2 *iface)
{
@@ -51,6 +54,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);
+}
+
HRESULT Direct3DRMDevice_create(REFIID riid, IUnknown** ppObj)
{
IDirect3DRMDeviceImpl* object;
@@ -66,6 +74,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))
@@ -96,6 +105,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));
@@ -1021,3 +1034,155 @@ static const struct IDirect3DRMDevice3Vtbl Direct3DRMDevice3_Vtbl =
IDirect3DRMDevice3Impl_GetStateChangeOptions,
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);
+
+ TRACE("(%p)\n", This);
+
+ return InterlockedIncrement(&This->ref);
+}
+
+static ULONG WINAPI IDirect3DRMWinDeviceImpl_Release(IDirect3DRMWinDevice* iface)
+{
+ IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
+ ULONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p)\n", This);
+
+ if (!ref)
+ HeapFree(GetProcessHeap(), 0, This);
+
+ return ref;
+}
+
+/*** 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
+};
--
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/20120115/2eec9e50/attachment.ksh>
More information about the wine-patches
mailing list