Module: wine Branch: master Commit: ab735065288c808eb904133fdc51680b6296c1c6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ab735065288c808eb904133fdc...
Author: Aric Stewart aric@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; }