Module: wine Branch: master Commit: 97215773d171b08f7b2a21d22945a6c9c8b6e7f1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=97215773d171b08f7b2a21d229...
Author: Maarten Lankhorst m.b.lankhorst@gmail.com Date: Wed Dec 1 23:17:28 2010 +0100
Revert "quartz: Fill up sound buffer while in paused state.".
This reverts commit e591700177ce80b0a0598a9a756111c5342ae554. It's not fixing the real issue, filling up buffer while paused is actually capable of producing quite a few headaches to get it working right.
---
dlls/quartz/dsoundrender.c | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index a26bd12..c0591ba 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -146,9 +146,7 @@ static HRESULT DSoundRender_GetWritePos(DSoundRenderImpl *This, DWORD *ret_write
DSoundRender_UpdatePositions(This, &writepos, &min_writepos); playpos = This->last_playpos; - if (This->filter.state == State_Paused) { - write_at = cur = -1; - } else if (This->filter.pClock == (IReferenceClock*)&This->IReferenceClock_vtbl) { + if (This->filter.pClock == (IReferenceClock*)&This->IReferenceClock_vtbl) { max_lag = min_lag; cur = This->play_time + time_from_pos(This, playpos); cur -= This->filter.rtStreamStart; @@ -228,10 +226,12 @@ static HRESULT DSoundRender_SendSampleData(DSoundRenderImpl* This, REFERENCE_TIM DWORD writepos, skip = 0, free, size1, size2, ret; BYTE *buf1, *buf2;
- hr = DSoundRender_GetWritePos(This, &writepos, tStart, &free, &skip); + if (This->filter.state == State_Running) + hr = DSoundRender_GetWritePos(This, &writepos, tStart, &free, &skip); + else + hr = S_FALSE;
if (hr != S_OK) { - SetEvent(This->state_change); This->in_loop = 1; LeaveCriticalSection(&This->filter.csFilter); ret = WaitForSingleObject(This->blocked, 10); @@ -251,7 +251,7 @@ static HRESULT DSoundRender_SendSampleData(DSoundRenderImpl* This, REFERENCE_TIM if (skip) FIXME("Sample dropped %u of %u bytes\n", skip, size); if (skip >= size) - break; + return S_OK; data += skip; size -= skip;
@@ -362,6 +362,7 @@ static HRESULT WINAPI DSoundRender_Receive(BaseInputPin *pin, IMediaSample * pSa cbSrcStream = IMediaSample_GetActualDataLength(pSample); TRACE("Sample data ptr = %p, size = %d\n", pbSrcStream, cbSrcStream);
+ SetEvent(This->state_change); hr = DSoundRender_SendSampleData(This, tStart, tStop, pbSrcStream, cbSrcStream); LeaveCriticalSection(&This->filter.csFilter); return hr;