Commit 234558c2 authored by Ken Thomases's avatar Ken Thomases Committed by Alexandre Julliard

winecoreaudio: Move a memset out of a mutex-guarded section.

parent acf34999
......@@ -1365,47 +1365,46 @@ OSStatus CoreAudio_woAudioUnitIOProc(void *inRefCon,
pthread_mutex_lock(&wwo->lock);
while (dataNeeded > 0)
while (dataNeeded > 0 && wwo->state == WINE_WS_PLAYING && wwo->lpPlayPtr)
{
if (wwo->state == WINE_WS_PLAYING && wwo->lpPlayPtr)
{
unsigned int available = wwo->lpPlayPtr->dwBufferLength - wwo->dwPartialOffset;
unsigned int toCopy;
if (available >= dataNeeded)
toCopy = dataNeeded;
else
toCopy = available;
unsigned int available = wwo->lpPlayPtr->dwBufferLength - wwo->dwPartialOffset;
unsigned int toCopy;
if (toCopy > 0)
{
memcpy((char*)ioData->mBuffers[0].mData + dataProvided,
wwo->lpPlayPtr->lpData + wwo->dwPartialOffset, toCopy);
wwo->dwPartialOffset += toCopy;
wwo->dwPlayedTotal += toCopy;
dataProvided += toCopy;
dataNeeded -= toCopy;
available -= toCopy;
}
if (available >= dataNeeded)
toCopy = dataNeeded;
else
toCopy = available;
if (available == 0)
{
wodHelper_PlayPtrNext(wwo);
needNotify = 1;
}
if (toCopy > 0)
{
memcpy((char*)ioData->mBuffers[0].mData + dataProvided,
wwo->lpPlayPtr->lpData + wwo->dwPartialOffset, toCopy);
wwo->dwPartialOffset += toCopy;
wwo->dwPlayedTotal += toCopy;
dataProvided += toCopy;
dataNeeded -= toCopy;
available -= toCopy;
}
else
if (available == 0)
{
if (!dataProvided)
*ioActionFlags |= kAudioUnitRenderAction_OutputIsSilence;
memset((char*)ioData->mBuffers[0].mData + dataProvided, 0, dataNeeded);
dataProvided += dataNeeded;
dataNeeded = 0;
wodHelper_PlayPtrNext(wwo);
needNotify = 1;
}
}
pthread_mutex_unlock(&wwo->lock);
/* We can't provide any more wave data. Fill the rest with silence. */
if (dataNeeded > 0)
{
if (!dataProvided)
*ioActionFlags |= kAudioUnitRenderAction_OutputIsSilence;
memset((char*)ioData->mBuffers[0].mData + dataProvided, 0, dataNeeded);
dataProvided += dataNeeded;
dataNeeded = 0;
}
/* We only fill buffer 0. Set any others that might be requested to 0. */
for (buffer = 1; buffer < ioData->mNumberBuffers; buffer++)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment