소스 검색

win-wasapi: Fix Stop hang

Fix hang when audio capture is active in the background and stopped by
either closing OBS, or switching scene collections.
jpark37 3 년 전
부모
커밋
d21891b3ca
1개의 변경된 파일5개의 추가작업 그리고 4개의 파일을 삭제
  1. 5 4
      plugins/win-wasapi/win-wasapi.cpp

+ 5 - 4
plugins/win-wasapi/win-wasapi.cpp

@@ -528,9 +528,6 @@ void WASAPISource::Start()
 
 void WASAPISource::Stop()
 {
-	if (!reconnectThread.Valid())
-		WaitForSingleObject(reconnectSignal, INFINITE);
-
 	SetEvent(stopSignal);
 
 	blog(LOG_INFO, "WASAPI: Device '%s' Terminated", device_name.c_str());
@@ -538,8 +535,12 @@ void WASAPISource::Stop()
 	if (rtwq_supported)
 		SetEvent(receiveSignal);
 
-	if (reconnectThread.Valid())
+	if (reconnectThread.Valid()) {
 		WaitForSingleObject(idleSignal, INFINITE);
+	} else {
+		const HANDLE sigs[] = {reconnectSignal, idleSignal};
+		WaitForMultipleObjects(_countof(sigs), sigs, false, INFINITE);
+	}
 
 	SetEvent(exitSignal);