Module: wine Branch: master Commit: f86b6e87f38355ae6c8a17b466268d8ccbe5338c URL: http://source.winehq.org/git/wine.git/?a=commit;h=f86b6e87f38355ae6c8a17b466...
Author: Christian Costa titan.costa@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);