[2/2] d3drm: Add IDirect3DRM2 interface (try 2)

André Hentschel nerv at dawncrow.de
Tue Dec 27 16:16:10 CST 2011


try2: reordered the implementation sequence, tried to wrapped new/changed code after 100 columns
---
 dlls/d3drm/d3drm.c         |  464 +++++++++++++++++++++++++++++++++++++++++++-
 dlls/d3drm/d3drm_main.c    |    2 +-
 dlls/d3drm/d3drm_private.h |    2 +-
 include/d3drm.h            |    2 +-
 4 files changed, 457 insertions(+), 13 deletions(-)

diff --git a/dlls/d3drm/d3drm.c b/dlls/d3drm/d3drm.c
index 138832b..596bc14 100644
--- a/dlls/d3drm/d3drm.c
+++ b/dlls/d3drm/d3drm.c
@@ -31,21 +31,28 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
 
 typedef struct {
     IDirect3DRM IDirect3DRM_iface;
+    IDirect3DRM2 IDirect3DRM2_iface;
     LONG ref;
 } IDirect3DRMImpl;
 
 static const struct IDirect3DRMVtbl Direct3DRM_Vtbl;
+static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl;
 
 static inline IDirect3DRMImpl *impl_from_IDirect3DRM(IDirect3DRM *iface)
 {
     return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM_iface);
 }
 
-HRESULT Direct3DRM_create(LPDIRECT3DRM* ppDirect3DRM)
+static inline IDirect3DRMImpl *impl_from_IDirect3DRM2(IDirect3DRM2 *iface)
+{
+    return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM2_iface);
+}
+
+HRESULT Direct3DRM_create(IUnknown** ppObj)
 {
     IDirect3DRMImpl* object;
 
-    TRACE("(%p)\n", ppDirect3DRM);
+    TRACE("(%p)\n", ppObj);
 
     object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMImpl));
     if (!object)
@@ -55,9 +62,10 @@ HRESULT Direct3DRM_create(LPDIRECT3DRM* ppDirect3DRM)
     }
 
     object->IDirect3DRM_iface.lpVtbl = &Direct3DRM_Vtbl;
+    object->IDirect3DRM2_iface.lpVtbl = &Direct3DRM2_Vtbl;
     object->ref = 1;
 
-    *ppDirect3DRM = (IDirect3DRM*)object;
+    *ppObj = (IUnknown*)&object->IDirect3DRM_iface;
 
     return S_OK;
 }
@@ -69,16 +77,25 @@ static HRESULT WINAPI IDirect3DRMImpl_QueryInterface(IDirect3DRM* iface, REFIID
 
     TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
 
-    if (IsEqualGUID(riid, &IID_IUnknown) ||
-        IsEqualGUID(riid, &IID_IDirect3DRM))
+    *ppvObject = NULL;
+
+    if(IsEqualGUID(riid, &IID_IUnknown) ||
+       IsEqualGUID(riid, &IID_IDirect3DRM))
     {
-        IUnknown_AddRef(iface);
-        *ppvObject = This;
-        return S_OK;
+        *ppvObject = &This->IDirect3DRM_iface;
+    }
+    else if(IsEqualGUID(riid, &IID_IDirect3DRM2))
+    {
+        *ppvObject = &This->IDirect3DRM2_iface;
+    }
+    else
+    {
+        FIXME("interface %s not implemented\n", debugstr_guid(riid));
+        return E_NOINTERFACE;
     }
 
-    ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
-    return E_NOINTERFACE;
+    IDirect3DRM_AddRef(iface);
+    return S_OK;
 }
 
 static ULONG WINAPI IDirect3DRMImpl_AddRef(IDirect3DRM* iface)
@@ -430,3 +447,430 @@ static const struct IDirect3DRMVtbl Direct3DRM_Vtbl =
     IDirect3DRMImpl_Load,
     IDirect3DRMImpl_Tick
 };
+
+
+/*** IUnknown methods ***/
+static HRESULT WINAPI IDirect3DRM2Impl_QueryInterface(IDirect3DRM2* iface, REFIID riid,
+                                                      void** ppvObject)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+    return IDirect3DRM_QueryInterface(&This->IDirect3DRM_iface, riid, ppvObject);
+}
+
+static ULONG WINAPI IDirect3DRM2Impl_AddRef(IDirect3DRM2* iface)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    TRACE("(%p/%p)\n", iface, This);
+
+    return InterlockedIncrement(&This->ref);
+}
+
+static ULONG WINAPI IDirect3DRM2Impl_Release(IDirect3DRM2* iface)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p/%p)\n", iface, This);
+
+    if (!ref)
+        HeapFree(GetProcessHeap(), 0, This);
+
+    return ref;
+}
+
+/*** IDirect3DRM2 methods ***/
+static HRESULT WINAPI IDirect3DRM2Impl_CreateObject(IDirect3DRM2* iface, REFCLSID rclsid,
+                                                    LPUNKNOWN pUnkOuter, REFIID riid,
+                                                    LPVOID *ppvObj)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), pUnkOuter,
+                                            debugstr_guid(riid), ppvObj);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateFrame(IDirect3DRM2* iface,
+                                                   LPDIRECT3DRMFRAME pFrameParent,
+                                                   LPDIRECT3DRMFRAME2 * ppFrame)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pFrameParent, ppFrame);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateMesh(IDirect3DRM2* iface, LPDIRECT3DRMMESH * ppMesh)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateMeshBuilder(IDirect3DRM2* iface,
+                                                         LPDIRECT3DRMMESHBUILDER2 * ppMeshBuilder)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
+
+    return Direct3DRMMeshBuilder_create((IUnknown**)ppMeshBuilder);
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateFace(IDirect3DRM2* iface, LPDIRECT3DRMFACE * ppFace)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p): stub\n", iface, This, ppFace);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateAnimation(IDirect3DRM2* iface,
+                                                       LPDIRECT3DRMANIMATION * ppAnimation)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimation);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateAnimationSet(IDirect3DRM2* iface,
+                                                          LPDIRECT3DRMANIMATIONSET * ppAnimationSet)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimationSet);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateTexture(IDirect3DRM2* iface, LPD3DRMIMAGE pImage,
+                                                     LPDIRECT3DRMTEXTURE2 * ppTexture)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pImage, ppTexture);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateLight(IDirect3DRM2* iface, D3DRMLIGHTTYPE type,
+                                                   D3DCOLOR color, LPDIRECT3DRMLIGHT * ppLight)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, ppLight);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateLightRGB(IDirect3DRM2* iface, D3DRMLIGHTTYPE type,
+                                                      D3DVALUE red, D3DVALUE green, D3DVALUE blue,
+                                                      LPDIRECT3DRMLIGHT * ppLight)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, ppLight);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_Material(IDirect3DRM2* iface, D3DVALUE m,
+                                                LPDIRECT3DRMMATERIAL * ppMaterial)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, ppMaterial);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateDevice(IDirect3DRM2* iface, DWORD width, DWORD height,
+                                                    LPDIRECT3DRMDEVICE2 * ppDevice)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, width, height, ppDevice);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromSurface(IDirect3DRM2* iface, LPGUID pGUID,
+                                                               LPDIRECTDRAW pDD,
+                                                               LPDIRECTDRAWSURFACE pDDSBack,
+                                                               LPDIRECT3DRMDEVICE2 * ppDevice)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%s,%p,%p,%p): stub\n", iface, This, debugstr_guid(pGUID), pDD, pDDSBack, ppDevice);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromD3D(IDirect3DRM2* iface, LPDIRECT3D2 pD3D,
+                                                           LPDIRECT3DDEVICE2 pD3DDev,
+                                                           LPDIRECT3DRMDEVICE2 * ppDevice)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, pD3D, pD3DDev, ppDevice);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromClipper(IDirect3DRM2* iface,
+                                                               LPDIRECTDRAWCLIPPER pDDClipper,
+                                                               LPGUID pGUID, int width, int height,
+                                                               LPDIRECT3DRMDEVICE2 * ppDevice)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%s,%d,%d,%p): stub\n", iface, This, pDDClipper, debugstr_guid(pGUID), width,
+                                               height, ppDevice);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateTextureFromSurface(IDirect3DRM2* iface,
+                                                                LPDIRECTDRAWSURFACE pDDS,
+                                                                LPDIRECT3DRMTEXTURE2 * ppTexture)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pDDS, ppTexture);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateShadow(IDirect3DRM2* iface, LPDIRECT3DRMVISUAL pVisual,
+                                                    LPDIRECT3DRMLIGHT pLight,
+                                                    D3DVALUE px, D3DVALUE py, D3DVALUE pz,
+                                                    D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
+                                                    LPDIRECT3DRMVISUAL * ppVisual)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, pVisual, pLight, px, py, pz,
+                                                           nx, ny, nz, ppVisual);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateViewport(IDirect3DRM2* iface,
+                                                      LPDIRECT3DRMDEVICE pDevice,
+                                                      LPDIRECT3DRMFRAME pFrame,
+                                                      DWORD xpos, DWORD ypos,
+                                                      DWORD width, DWORD height,
+                                                      LPDIRECT3DRMVIEWPORT * ppViewport)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): stub\n", iface, This, pDevice, pFrame, xpos, ypos,
+                                                     width, height, ppViewport);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateWrap(IDirect3DRM2* iface, D3DRMWRAPTYPE type,
+                                                  LPDIRECT3DRMFRAME pFrame,
+                                                  D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
+                                                  D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+                                                  D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
+                                                  D3DVALUE ou, D3DVALUE ov, D3DVALUE su,
+                                                  D3DVALUE sv, LPDIRECT3DRMWRAP * ppWrap)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, type,
+          pFrame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, ppWrap);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateUserVisual(IDirect3DRM2* iface,
+                                                        D3DRMUSERVISUALCALLBACK cb, LPVOID pArg,
+                                                        LPDIRECT3DRMUSERVISUAL * ppUserVisual)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, pArg, ppUserVisual);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_LoadTexture(IDirect3DRM2* iface, const char * filename,
+                                                   LPDIRECT3DRMTEXTURE2 * ppTexture)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, ppTexture);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_LoadTextureFromResource(IDirect3DRM2* iface, HMODULE hModule,
+                                                               LPCSTR strName, LPCSTR strType,
+                                                               LPDIRECT3DRMTEXTURE2 * ppTexture)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface, This, hModule, strName, strType, ppTexture);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_SetSearchPath(IDirect3DRM2* iface, LPCSTR path)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_AddSearchPath(IDirect3DRM2* iface, LPCSTR path)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_GetSearchPath(IDirect3DRM2* iface, DWORD *size_return,
+                                                     LPSTR path_return)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_SetDefaultTextureColors(IDirect3DRM2* iface, DWORD nb_colors)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_SetDefaultTextureShades(IDirect3DRM2* iface, DWORD nb_shades)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_GetDevices(IDirect3DRM2* iface,
+                                                  LPDIRECT3DRMDEVICEARRAY * ppDeviceArray)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p): stub\n", iface, This, ppDeviceArray);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_GetNamedObject(IDirect3DRM2* iface, const char * pName,
+                                                      LPDIRECT3DRMOBJECT * ppObject)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, pName, ppObject);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_EnumerateObjects(IDirect3DRM2* iface, D3DRMOBJECTCALLBACK cb,
+                                                        LPVOID pArg)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, pArg);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_Load(IDirect3DRM2* iface, LPVOID pObjSource, LPVOID pObjID,
+                                            LPIID * ppGUIDs, DWORD nb_GUIDs,
+                                            D3DRMLOADOPTIONS LOFlags, D3DRMLOADCALLBACK LoadProc,
+                                            LPVOID pArgLP, D3DRMLOADTEXTURECALLBACK LoadTextureProc,
+                                            LPVOID pArgLTP, LPDIRECT3DRMFRAME pParentFrame)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p): stub\n", iface, This, pObjSource, pObjID,
+          ppGUIDs, nb_GUIDs, LOFlags, LoadProc, pArgLP, LoadTextureProc, pArgLTP, pParentFrame);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_Tick(IDirect3DRM2* iface, D3DVALUE tick)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirect3DRM2Impl_CreateProgressiveMesh(IDirect3DRM2* iface,
+                                                             LPDIRECT3DRMPROGRESSIVEMESH * ppMesh)
+{
+    IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
+
+    FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
+
+    return E_NOTIMPL;
+}
+
+static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl =
+{
+    IDirect3DRM2Impl_QueryInterface,
+    IDirect3DRM2Impl_AddRef,
+    IDirect3DRM2Impl_Release,
+    IDirect3DRM2Impl_CreateObject,
+    IDirect3DRM2Impl_CreateFrame,
+    IDirect3DRM2Impl_CreateMesh,
+    IDirect3DRM2Impl_CreateMeshBuilder,
+    IDirect3DRM2Impl_CreateFace,
+    IDirect3DRM2Impl_CreateAnimation,
+    IDirect3DRM2Impl_CreateAnimationSet,
+    IDirect3DRM2Impl_CreateTexture,
+    IDirect3DRM2Impl_CreateLight,
+    IDirect3DRM2Impl_CreateLightRGB,
+    IDirect3DRM2Impl_Material,
+    IDirect3DRM2Impl_CreateDevice,
+    IDirect3DRM2Impl_CreateDeviceFromSurface,
+    IDirect3DRM2Impl_CreateDeviceFromD3D,
+    IDirect3DRM2Impl_CreateDeviceFromClipper,
+    IDirect3DRM2Impl_CreateTextureFromSurface,
+    IDirect3DRM2Impl_CreateShadow,
+    IDirect3DRM2Impl_CreateViewport,
+    IDirect3DRM2Impl_CreateWrap,
+    IDirect3DRM2Impl_CreateUserVisual,
+    IDirect3DRM2Impl_LoadTexture,
+    IDirect3DRM2Impl_LoadTextureFromResource,
+    IDirect3DRM2Impl_SetSearchPath,
+    IDirect3DRM2Impl_AddSearchPath,
+    IDirect3DRM2Impl_GetSearchPath,
+    IDirect3DRM2Impl_SetDefaultTextureColors,
+    IDirect3DRM2Impl_SetDefaultTextureShades,
+    IDirect3DRM2Impl_GetDevices,
+    IDirect3DRM2Impl_GetNamedObject,
+    IDirect3DRM2Impl_EnumerateObjects,
+    IDirect3DRM2Impl_Load,
+    IDirect3DRM2Impl_Tick,
+    IDirect3DRM2Impl_CreateProgressiveMesh
+};
diff --git a/dlls/d3drm/d3drm_main.c b/dlls/d3drm/d3drm_main.c
index 38a6a6c..2adc188 100644
--- a/dlls/d3drm/d3drm_main.c
+++ b/dlls/d3drm/d3drm_main.c
@@ -50,5 +50,5 @@ HRESULT WINAPI Direct3DRMCreate(LPDIRECT3DRM* ppDirect3DRM)
 {
     TRACE("(%p)\n", ppDirect3DRM);
 
-    return Direct3DRM_create(ppDirect3DRM);
+    return Direct3DRM_create((IUnknown**)ppDirect3DRM);
 }
diff --git a/dlls/d3drm/d3drm_private.h b/dlls/d3drm/d3drm_private.h
index dd2347b..0be7c53 100644
--- a/dlls/d3drm/d3drm_private.h
+++ b/dlls/d3drm/d3drm_private.h
@@ -26,7 +26,7 @@
 
 #include "d3drm.h"
 
-HRESULT Direct3DRM_create(LPDIRECT3DRM* ppDirect3DRM) DECLSPEC_HIDDEN;
+HRESULT Direct3DRM_create(IUnknown** ppObj) DECLSPEC_HIDDEN;
 HRESULT Direct3DRMMeshBuilder_create(IUnknown** ppObj) DECLSPEC_HIDDEN;
 
 #endif /* __D3DRM_PRIVATE_INCLUDED__ */
diff --git a/include/d3drm.h b/include/d3drm.h
index 4b8f0e7..f1540c5 100644
--- a/include/d3drm.h
+++ b/include/d3drm.h
@@ -230,7 +230,7 @@ DECLARE_INTERFACE_(IDirect3DRM2,IUnknown)
     STDMETHOD(Load)(THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS, D3DRMLOADCALLBACK, LPVOID,
         D3DRMLOADTEXTURECALLBACK, LPVOID, LPDIRECT3DRMFRAME) PURE;
     STDMETHOD(Tick)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH) PURE;
+    STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH *) PURE;
 };
 #undef INTERFACE
 
-- 

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/20111227/0f4aa2db/attachment.ksh>


More information about the wine-patches mailing list