1
0
Эх сурвалжийг харах

UI: Check current affinity before calling SetWindowDisplayAffinity

For some reason, SetWindowDisplayAffinity can make windows visible even
when it sets the same value for affinity that GetWindowDisplayAffinity
reports. Possibly an API bug as this is probably not a widely used API
yet?

Fixes a weird window with no size appearing when browsing for files on
Windows.
Richard Stanway 3 жил өмнө
parent
commit
5ed45d06da

+ 8 - 4
UI/window-basic-main.cpp

@@ -9964,10 +9964,14 @@ void OBSBasic::SetDisplayAffinity(QWindow *window)
 #ifdef _WIN32
 #ifdef _WIN32
 	HWND hwnd = (HWND)window->winId();
 	HWND hwnd = (HWND)window->winId();
 
 
-	if (hideFromCapture)
-		SetWindowDisplayAffinity(hwnd, WDA_EXCLUDEFROMCAPTURE);
-	else
-		SetWindowDisplayAffinity(hwnd, WDA_NONE);
+	DWORD curAffinity;
+	if (GetWindowDisplayAffinity(hwnd, &curAffinity)) {
+		if (hideFromCapture && curAffinity != WDA_EXCLUDEFROMCAPTURE)
+			SetWindowDisplayAffinity(hwnd, WDA_EXCLUDEFROMCAPTURE);
+		else if (curAffinity != WDA_NONE)
+			SetWindowDisplayAffinity(hwnd, WDA_NONE);
+	}
+
 #else
 #else
 // TODO: Implement for other platforms if possible. Don't forget to
 // TODO: Implement for other platforms if possible. Don't forget to
 // implement SetDisplayAffinitySupported too!
 // implement SetDisplayAffinitySupported too!