Charles Welton : d3dx9: Implemented GetDevice method.

Alexandre Julliard julliard at winehq.org
Fri Jun 17 13:13:47 CDT 2011


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

Author: Charles Welton <charleswfb at gmail.com>
Date:   Thu Jun 16 17:19:49 2011 -0300

d3dx9: Implemented GetDevice method.

---

 dlls/d3dx9_36/line.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx9_36/line.c b/dlls/d3dx9_36/line.c
index e3a0e73..cf49642 100644
--- a/dlls/d3dx9_36/line.c
+++ b/dlls/d3dx9_36/line.c
@@ -27,6 +27,8 @@ static const struct ID3DXLineVtbl ID3DXLine_Vtbl;
 typedef struct ID3DXLineImpl {
     ID3DXLine ID3DXLine_iface;
     LONG ref;
+
+    IDirect3DDevice9 *device;
 } ID3DXLineImpl;
 
 static inline ID3DXLineImpl *impl_from_ID3DXLine(ID3DXLine *iface)
@@ -71,7 +73,10 @@ static ULONG WINAPI ID3DXLineImpl_Release(ID3DXLine* iface)
     TRACE("(%p)->(): Release from %u\n", This, ref + 1);
 
     if (!ref)
+    {
+        IDirect3DDevice9_Release(This->device);
         HeapFree(GetProcessHeap(), 0, This);
+    }
 
     return ref;
 }
@@ -81,9 +86,14 @@ static HRESULT WINAPI ID3DXLineImpl_GetDevice(ID3DXLine* iface, LPDIRECT3DDEVICE
 {
     ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
 
-    FIXME("(%p)->(%p): stub\n", This, device);
+    TRACE ("(%p)->(%p): relay\n", This, device);
 
-    return E_NOTIMPL;
+    if (device == NULL) return D3DERR_INVALIDCALL;
+
+    *device = This->device;
+    IDirect3DDevice9_AddRef(This->device);
+
+    return D3D_OK;
 }
 
 static HRESULT WINAPI ID3DXLineImpl_Begin(ID3DXLine* iface)
@@ -274,6 +284,8 @@ HRESULT WINAPI D3DXCreateLine(LPDIRECT3DDEVICE9 device, LPD3DXLINE* line)
 
     object->ID3DXLine_iface.lpVtbl = &ID3DXLine_Vtbl;
     object->ref = 1;
+    object->device = device;
+    IDirect3DDevice9_AddRef(device);
 
     *line = &object->ID3DXLine_iface;
 




More information about the wine-cvs mailing list