From f309d4881acaaf539bd572a933c55369220b0cb6 Mon Sep 17 00:00:00 2001 From: David Griswold Date: Thu, 11 Sep 2025 22:24:33 +0300 Subject: [PATCH] android: Add Display Listener methods for smoother secondary display updates --- .../citra/citra_emu/display/SecondaryDisplay.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 e0594a7e5..b44929c9d 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 @@ -20,7 +20,7 @@ import org.citra.citra_emu.features.settings.model.IntSetting import org.citra.citra_emu.display.SecondaryDisplayLayout import org.citra.citra_emu.NativeLibrary -class SecondaryDisplay(val context: Context) { +class SecondaryDisplay(val context: Context) : DisplayManager.DisplayListener { private var pres: SecondaryDisplayPresentation? = null private val displayManager = context.getSystemService(Context.DISPLAY_SERVICE) as DisplayManager private val vd: VirtualDisplay @@ -34,6 +34,7 @@ class SecondaryDisplay(val context: Context) { null, DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION ) + displayManager.registerDisplayListener(this, null) } fun updateSurface() { @@ -74,8 +75,20 @@ class SecondaryDisplay(val context: Context) { } fun releaseVD() { + displayManager.unregisterDisplayListener(this) vd.release() } + + override fun onDisplayAdded(displayId: Int) { + updateDisplay() + } + + override fun onDisplayRemoved(displayId: Int) { + updateDisplay() + } + override fun onDisplayChanged(displayId: Int) { + updateDisplay() + } } class SecondaryDisplayPresentation( context: Context, display: Display, val parent: SecondaryDisplay