diff --git a/plugins/win-wasapi/win-wasapi.cpp b/plugins/win-wasapi/win-wasapi.cpp index a806e151a..21103a3f5 100644 --- a/plugins/win-wasapi/win-wasapi.cpp +++ b/plugins/win-wasapi/win-wasapi.cpp @@ -1,6 +1,7 @@ #include "enum-wasapi.hpp" #include +#include #include #include #include @@ -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,