[PATCH] dmime: Reimplement IDirectMusicAudioPath Activate
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(a)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
participants (1)
-
Alistair Leslie-Hughes