[PATCH] dmime: Reimplement IDirectMusicAudioPath Activate

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Thu Mar 26 00:55:36 CDT 2020


Spotted while working on 34753, its calling Activate with TRUE
but then stops the sound buffer.

The documenation says that it should stop the playback when paramter is FALSE.
https://docs.microsoft.com/en-us/previous-versions/ms808948%28v%3dmsdn.10%29

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
 dlls/dmime/audiopath.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/dlls/dmime/audiopath.c b/dlls/dmime/audiopath.c
index 1aadba92ae..e300375eca 100644
--- a/dlls/dmime/audiopath.c
+++ b/dlls/dmime/audiopath.c
@@ -216,21 +216,23 @@ static HRESULT WINAPI IDirectMusicAudioPathImpl_GetObjectInPath (IDirectMusicAud
 	return E_INVALIDARG;
 }
 
-static HRESULT WINAPI IDirectMusicAudioPathImpl_Activate (IDirectMusicAudioPath *iface, BOOL fActivate)
+static HRESULT WINAPI IDirectMusicAudioPathImpl_Activate (IDirectMusicAudioPath *iface, BOOL activate)
 {
-  struct IDirectMusicAudioPathImpl *This = impl_from_IDirectMusicAudioPath(iface);
-  FIXME("(%p, %d): stub\n", This, fActivate);
-  if (!fActivate) {
-    if (!This->fActive) return S_OK;
-    This->fActive = FALSE;
-  } else {
-    if (This->fActive) return S_OK;
-    This->fActive = TRUE;
-    if (NULL != This->pDSBuffer) {
-      IDirectSoundBuffer_Stop(This->pDSBuffer);
+    struct IDirectMusicAudioPathImpl *This = impl_from_IDirectMusicAudioPath(iface);
+
+    FIXME("(%p, %d): semi-stub\n", This, activate);
+
+    if (activate == This->fActive)
+        return S_FALSE;
+
+    if (!activate && This->pDSBuffer) {
+        /* Path is being deactivate */
+        IDirectSoundBuffer_Stop(This->pDSBuffer);
     }
-  }
-  return S_OK;
+
+    This->fActive = activate;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI IDirectMusicAudioPathImpl_SetVolume (IDirectMusicAudioPath *iface, LONG lVolume, DWORD dwDuration)
-- 
2.25.1




More information about the wine-devel mailing list