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