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

Alexandre Julliard julliard at winehq.org
Wed May 2 14:30:04 CDT 2012


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

Author: André Hentschel <nerv at dawncrow.de>
Date:   Tue May  1 22:16:10 2012 +0200

d3drm: Implement IDirect3DRMFrameX_DeleteLight.

---

 dlls/d3drm/frame.c |   28 ++++++++++++++++++++++------
 1 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/dlls/d3drm/frame.c b/dlls/d3drm/frame.c
index 5a9ff72..8e74264 100644
--- a/dlls/d3drm/frame.c
+++ b/dlls/d3drm/frame.c
@@ -501,13 +501,13 @@ static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteChild(IDirect3DRMFrame2* iface
 }
 
 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteLight(IDirect3DRMFrame2* iface,
-                                                        LPDIRECT3DRMLIGHT light)
+                                                          LPDIRECT3DRMLIGHT light)
 {
     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
 
-    FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
+    TRACE("(%p/%p)->(%p)\n", iface, This, light);
 
-    return E_NOTIMPL;
+    return IDirect3DRMFrame3_DeleteLight(&This->IDirect3DRMFrame3_iface, light);
 }
 
 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteMoveCallback(IDirect3DRMFrame2* iface,
@@ -1463,13 +1463,29 @@ static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteChild(IDirect3DRMFrame3* iface
 }
 
 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteLight(IDirect3DRMFrame3* iface,
-                                                        LPDIRECT3DRMLIGHT light)
+                                                          LPDIRECT3DRMLIGHT light)
 {
     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
+    ULONG i;
 
-    FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
+    TRACE("(%p/%p)->(%p)\n", iface, This, light);
 
-    return E_NOTIMPL;
+    if (!light)
+        return D3DRMERR_BADOBJECT;
+
+    /* Check if visual exists */
+    for (i = 0; i < This->nb_lights; i++)
+        if (This->lights[i] == light)
+            break;
+
+    if (i == This->nb_lights)
+        return D3DRMERR_BADVALUE;
+
+    memmove(This->lights + i, This->lights + i + 1, sizeof(IDirect3DRMLight*) * (This->nb_lights - 1 - i));
+    IDirect3DRMLight_Release(light);
+    This->nb_lights--;
+
+    return D3DRM_OK;
 }
 
 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3* iface,




More information about the wine-cvs mailing list