From 1001bc00af3d172b8a3a3fe0db175194706f7d48 Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Fri, 6 Nov 2026 13:24:37 -0500 Subject: [PATCH] fix: PiP scales the full-size output instead of shrinking it (#2174) * fix: PiP scales the full-size output instead of shrinking it * fix: hide the performance HUD as PiP starts so it does not flash at full size --- .../main/java/com/droiddeck/launcher/SessionActivity.kt | 5 ++--- .../main/java/com/droiddeck/launcher/session/PipPolicy.kt | 8 -------- .../java/com/droiddeck/launcher/session/PipPolicyTest.kt | 6 ------ 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt index df843a039..39d84113a 100644 --- a/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt @@ -2284,9 +2284,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { } private fun windowOutputSize(width: Int, height: Int): Pair? { - if (width <= 0 || height <= 0) return null - if (isInPictureInPictureMode) return com.droiddeck.launcher.session.PipPolicy.outputSize( - width, height, SessionState.outputSize.first, SessionState.outputSize.second) + if (width <= 0 || height <= 0 || isInPictureInPictureMode) return null if (bottomGame != null) return when { SessionState.followScreen -> com.droiddeck.launcher.session.SessionDisplay.followSize(width, height, false, SessionState.followScale) @@ -4384,6 +4382,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { private fun showPipUi(show: Boolean) { pipUi = show if (show) { + if (::hud.isInitialized) hud.setHidden(true) drawerOpen = false pcKeyboardOpen = false achievementsOpen = false diff --git a/app/src/main/java/com/droiddeck/launcher/session/PipPolicy.kt b/app/src/main/java/com/droiddeck/launcher/session/PipPolicy.kt index b5c9f112f..d2d4d49bd 100644 --- a/app/src/main/java/com/droiddeck/launcher/session/PipPolicy.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/PipPolicy.kt @@ -11,12 +11,4 @@ object PipPolicy { height.toDouble() / width > 2.39 -> 100 to 239 else -> width to height } - - fun outputSize(width: Int, height: Int, outputWidth: Int, outputHeight: Int): Pair? { - if (width <= 0 || height <= 0 || outputWidth <= 0 || outputHeight <= 0) return null - val scale = minOf(width.toFloat() / outputWidth, height.toFloat() / outputHeight) - val fittedWidth = ((outputWidth * scale).toInt() and 1.inv()).coerceAtLeast(2) - val fittedHeight = ((outputHeight * scale).toInt() and 1.inv()).coerceAtLeast(2) - return fittedWidth to fittedHeight - } } diff --git a/app/src/test/java/com/droiddeck/launcher/session/PipPolicyTest.kt b/app/src/test/java/com/droiddeck/launcher/session/PipPolicyTest.kt index 40b169fad..1261abd54 100644 --- a/app/src/test/java/com/droiddeck/launcher/session/PipPolicyTest.kt +++ b/app/src/test/java/com/droiddeck/launcher/session/PipPolicyTest.kt @@ -24,10 +24,4 @@ class PipPolicyTest { assertEquals(100 to 239, PipPolicy.aspect(1080, 5760)) assertEquals(16 to 9, PipPolicy.aspect(0, 0)) } - - @Test fun pipOutputFitsTheResizedSurfaceWithoutChangingAspectRatio() { - assertEquals(640 to 360, PipPolicy.outputSize(640, 480, 1920, 1080)) - assertEquals(480 to 270, PipPolicy.outputSize(480, 270, 1920, 1080)) - assertNull(PipPolicy.outputSize(0, 270, 1920, 1080)) - } }