Aric Stewart : wineqtdecoder: Lock the Transform filter csReceive around the decommpression callback.

Alexandre Julliard julliard at winehq.org
Tue Jan 17 13:45:24 CST 2012


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Mon Jan 16 14:14:29 2012 -0600

wineqtdecoder: Lock the Transform filter csReceive around the decommpression callback.

---

 dlls/wineqtdecoder/qtvdecoder.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/dlls/wineqtdecoder/qtvdecoder.c b/dlls/wineqtdecoder/qtvdecoder.c
index ceab21e..79e06a5 100644
--- a/dlls/wineqtdecoder/qtvdecoder.c
+++ b/dlls/wineqtdecoder/qtvdecoder.c
@@ -179,7 +179,7 @@ static void trackingCallback(
         return;
     }
 
-    EnterCriticalSection(&This->tf.filter.csFilter);
+    EnterCriticalSection(&This->tf.csReceive);
     hr = BaseOutputPinImpl_GetDeliveryBuffer((BaseOutputPin*)This->tf.ppPins[1], &pOutSample, NULL, NULL, 0);
     if (FAILED(hr)) {
         ERR("Unable to get delivery buffer (%x)\n", hr);
@@ -230,12 +230,12 @@ static void trackingCallback(
         IMediaSample_SetTime(pOutSample, &tStart, &tStop);
     }
 
-    LeaveCriticalSection(&This->tf.filter.csFilter);
     hr = BaseOutputPinImpl_Deliver((BaseOutputPin*)This->tf.ppPins[1], pOutSample);
     if (hr != S_OK && hr != VFW_E_NOT_CONNECTED)
         ERR("Error sending sample (%x)\n", hr);
 
 error:
+    LeaveCriticalSection(&This->tf.csReceive);
     if (pOutSample)
         IMediaSample_Release(pOutSample);
 
@@ -278,7 +278,6 @@ static HRESULT WINAPI QTVDecoder_Receive(TransformFilter *tf, IMediaSample *pSam
     OSStatus err = noErr;
     LONGLONG tStart, tStop;
 
-    EnterCriticalSection(&This->tf.filter.csFilter);
     hr = IMediaSample_GetPointer(pSample, &pbSrcStream);
     if (FAILED(hr))
     {
@@ -316,7 +315,6 @@ static HRESULT WINAPI QTVDecoder_Receive(TransformFilter *tf, IMediaSample *pSam
     hr = This->decodeHR;
 
 error:
-    LeaveCriticalSection(&This->tf.filter.csFilter);
     return hr;
 }
 




More information about the wine-cvs mailing list