Maarten Lankhorst : quartz: End the flush downstream first before restarting playback in pullpin.

Alexandre Julliard julliard at winehq.org
Fri Jul 11 08:44:05 CDT 2008


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

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Thu Jul 10 14:32:58 2008 -0700

quartz: End the flush downstream first before restarting playback in pullpin.

---

 dlls/quartz/pin.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/dlls/quartz/pin.c b/dlls/quartz/pin.c
index bb562ad..e45db96 100644
--- a/dlls/quartz/pin.c
+++ b/dlls/quartz/pin.c
@@ -1783,6 +1783,11 @@ HRESULT WINAPI PullPin_EndFlush(IPin * iface)
 
     TRACE("(%p)->()\n", iface);
 
+    /* Send further first: Else a race condition might terminate processing early */
+    EnterCriticalSection(This->pin.pCritSec);
+    SendFurther( iface, deliver_endflush, NULL, NULL );
+    LeaveCriticalSection(This->pin.pCritSec);
+
     EnterCriticalSection(&This->thread_lock);
     {
         FILTER_STATE state;
@@ -1795,10 +1800,6 @@ HRESULT WINAPI PullPin_EndFlush(IPin * iface)
     }
     LeaveCriticalSection(&This->thread_lock);
 
-    EnterCriticalSection(This->pin.pCritSec);
-    SendFurther( iface, deliver_endflush, NULL, NULL );
-    LeaveCriticalSection(This->pin.pCritSec);
-
     return S_OK;
 }
 




More information about the wine-cvs mailing list