فهرست منبع

win-wasapi: Verify and balance CoInitializeEx call

jpark37 5 سال پیش
والد
کامیت
7d3e086e6f
1فایلهای تغییر یافته به همراه11 افزوده شده و 1 حذف شده
  1. 11 1
      plugins/win-wasapi/win-wasapi.cpp

+ 11 - 1
plugins/win-wasapi/win-wasapi.cpp

@@ -386,7 +386,14 @@ DWORD WINAPI WASAPISource::ReconnectThread(LPVOID param)
 
 	os_set_thread_name("win-wasapi: reconnect thread");
 
-	CoInitializeEx(0, COINIT_MULTITHREADED);
+	const HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED);
+	const bool com_initialized = SUCCEEDED(hr);
+	if (!com_initialized) {
+		blog(LOG_ERROR,
+		     "[WASAPISource::ReconnectThread]"
+		     " CoInitializeEx failed: 0x%08X",
+		     hr);
+	}
 
 	obs_monitoring_type type =
 		obs_source_get_monitoring_type(source->source);
@@ -400,6 +407,9 @@ DWORD WINAPI WASAPISource::ReconnectThread(LPVOID param)
 
 	obs_source_set_monitoring_type(source->source, type);
 
+	if (com_initialized)
+		CoUninitialize();
+
 	source->reconnectThread = nullptr;
 	source->reconnecting = false;
 	return 0;