From e95ba8d8a2fcff7ac2d01e55c1bf95e559bf6df5 Mon Sep 17 00:00:00 2001 From: xXJsonDeruloXx Date: Tue, 13 Oct 2026 18:07:12 -0400 Subject: [PATCH] Use API-compatible activity display lookup --- .../com/droiddeck/launcher/SessionActivity.kt | 4 +-- .../launcher/session/SessionService.kt | 2 +- .../ActivityDisplayCompatibilityTest.kt | 29 +++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 app/src/test/java/com/droiddeck/launcher/session/ActivityDisplayCompatibilityTest.kt diff --git a/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt index 5178e3dd..69efc96b 100644 --- a/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt @@ -2017,7 +2017,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { private fun refreshSecondScreenDisplays() { if (!::displayManager.isInitialized) return - val primaryId = display?.displayId ?: windowManager.defaultDisplay.displayId + val primaryId = windowManager.defaultDisplay.displayId val candidates = SecondScreenDisplays.available(displayManager, primaryId) val oldIds = secondScreenDisplays.map { it.id }.toSet() secondScreenDisplays = candidates @@ -2033,7 +2033,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { } @Suppress("DEPRECATION") - private fun currentActivityDisplayId(): Int = display?.displayId ?: windowManager.defaultDisplay.displayId + private fun currentActivityDisplayId(): Int = windowManager.defaultDisplay.displayId private fun refreshActivityDisplayId(): Boolean { val current = currentActivityDisplayId() diff --git a/app/src/main/java/com/droiddeck/launcher/session/SessionService.kt b/app/src/main/java/com/droiddeck/launcher/session/SessionService.kt index 4b810cd5..26660a4d 100644 --- a/app/src/main/java/com/droiddeck/launcher/session/SessionService.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/SessionService.kt @@ -1958,7 +1958,7 @@ class SessionService : Service() { @Suppress("DEPRECATION") private fun currentActivityDisplayId(context: Context): Int { val activity = context as? android.app.Activity ?: return Display.DEFAULT_DISPLAY - return activity.display?.displayId ?: activity.windowManager.defaultDisplay.displayId + return activity.windowManager.defaultDisplay.displayId } fun resume(context: Context) { diff --git a/app/src/test/java/com/droiddeck/launcher/session/ActivityDisplayCompatibilityTest.kt b/app/src/test/java/com/droiddeck/launcher/session/ActivityDisplayCompatibilityTest.kt new file mode 100644 index 00000000..92ff7d4c --- /dev/null +++ b/app/src/test/java/com/droiddeck/launcher/session/ActivityDisplayCompatibilityTest.kt @@ -0,0 +1,29 @@ +package com.droiddeck.launcher.session + +import android.app.Activity +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [26, 28, 29, 33], manifest = Config.NONE) +class ActivityDisplayCompatibilityTest { + @Test fun visibleActivityUsesItsDisplayIdAcrossSupportedAndroidVersions() { + val wasRunning = SessionState.running + val previousDisplayId = SessionState.activityDisplayId + val activity = Robolectric.buildActivity(Activity::class.java).setup().get() + try { + SessionState.running = false + SessionService.setActivityVisible(activity, true) + + assertEquals(activity.windowManager.defaultDisplay.displayId, SessionState.activityDisplayId) + } finally { + SessionState.running = wasRunning + SessionState.activityDisplayId = previousDisplayId + activity.finish() + } + } +}