From affefc35a8ac1b7ae50d040ca7b80d6c42214b1b Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Sat, 11 May 2024 11:25:48 +0000 Subject: [PATCH] fix usage stat update --- .../org/ryujinx/android/PerformanceMonitor.kt | 48 +++---------------- .../android/viewmodels/MainViewModel.kt | 6 ++- .../org/ryujinx/android/views/GameViews.kt | 47 +++++++++++++++--- 3 files changed, 51 insertions(+), 50 deletions(-) diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/PerformanceMonitor.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/PerformanceMonitor.kt index a461acf81..fb1cd878d 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/PerformanceMonitor.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/PerformanceMonitor.kt @@ -8,6 +8,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import java.io.RandomAccessFile @@ -15,8 +17,8 @@ import java.io.RandomAccessFile class PerformanceMonitor { val numberOfCores = Runtime.getRuntime().availableProcessors() - fun getFrequencies(): List { - val frequencies = mutableListOf() + fun getFrequencies(frequencies: MutableList){ + frequencies.clear() for (i in 0.. { - val mem = mutableListOf() + fun getMemoryUsage(mem: MutableList){ + mem.clear() MainActivity.mainViewModel?.activity?.apply { val actManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager val memInfo = ActivityManager.MemoryInfo() @@ -49,41 +49,5 @@ class PerformanceMonitor { mem.add((totalMemory - availMemory).toInt()) mem.add(totalMemory.toInt()) } - return mem.toList() - } - - @Composable - fun RenderUsage() { - LazyColumn { - val frequencies = getFrequencies() - val mem = getMemoryUsage() - - for (i in 0.., gameFps: MutableState, - gameTime: MutableState + gameTime: MutableState, + mem: MutableList, + frequencies: MutableList ) { fifoState = fifo gameFpsState = gameFps gameTimeState = gameTime + MainActivity.performanceMonitor.getMemoryUsage(mem) + MainActivity.performanceMonitor.getFrequencies(frequencies) } fun updateStats( diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/GameViews.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/GameViews.kt index 28ece4bc8..bcecb4ebd 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/GameViews.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/GameViews.kt @@ -5,13 +5,16 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.material3.AlertDialog +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.BasicAlertDialog import androidx.compose.material3.Button @@ -27,6 +30,7 @@ import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.mutableDoubleStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -333,13 +337,19 @@ class GameViews { @Composable fun GameStats(mainViewModel: MainViewModel) { val fifo = remember { - mutableStateOf(0.0) + mutableDoubleStateOf(0.0) } val gameFps = remember { - mutableStateOf(0.0) + mutableDoubleStateOf(0.0) } val gameTime = remember { - mutableStateOf(0.0) + mutableDoubleStateOf(0.0) + } + val mem = remember { + mutableListOf(0,0) + } + val frequencies = remember { + mutableListOf() } Surface( @@ -354,14 +364,37 @@ class GameViews { Text(text = "${String.format("%.3f", fifo.value)} %") Text(text = "${String.format("%.3f", gameFps.value)} FPS") Text(text = "${String.format("%.3f", gameTimeVal)} ms") - Box(modifier = Modifier.width(84.dp)) { - MainActivity.performanceMonitor.RenderUsage() + Box(modifier = Modifier.width(96.dp)) { + Column { + LazyColumn { + itemsIndexed(frequencies) { i, t -> + Row { + Text( + modifier = Modifier.padding(2.dp), + text = "CPU $i" + ) + Spacer(Modifier.weight(1f)) + Text(text = "$t MHz") + } + } + } + Row { + Text(modifier = Modifier.padding(2.dp), text = "Used") + Spacer(Modifier.weight(1f)) + Text(text = "${mem[0]} MB") + } + Row { + Text(modifier = Modifier.padding(2.dp), text = "Total") + Spacer(Modifier.weight(1f)) + Text(text = "${mem[1]} MB") + } + } } } } } - mainViewModel.setStatStates(fifo, gameFps, gameTime) + mainViewModel.setStatStates(fifo, gameFps, gameTime, mem, frequencies) } } }