瀏覽代碼

win-wasapi: Unapply/reapply audio monitoring on reconnect

Saves and disable monitoring before entering recover loop, and restores
it after recovery is complete.
Igor Bochkariov 6 年之前
父節點
當前提交
69b4df41c6
共有 1 個文件被更改,包括 6 次插入0 次删除
  1. 6 0
      plugins/win-wasapi/win-wasapi.cpp

+ 6 - 0
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>
@@ -368,11 +369,16 @@ DWORD WINAPI WASAPISource::ReconnectThread(LPVOID param)
 
 	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;