Module: wine Branch: master Commit: 6530824ab31bf9af311f3f93e2d145b81f85de9c URL: http://source.winehq.org/git/wine.git/?a=commit;h=6530824ab31bf9af311f3f93e2...
Author: Jactry Zeng jzeng@codeweavers.com Date: Tue Feb 7 22:20:29 2017 +0800
qcap: Avoid call LeaveCriticalSection() repeatedly.
Signed-off-by: Jactry Zeng jzeng@codeweavers.com Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/qcap/v4l.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-)
diff --git a/dlls/qcap/v4l.c b/dlls/qcap/v4l.c index 54e0230..bc760bd 100644 --- a/dlls/qcap/v4l.c +++ b/dlls/qcap/v4l.c @@ -604,7 +604,12 @@ static DWORD WINAPI ReadThread(LPVOID lParam)
hr = V4l_Prepare(capBox); if (FAILED(hr)) - goto fail; + { + ERR("Stop IFilterGraph: %x\n", hr); + capBox->thread = 0; + capBox->stopped = TRUE; + return 0; + }
pOutput = CoTaskMemAlloc(capBox->width * capBox->height * capBox->bitDepth / 8); capBox->curframe = 0; @@ -641,27 +646,19 @@ static DWORD WINAPI ReadThread(LPVOID lParam) IMediaSample_Release(pSample); V4l_FreeFrame(capBox); } - LeaveCriticalSection(&capBox->CritSect); if (FAILED(hr) && hr != VFW_E_NOT_CONNECTED) { - ERR("Received error: %x\n", hr); - goto cfail; + TRACE("Return %x, stop IFilterGraph\n", hr); + V4l_Unprepare(capBox); + capBox->thread = 0; + capBox->stopped = TRUE; + break; } + LeaveCriticalSection(&capBox->CritSect); } - LeaveCriticalSection(&capBox->CritSect); - CoTaskMemFree(pOutput); - - return 0;
-cfail: - CoTaskMemFree(pOutput); - V4l_Unprepare(capBox); LeaveCriticalSection(&capBox->CritSect); - -fail: - capBox->thread = 0; - capBox->stopped = TRUE; - FIXME("Stop IFilterGraph\n"); + CoTaskMemFree(pOutput); return 0; }