Module: wine Branch: master Commit: fb42513a03f97c898386888f65fe872f108788c8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fb42513a03f97c898386888f65...
Author: Aric Stewart aric@codeweavers.com Date: Fri May 11 13:20:47 2012 -0500
quartz: Reinstate DSoundRender_Pause.
---
dlls/quartz/dsoundrender.c | 32 +++++++++++++++++++++++++++++++- 1 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index 71634d3..696f0a2 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -750,6 +750,36 @@ static ULONG WINAPI DSoundRender_Release(IBaseFilter * iface) return refCount; }
+static HRESULT WINAPI DSoundRender_Pause(IBaseFilter * iface) +{ + HRESULT hr = S_OK; + DSoundRenderImpl *This = (DSoundRenderImpl *)iface; + + TRACE("(%p/%p)->()\n", This, iface); + + EnterCriticalSection(&This->renderer.csRenderLock); + if (This->renderer.filter.state != State_Paused) + { + if (This->renderer.filter.state == State_Stopped) + { + if (This->renderer.pInputPin->pin.pConnectedTo) + ResetEvent(This->renderer.evComplete); + This->renderer.pInputPin->end_of_stream = 0; + } + + hr = IDirectSoundBuffer_Stop(This->dsbuffer); + if (SUCCEEDED(hr)) + This->renderer.filter.state = State_Paused; + + ResetEvent(This->blocked); + ResetEvent(This->renderer.RenderEvent); + } + ResetEvent(This->renderer.ThreadSignal); + LeaveCriticalSection(&This->renderer.csRenderLock); + + return hr; +} + static const IBaseFilterVtbl DSoundRender_Vtbl = { DSoundRender_QueryInterface, @@ -757,7 +787,7 @@ static const IBaseFilterVtbl DSoundRender_Vtbl = DSoundRender_Release, BaseFilterImpl_GetClassID, BaseRendererImpl_Stop, - BaseRendererImpl_Pause, + DSoundRender_Pause, BaseRendererImpl_Run, BaseRendererImpl_GetState, BaseRendererImpl_SetSyncSource,