From 147f8e660c9e4d9ef9be9dfa3fe259b2982c6324 Mon Sep 17 00:00:00 2001 From: David Griswold Date: Wed, 5 Nov 2025 08:02:32 +0300 Subject: [PATCH] poll all displays --- .../citra/citra_emu/display/SecondaryDisplay.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt b/src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt index b44929c9d..f4d736ced 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/display/SecondaryDisplay.kt @@ -47,9 +47,18 @@ class SecondaryDisplay(val context: Context) : DisplayManager.DisplayListener { private fun getExternalDisplay(context: Context): Display? { val dm = context.getSystemService(Context.DISPLAY_SERVICE) as DisplayManager - val internalId = context.display.displayId ?: Display.DEFAULT_DISPLAY - val displays = dm.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION) - return displays.firstOrNull { it.displayId != internalId && it.name != "HiddenDisplay" } + val currentDisplayId = context.display.displayId + val displays = dm.displays + val presDisplays = dm.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION); + return displays.firstOrNull { + val isPresentable = presDisplays.any { pd -> pd.displayId == it.displayId } + val isNotDefaultOrPresentable = it.displayId != Display.DEFAULT_DISPLAY || isPresentable + isNotDefaultOrPresentable && + it.displayId != currentDisplayId && + it.name != "HiddenDisplay" && + it.state != Display.STATE_OFF && + it.isValid + } } fun updateDisplay() {