Christian Costa : dmusic: Fix IDirectMusicPortImpl_QueryInterface.

Alexandre Julliard julliard at winehq.org
Mon Dec 22 10:19:53 CST 2008


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

Author: Christian Costa <titan.costa at wanadoo.fr>
Date:   Mon Dec 22 13:58:08 2008 +0100

dmusic: Fix IDirectMusicPortImpl_QueryInterface.

---

 dlls/dmusic/port.c |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/dlls/dmusic/port.c b/dlls/dmusic/port.c
index 5264f58..618c2e3 100644
--- a/dlls/dmusic/port.c
+++ b/dlls/dmusic/port.c
@@ -23,18 +23,25 @@ WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
 
 /* IDirectMusicPortImpl IUnknown part: */
 static HRESULT WINAPI IDirectMusicPortImpl_QueryInterface (LPDIRECTMUSICPORT iface, REFIID riid, LPVOID *ppobj) {
-	IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
+	ICOM_THIS_MULTI(IDirectMusicPortImpl, lpVtbl, iface);
+
 	TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
 
 	if (IsEqualIID (riid, &IID_IUnknown) ||
 	    IsEqualGUID(riid, &IID_IDirectMusicPort) ||
-	    IsEqualGUID(riid, &IID_IDirectMusicPort8) ||
-	    IsEqualGUID(riid, &IID_IDirectMusicPortDownload) ||
-	    IsEqualGUID(riid, &IID_IDirectMusicPortDownload8) ||
-	    IsEqualGUID(riid, &IID_IDirectMusicThru) ||
-	    IsEqualGUID(riid, &IID_IDirectMusicThru8)) {
-		IUnknown_AddRef(iface);
-		*ppobj = This;
+	    IsEqualGUID(riid, &IID_IDirectMusicPort8)) {
+		*ppobj = &This->lpVtbl;
+		IDirectMusicPort_AddRef((LPDIRECTMUSICPORT)*ppobj);
+		return S_OK;
+	} else if (IsEqualGUID(riid, &IID_IDirectMusicPortDownload) ||
+		   IsEqualGUID(riid, &IID_IDirectMusicPortDownload8)) {
+		*ppobj = &This->lpDownloadVtbl;
+		IDirectMusicPortDownload_AddRef((LPDIRECTMUSICPORTDOWNLOAD)*ppobj);
+		return S_OK;
+	} else if (IsEqualGUID(riid, &IID_IDirectMusicThru) ||
+		   IsEqualGUID(riid, &IID_IDirectMusicThru8)) {
+		*ppobj = &This->lpThruVtbl;
+		IDirectMusicThru_AddRef((LPDIRECTMUSICTHRU)*ppobj);
 		return S_OK;
 	}
 	WARN("(%p, %s, %p): not found\n", This, debugstr_dmguid(riid), ppobj);




More information about the wine-cvs mailing list