[PATCH 5/5] dmusic: Implement partially SetDirectSound.
Christian Costa
titan.costa at gmail.com
Thu Mar 29 01:53:10 CDT 2012
---
dlls/dmusic/dmusic.c | 27 +++++++++++++++++++++------
dlls/dmusic/dmusic_private.h | 2 ++
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/dlls/dmusic/dmusic.c b/dlls/dmusic/dmusic.c
index 8f2edea..60d6b8a 100644
--- a/dlls/dmusic/dmusic.c
+++ b/dlls/dmusic/dmusic.c
@@ -52,19 +52,22 @@ static ULONG WINAPI IDirectMusic8Impl_AddRef (LPDIRECTMUSIC8 iface) {
return refCount;
}
-static ULONG WINAPI IDirectMusic8Impl_Release (LPDIRECTMUSIC8 iface) {
+static ULONG WINAPI IDirectMusic8Impl_Release(LPDIRECTMUSIC8 iface)
+{
IDirectMusic8Impl *This = (IDirectMusic8Impl *)iface;
ULONG refCount = InterlockedDecrement(&This->ref);
TRACE("(%p)->(ref before=%u)\n", This, refCount + 1);
if (!refCount) {
+ if (This->dsound)
+ IDirectSound_Release(This->dsound);
HeapFree(GetProcessHeap(), 0, This->ppPorts);
HeapFree(GetProcessHeap(), 0, This);
}
DMUSIC_UnlockModule();
-
+
return refCount;
}
@@ -257,10 +260,22 @@ static HRESULT WINAPI IDirectMusic8Impl_GetDefaultPort (LPDIRECTMUSIC8 iface, LP
return S_OK;
}
-static HRESULT WINAPI IDirectMusic8Impl_SetDirectSound (LPDIRECTMUSIC8 iface, LPDIRECTSOUND pDirectSound, HWND hWnd) {
- IDirectMusic8Impl *This = (IDirectMusic8Impl *)iface;
- FIXME("(%p, %p, %p): stub\n", This, pDirectSound, hWnd);
- return S_OK;
+static HRESULT WINAPI IDirectMusic8Impl_SetDirectSound(LPDIRECTMUSIC8 iface, LPDIRECTSOUND dsound, HWND wnd)
+{
+ IDirectMusic8Impl *This = (IDirectMusic8Impl *)iface;
+
+ FIXME("(%p, %p, %p): partial implementation\n", This, dsound, wnd);
+
+ if (dsound)
+ {
+ This->dsound = dsound;
+ IDirectSound_AddRef(dsound);
+ }
+
+ /* If no direct sound object is given, native does not create one yet */
+ This->dsound_inited = TRUE;
+
+ return S_OK;
}
static HRESULT WINAPI IDirectMusic8Impl_SetExternalMasterClock (LPDIRECTMUSIC8 iface, IReferenceClock* pClock) {
diff --git a/dlls/dmusic/dmusic_private.h b/dlls/dmusic/dmusic_private.h
index c05adf0..b0655d6 100644
--- a/dlls/dmusic/dmusic_private.h
+++ b/dlls/dmusic/dmusic_private.h
@@ -96,6 +96,8 @@ struct IDirectMusic8Impl {
IReferenceClockImpl* pMasterClock;
IDirectMusicPort** ppPorts;
int nrofports;
+ BOOL dsound_inited;
+ IDirectSound* dsound;
};
/*****************************************************************************
More information about the wine-patches
mailing list