quartz: Handle state changes in direct sound renderer correctly.
authorMaarten Lankhorst <m.b.lankhorst@gmail.com>
Thu, 11 Nov 2010 15:01:36 +0000 (16:01 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Thu, 11 Nov 2010 16:20:24 +0000 (17:20 +0100)
Based on a patch from Vladimir Panteleev

dlls/quartz/dsoundrender.c

index ca58b983a0e3237ef54ceaa67fa6e202dedb054e..759ba077c00afbd3485f1a9f5cfd73029dd06356 100644 (file)
@@ -620,6 +620,7 @@ static HRESULT WINAPI DSoundRender_Pause(IBaseFilter * iface)
         if (This->filter.state == State_Stopped)
         {
             This->pInputPin->end_of_stream = 0;
+            ResetEvent(This->state_change);
         }
 
         hr = IDirectSoundBuffer_Stop(This->dsbuffer);
@@ -627,7 +628,6 @@ static HRESULT WINAPI DSoundRender_Pause(IBaseFilter * iface)
             This->filter.state = State_Paused;
 
         ResetEvent(This->blocked);
-        ResetEvent(This->state_change);
     }
     LeaveCriticalSection(&This->filter.csFilter);
 
@@ -856,6 +856,7 @@ static HRESULT WINAPI DSoundRender_InputPin_EndOfStream(IPin * iface)
         }
     }
     MediaSeekingPassThru_EOS(me->seekthru_unk);
+    SetEvent(me->state_change);
     LeaveCriticalSection(This->pin.pCritSec);
 
     return hr;