Jörg Höhle : mciavi: Prevent deadlock when closing while playing or when paused.
Alexandre Julliard
julliard at winehq.org
Mon Mar 15 12:19:39 CDT 2010
Module: wine
Branch: master
Commit: 22569e6dcea72c9e170c1b0ef6dca9526b1eb87c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=22569e6dcea72c9e170c1b0ef6dca9526b1eb87c
Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date: Wed Mar 10 20:32:33 2010 +0100
mciavi: Prevent deadlock when closing while playing or when paused.
---
dlls/mciavi32/mciavi.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/mciavi32/mciavi.c b/dlls/mciavi32/mciavi.c
index d77525c..0963821 100644
--- a/dlls/mciavi32/mciavi.c
+++ b/dlls/mciavi32/mciavi.c
@@ -89,6 +89,7 @@ static DWORD MCIAVI_drvOpen(LPCWSTR str, LPMCI_OPEN_DRIVER_PARMSW modp)
wma->hStopEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
wma->wDevID = modp->wDeviceID;
wma->wCommandTable = mciLoadCommandResource(MCIAVI_hInstance, mciAviWStr, 0);
+ wma->dwStatus = MCI_MODE_NOT_READY;
modp->wCustomCommandTable = wma->wCommandTable;
modp->wType = MCI_DEVTYPE_DIGITAL_VIDEO;
mciSetDriverData(wma->wDevID, (DWORD_PTR)wma);
@@ -301,11 +302,11 @@ DWORD MCIAVI_mciClose(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
wma = MCIAVI_mciGetOpenDev(wDevID);
if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
+ MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
+
EnterCriticalSection(&wma->cs);
if (wma->nUseCount == 1) {
- if (wma->dwStatus != MCI_MODE_STOP)
- dwRet = MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
MCIAVI_CleanUp(wma);
if ((dwFlags & MCI_NOTIFY) && lpParms) {
More information about the wine-cvs
mailing list