diff --git a/app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt b/app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt index d21f5d4240..eac67e74ec 100644 --- a/app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt +++ b/app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt @@ -1468,6 +1468,37 @@ fun XServerScreen( } } + DisposableEffect(lifecycleOwner, performanceHudView) { + val hud = performanceHudView + if (hud != null) { + if (lifecycleOwner.lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) { + hud.resume() + } else { + hud.pause() + } + + val observer = LifecycleEventObserver { _, event -> + when (event) { + Lifecycle.Event.ON_PAUSE -> { + Timber.d("Pausing PerformanceHudView for lifecycle event: $event") + hud.pause() + } + Lifecycle.Event.ON_RESUME -> { + Timber.d("Resuming PerformanceHudView for lifecycle event: $event") + hud.resume() + } + else -> Unit + } + } + lifecycleOwner.lifecycle.addObserver(observer) + onDispose { + lifecycleOwner.lifecycle.removeObserver(observer) + } + } else { + onDispose { } + } + } + val isPortrait = container.isPortraitMode // var launchedView by rememberSaveable { mutableStateOf(false) } Box(modifier = Modifier.fillMaxSize()) { diff --git a/app/src/main/java/app/gamenative/ui/widget/PerformanceHudView.kt b/app/src/main/java/app/gamenative/ui/widget/PerformanceHudView.kt index 6ece60af99..6570b0804d 100644 --- a/app/src/main/java/app/gamenative/ui/widget/PerformanceHudView.kt +++ b/app/src/main/java/app/gamenative/ui/widget/PerformanceHudView.kt @@ -61,6 +61,7 @@ class PerformanceHudView( private var attachedMetricSignature: List = emptyList() private var appearance = appearanceFor(initialConfig.size) private var smoothedBatteryRuntimeHours: Double? = null + private var isPaused = false private val backgroundDrawable = GradientDrawable().apply { shape = GradientDrawable.RECTANGLE @@ -166,9 +167,27 @@ class PerformanceHudView( refreshVisibleMetrics() } + fun pause() { + if (!isPaused) { + isPaused = true + stopUpdates() + } + } + + fun resume() { + if (isPaused) { + isPaused = false + if (isAttachedToWindow) { + startUpdates() + } + } + } + override fun onAttachedToWindow() { super.onAttachedToWindow() - startUpdates() + if (!isPaused) { + startUpdates() + } } override fun onDetachedFromWindow() { @@ -678,7 +697,7 @@ class PerformanceHudView( discoverPrioritizedCpuTempPaths(), ) if (reading != null) { - Timber.v("[HUD] CPU temp: %d°C from %s", reading.celsius, reading.source) + Timber.d("[HUD] CPU temp: %d°C from %s", reading.celsius, reading.source) } return reading?.celsius } @@ -690,7 +709,7 @@ class PerformanceHudView( ) + discoverPrioritizedGpuTempPaths() val reading = readTemperatureCWithSource(paths) if (reading != null) { - Timber.v("[HUD] GPU temp: %d°C from %s", reading.celsius, reading.source) + Timber.d("[HUD] GPU temp: %d°C from %s", reading.celsius, reading.source) } return reading?.celsius }