diff --git a/reactos/dll/win32/sndblst/sndblst.c b/reactos/dll/win32/sndblst/sndblst.c index 9eefcd2e1c3..28cc903d808 100644 --- a/reactos/dll/win32/sndblst/sndblst.c +++ b/reactos/dll/win32/sndblst/sndblst.c @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include #include diff --git a/reactos/include/reactos/libs/sound/mmebuddy.h b/reactos/include/reactos/libs/sound/mmebuddy.h index b1923886c25..c4b2291c4d8 100644 --- a/reactos/include/reactos/libs/sound/mmebuddy.h +++ b/reactos/include/reactos/libs/sound/mmebuddy.h @@ -13,7 +13,8 @@ * * NOTES: MME Buddy was the best name I could come up with... * The structures etc. here should be treated as internal to the - * library so should not be directly accessed elsewhere. + * library so should not be directly accessed elsewhere. Perhaps they + * can be moved to an internal header? */ #ifndef ROS_AUDIO_MMEBUDDY_H diff --git a/reactos/lib/drivers/sound/mmebuddy/thread.c b/reactos/lib/drivers/sound/mmebuddy/thread.c index 273413f7c5d..3c3aac90683 100644 --- a/reactos/lib/drivers/sound/mmebuddy/thread.c +++ b/reactos/lib/drivers/sound/mmebuddy/thread.c @@ -194,7 +194,10 @@ MMRESULT DestroySoundThread( IN PSOUND_THREAD Thread) { - /* TODO: Implement me! */ + VALIDATE_MMSYS_PARAMETER( Thread ); + SND_TRACE(L"Terminating sound thread\n"); + Thread->Running = FALSE; + /* TODO: Implement me! Wait for thread to have finished? */ return MMSYSERR_NOTSUPPORTED; } diff --git a/reactos/lib/drivers/sound/mmebuddy/wave/header.c b/reactos/lib/drivers/sound/mmebuddy/wave/header.c index 7cf01ebb9b6..c5fa5d910d5 100644 --- a/reactos/lib/drivers/sound/mmebuddy/wave/header.c +++ b/reactos/lib/drivers/sound/mmebuddy/wave/header.c @@ -155,8 +155,29 @@ EnqueueWaveHeader( if ( ! FunctionTable->SubmitWaveHeader ) return MMSYSERR_NOTSUPPORTED; - return WaveHeaderOperation(FunctionTable->SubmitWaveHeader, - SoundDeviceInstance, - Header); -} + /* + A few minor sanity checks - any custom checks should've been carried + out during wave header preparation etc. + */ + VALIDATE_MMSYS_PARAMETER( Header->lpData != NULL ); + VALIDATE_MMSYS_PARAMETER( Header->dwBufferLength > 0 ); + VALIDATE_MMSYS_PARAMETER( Header->dwFlags & WHDR_PREPARED ); + VALIDATE_MMSYS_PARAMETER( ! Header->dwFlags & WHDR_INQUEUE ); + /* Clear the "done" flag for the buffer */ + Header->dwFlags &= ~WHDR_DONE; + + Result = WaveHeaderOperation(FunctionTable->SubmitWaveHeader, + SoundDeviceInstance, + Header); + + if ( ! MMSUCCESS(Result) ) + { + return Result; + } + + /* Set the "in queue" flag if everything was OK */ + Header->dwFlags |= WHDR_INQUEUE; + + return MMSYSERR_NOERROR; +} diff --git a/reactos/lib/drivers/sound/mment4/detect.c b/reactos/lib/drivers/sound/mment4/detect.c index d76b9d76eb8..06d03411d1d 100644 --- a/reactos/lib/drivers/sound/mment4/detect.c +++ b/reactos/lib/drivers/sound/mment4/detect.c @@ -15,8 +15,8 @@ #include #include #include -#include -#include +#include +#include #include #include diff --git a/reactos/lib/drivers/sound/mment4/registry.c b/reactos/lib/drivers/sound/mment4/registry.c index 482998b8452..a606ef77736 100644 --- a/reactos/lib/drivers/sound/mment4/registry.c +++ b/reactos/lib/drivers/sound/mment4/registry.c @@ -13,8 +13,8 @@ #include #include -#include -#include +#include +#include #include #include