From 98fba1340f5ef748f25e2cd1b931b08a743fd899 Mon Sep 17 00:00:00 2001 From: Damontecres Date: Sat, 12 Sep 2026 18:38:54 -0400 Subject: [PATCH] Fix OS screensaver starting during playback with dim enabled (#1956) ## Description Fixes some devices activating the OS screensaver during playback when the in-app dim was enabled. I was not able to reproduce this on Shield 2017/2019, but could easily on a Fire TV Stick. #1834 added the dim feature and, when enabled, would not pass the keep screen on flag to the OS during playback. It seems maybe regular Android TV's screensaver also listened to active media session to prevent starting but maybe Fire TV OS doesn't. I'm not 100% sure. This PR changes the logic slightly so that the keep screen on flag is always set during playback. ### Related issues Fixes #1894 Related to dim feature from https://github.com/damontecres/Wholphin/pull/1834 ### Testing Emulator, shield 2019, & fire tv stick 4k ## Screenshots N/A ## AI or LLM usage None --- .../damontecres/wholphin/services/ScreensaverService.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/ScreensaverService.kt b/app/src/main/java/com/github/damontecres/wholphin/services/ScreensaverService.kt index 09aa29a8..c3fcb478 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/ScreensaverService.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/ScreensaverService.kt @@ -173,9 +173,10 @@ class ScreensaverService */ fun keepScreenOn(keep: Boolean) { scope.launchDefault { - val screensaverEnabled = _state.value.run { enabled || dimEnabled } + val screensaverEnabled = state.value.enabled + val dimEnabled = state.value.dimEnabled Timber.d("Keep screen on: %s, screensaverEnabled=%s", keep, screensaverEnabled) - if (screensaverEnabled) { + if (screensaverEnabled || dimEnabled) { // Page is requesting to keep screen on, so we don't wait to show the screensaver _state.update { it.copy( @@ -187,7 +188,9 @@ class ScreensaverService if (!keep) { pulse() } - } else { + } + if (!screensaverEnabled) { + // If in-app screensaver is not enabled, send keep screen on to the OS keepScreenOnInternal(keep) } }