mirror of
https://github.com/reactos/reactos.git
synced 2025-05-31 15:08:14 +00:00
[MMEBUDDY]
- Hackfix corruption of audio buffer list which made the playback thread spin forever on an already played buffer. - Tested with Winamp / VLC / mplay32 with Vbox 3.1.2 svn path=/trunk/; revision=45360
This commit is contained in:
parent
2afb0124d2
commit
6c11399f0a
2 changed files with 13 additions and 4 deletions
|
@ -248,10 +248,18 @@ EnqueueWaveHeader(
|
|||
{
|
||||
/* There are already queued headers - make this one the tail */
|
||||
SND_TRACE(L"Enqueued next wave header\n");
|
||||
SoundDeviceInstance->TailWaveHeader->lpNext = WaveHeader;
|
||||
SoundDeviceInstance->TailWaveHeader = WaveHeader;
|
||||
|
||||
DoWaveStreaming(SoundDeviceInstance);
|
||||
/* FIXME - Make sure that the buffer has not already been added to the list */
|
||||
if ( SoundDeviceInstance->TailWaveHeader != WaveHeader )
|
||||
{
|
||||
SND_ASSERT(SoundDeviceInstance->TailWaveHeader != WaveHeader);
|
||||
|
||||
SoundDeviceInstance->TailWaveHeader->lpNext = WaveHeader;
|
||||
SoundDeviceInstance->TailWaveHeader = WaveHeader;
|
||||
DUMP_WAVEHDR_QUEUE(SoundDeviceInstance);
|
||||
|
||||
DoWaveStreaming(SoundDeviceInstance);
|
||||
}
|
||||
}
|
||||
|
||||
DUMP_WAVEHDR_QUEUE(SoundDeviceInstance);
|
||||
|
|
|
@ -77,6 +77,7 @@ DoWaveStreaming(
|
|||
{
|
||||
{
|
||||
/* Move on to the next header */
|
||||
SND_ASSERT(Header != Header->lpNext);
|
||||
Header = Header->lpNext;
|
||||
}
|
||||
}
|
||||
|
@ -209,9 +210,9 @@ CompleteIO(
|
|||
}
|
||||
else
|
||||
{
|
||||
SND_TRACE(L"%d/%d bytes of wavehdr completed\n", HdrExtension->BytesCompleted, WaveHdr->dwBufferLength);
|
||||
/* Partially completed */
|
||||
HdrExtension->BytesCompleted += dwNumberOfBytesTransferred;
|
||||
SND_TRACE(L"%d/%d bytes of wavehdr completed\n", HdrExtension->BytesCompleted, WaveHdr->dwBufferLength);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue