Christian Costa : mciqtz32: Only call CoUninitialize when CoInitializeEx succeeds.

Alexandre Julliard julliard at winehq.org
Mon Apr 12 09:54:09 CDT 2010


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

Author: Christian Costa <titan.costa at wanadoo.fr>
Date:   Mon Apr 12 11:21:27 2010 +0200

mciqtz32: Only call CoUninitialize when CoInitializeEx succeeds.

---

 dlls/mciqtz32/mciqtz.c         |    9 ++++++---
 dlls/mciqtz32/mciqtz_private.h |    1 +
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/dlls/mciqtz32/mciqtz.c b/dlls/mciqtz32/mciqtz.c
index b98e163..c826de1 100644
--- a/dlls/mciqtz32/mciqtz.c
+++ b/dlls/mciqtz32/mciqtz.c
@@ -153,7 +153,8 @@ static DWORD MCIQTZ_mciOpen(UINT wDevID, DWORD dwFlags,
 
     MCIQTZ_mciStop(wDevID, MCI_WAIT, NULL);
 
-    CoInitializeEx(NULL, COINIT_MULTITHREADED);
+    hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
+    wma->uninit = SUCCEEDED(hr);
 
     hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, &IID_IGraphBuilder, (LPVOID*)&wma->pgraph);
     if (FAILED(hr)) {
@@ -197,7 +198,8 @@ err:
         IMediaControl_Release(wma->pmctrl);
     wma->pmctrl = NULL;
 
-    CoUninitialize();
+    if (wma->uninit)
+        CoUninitialize();
 
     return MCIERR_INTERNAL;
 }
@@ -220,7 +222,8 @@ static DWORD MCIQTZ_mciClose(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpP
     if (wma->opened) {
         IGraphBuilder_Release(wma->pgraph);
         IMediaControl_Release(wma->pmctrl);
-        CoUninitialize();
+        if (wma->uninit)
+            CoUninitialize();
         wma->opened = FALSE;
     }
 
diff --git a/dlls/mciqtz32/mciqtz_private.h b/dlls/mciqtz32/mciqtz_private.h
index dcfcad0..caf80de 100644
--- a/dlls/mciqtz32/mciqtz_private.h
+++ b/dlls/mciqtz32/mciqtz_private.h
@@ -28,6 +28,7 @@
 typedef struct {
     MCIDEVICEID    wDevID;
     BOOL           opened;
+    BOOL           uninit;
     IGraphBuilder* pgraph;
     IMediaControl* pmctrl;
     BOOL           started;




More information about the wine-cvs mailing list