=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: d3drm: Implement IDirect3DRMFrameX_DeleteVisual.

Alexandre Julliard julliard at winehq.org
Tue May 1 13:12:13 CDT 2012


Module: wine
Branch: master
Commit: 154c1658d35d209910aba5437759d032fe49d9b8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=154c1658d35d209910aba5437759d032fe49d9b8

Author: André Hentschel <nerv at dawncrow.de>
Date:   Mon Apr 30 17:10:48 2012 +0200

d3drm: Implement IDirect3DRMFrameX_DeleteVisual.

---

 dlls/d3drm/frame.c |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/dlls/d3drm/frame.c b/dlls/d3drm/frame.c
index 2e98059..7f2497d 100644
--- a/dlls/d3drm/frame.c
+++ b/dlls/d3drm/frame.c
@@ -522,9 +522,9 @@ static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteVisual(IDirect3DRMFrame2* ifac
 {
     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
 
-    FIXME("(%p/%p)->(%p): stub\n", iface, This, vis);
+    TRACE("(%p/%p)->(%p)\n", iface, This, vis);
 
-    return E_NOTIMPL;
+    return IDirect3DRMFrame3_DeleteVisual(&This->IDirect3DRMFrame3_iface, (LPUNKNOWN)vis);
 }
 
 static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetSceneBackground(IDirect3DRMFrame2* iface)
@@ -1448,10 +1448,26 @@ static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3
 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis)
 {
     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
+    ULONG i;
+
+    TRACE("(%p/%p)->(%p)\n", iface, This, vis);
 
-    FIXME("(%p/%p)->(%p): stub\n", iface, This, vis);
+    if (!vis)
+        return D3DRMERR_BADOBJECT;
 
-    return E_NOTIMPL;
+    /* Check if visual exists */
+    for (i = 0; i < This->nb_visuals; i++)
+        if (This->visuals[i] == (IDirect3DRMVisual*)vis)
+            break;
+
+    if (i == This->nb_visuals)
+        return D3DRMERR_BADVALUE;
+
+    memmove(This->visuals + i, This->visuals + i + 1, sizeof(IDirect3DRMVisual*) * (This->nb_visuals - 1 - i));
+    IDirect3DRMVisual_Release(vis);
+    This->nb_visuals--;
+
+    return D3DRM_OK;
 }
 
 static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3* iface)




More information about the wine-cvs mailing list