浏览代码

Merge pull request #1742 from ujifgc/fix-wasapi-usb-disconnect

win-wasapi: Fix audio capture after USB sound card unplugging
Jim 6 年之前
父节点
当前提交
491abe7f40
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9 1
      plugins/win-wasapi/win-wasapi.cpp

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

@@ -1,6 +1,7 @@
 #include "enum-wasapi.hpp"
 
 #include <obs-module.h>
+#include <obs.h>
 #include <util/platform.h>
 #include <util/windows/HRError.hpp>
 #include <util/windows/ComPtr.hpp>
@@ -366,11 +367,18 @@ DWORD WINAPI WASAPISource::ReconnectThread(LPVOID param)
 
 	os_set_thread_name("win-wasapi: reconnect thread");
 
+	CoInitializeEx(0, COINIT_MULTITHREADED);
+
+	obs_monitoring_type type = obs_source_get_monitoring_type(source->source);
+	obs_source_set_monitoring_type(source->source, OBS_MONITORING_TYPE_NONE);
+
 	while (!WaitForSignal(source->stopSignal, RECONNECT_INTERVAL)) {
 		if (source->TryInitialize())
 			break;
 	}
 
+	obs_source_set_monitoring_type(source->source, type);
+
 	source->reconnectThread = nullptr;
 	source->reconnecting = false;
 	return 0;
@@ -446,7 +454,7 @@ DWORD WINAPI WASAPISource::CaptureThread(LPVOID param)
 	bool         reconnect = false;
 
 	/* Output devices don't signal, so just make it check every 10 ms */
-	DWORD        dur       = source->isInputDevice ? INFINITE : 10;
+	DWORD        dur       = source->isInputDevice ? RECONNECT_INTERVAL : 10;
 
 	HANDLE sigs[2] = {
 		source->receiveSignal,