Aric Stewart : quartz: Reinstate DSoundRender_Pause.

Alexandre Julliard julliard at winehq.org
Mon May 14 14:26:03 CDT 2012


Module: wine
Branch: master
Commit: fb42513a03f97c898386888f65fe872f108788c8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fb42513a03f97c898386888f65fe872f108788c8

Author: Aric Stewart <aric at 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,




More information about the wine-cvs mailing list