forked from MeloNX/MeloNX
android - add log settings
This commit is contained in:
parent
574b74bdea
commit
289471ac1a
@ -52,3 +52,7 @@ class Logging(private var viewModel: MainViewModel) {
|
||||
File(logPath).mkdirs()
|
||||
}
|
||||
}
|
||||
|
||||
internal enum class LogLevel {
|
||||
Debug, Stub, Info, Warning, Error, Guest, AccessLog, Notice, Trace
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import androidx.core.view.WindowInsetsControllerCompat
|
||||
import com.anggrayudi.storage.SimpleStorageHelper
|
||||
import org.ryujinx.android.ui.theme.RyujinxAndroidTheme
|
||||
import org.ryujinx.android.viewmodels.MainViewModel
|
||||
import org.ryujinx.android.viewmodels.QuickSettings
|
||||
import org.ryujinx.android.views.MainView
|
||||
import kotlin.math.abs
|
||||
|
||||
@ -64,7 +65,17 @@ class MainActivity : BaseActivity() {
|
||||
return
|
||||
|
||||
val appPath: String = AppPath
|
||||
val success = RyujinxNative.instance.initialize(NativeHelpers.instance.storeStringJava(appPath), false)
|
||||
|
||||
var quickSettings = QuickSettings(this)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Debug.ordinal, quickSettings.enableDebugLogs)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Info.ordinal, quickSettings.enableInfoLogs)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Stub.ordinal, quickSettings.enableStubLogs)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Warning.ordinal, quickSettings.enableWarningLogs)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Error.ordinal, quickSettings.enableErrorLogs)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.AccessLog.ordinal, quickSettings.enableAccessLogs)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Guest.ordinal, quickSettings.enableGuestLogs)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Trace.ordinal, quickSettings.enableTraceLogs)
|
||||
val success = RyujinxNative.instance.initialize(NativeHelpers.instance.storeStringJava(appPath))
|
||||
_isInit = success
|
||||
}
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@ -78,7 +89,6 @@ class MainActivity : BaseActivity() {
|
||||
|
||||
AppPath = this.getExternalFilesDir(null)!!.absolutePath
|
||||
|
||||
|
||||
initialize()
|
||||
|
||||
window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
|
||||
|
@ -4,7 +4,7 @@ import org.ryujinx.android.viewmodels.GameInfo
|
||||
|
||||
@Suppress("KotlinJniMissingFunction")
|
||||
class RyujinxNative {
|
||||
external fun initialize(appPath: Long, enableDebugLogs : Boolean): Boolean
|
||||
external fun initialize(appPath: Long): Boolean
|
||||
|
||||
companion object {
|
||||
val instance: RyujinxNative = RyujinxNative()
|
||||
@ -64,4 +64,5 @@ class RyujinxNative {
|
||||
external fun userDeleteUser(userId: String)
|
||||
external fun userOpenUser(userId: Long)
|
||||
external fun userCloseUser(userId: String)
|
||||
external fun loggingSetEnabled(logLevel: Int, enabled: Boolean)
|
||||
}
|
||||
|
@ -17,6 +17,16 @@ class QuickSettings(val activity: Activity) {
|
||||
var resScale : Float
|
||||
var isGrid : Boolean
|
||||
|
||||
// Logs
|
||||
var enableDebugLogs: Boolean
|
||||
var enableStubLogs: Boolean
|
||||
var enableInfoLogs: Boolean
|
||||
var enableWarningLogs: Boolean
|
||||
var enableErrorLogs: Boolean
|
||||
var enableGuestLogs: Boolean
|
||||
var enableAccessLogs: Boolean
|
||||
var enableTraceLogs: Boolean
|
||||
|
||||
private var sharedPref: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity)
|
||||
|
||||
init {
|
||||
@ -31,5 +41,41 @@ class QuickSettings(val activity: Activity) {
|
||||
resScale = sharedPref.getFloat("resScale", 1f)
|
||||
useVirtualController = sharedPref.getBoolean("useVirtualController", true)
|
||||
isGrid = sharedPref.getBoolean("isGrid", true)
|
||||
|
||||
enableDebugLogs = sharedPref.getBoolean("enableDebugLogs", false)
|
||||
enableStubLogs = sharedPref.getBoolean("enableStubLogs", false)
|
||||
enableInfoLogs = sharedPref.getBoolean("enableInfoLogs", true)
|
||||
enableWarningLogs = sharedPref.getBoolean("enableWarningLogs", true)
|
||||
enableErrorLogs = sharedPref.getBoolean("enableErrorLogs", true)
|
||||
enableGuestLogs = sharedPref.getBoolean("enableGuestLogs", true)
|
||||
enableAccessLogs = sharedPref.getBoolean("enableAccessLogs", false)
|
||||
enableTraceLogs = sharedPref.getBoolean("enableStubLogs", false)
|
||||
}
|
||||
|
||||
fun save(){
|
||||
val editor = sharedPref.edit()
|
||||
|
||||
editor.putBoolean("isHostMapped", isHostMapped)
|
||||
editor.putBoolean("useNce", useNce)
|
||||
editor.putBoolean("enableVsync", enableVsync)
|
||||
editor.putBoolean("enableDocked", enableDocked)
|
||||
editor.putBoolean("enablePtc", enablePtc)
|
||||
editor.putBoolean("ignoreMissingServices", ignoreMissingServices)
|
||||
editor.putBoolean("enableShaderCache", enableShaderCache)
|
||||
editor.putBoolean("enableTextureRecompression", enableTextureRecompression)
|
||||
editor.putFloat("resScale", resScale)
|
||||
editor.putBoolean("useVirtualController", useVirtualController)
|
||||
editor.putBoolean("isGrid", isGrid)
|
||||
|
||||
editor.putBoolean("enableDebugLogs", enableDebugLogs)
|
||||
editor.putBoolean("enableStubLogs", enableStubLogs)
|
||||
editor.putBoolean("enableInfoLogs", enableInfoLogs)
|
||||
editor.putBoolean("enableWarningLogs", enableWarningLogs)
|
||||
editor.putBoolean("enableErrorLogs", enableErrorLogs)
|
||||
editor.putBoolean("enableGuestLogs", enableGuestLogs)
|
||||
editor.putBoolean("enableAccessLogs", enableAccessLogs)
|
||||
editor.putBoolean("enableTraceLogs", enableTraceLogs)
|
||||
|
||||
editor.apply()
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,9 @@ import androidx.navigation.NavHostController
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.anggrayudi.storage.file.FileFullPath
|
||||
import com.anggrayudi.storage.file.getAbsolutePath
|
||||
import org.ryujinx.android.LogLevel
|
||||
import org.ryujinx.android.MainActivity
|
||||
import org.ryujinx.android.RyujinxNative
|
||||
|
||||
class SettingsViewModel(var navController: NavHostController, val activity: MainActivity) {
|
||||
private var previousCallback: ((requestCode: Int, folder: DocumentFile) -> Unit)?
|
||||
@ -42,6 +44,14 @@ class SettingsViewModel(var navController: NavHostController, val activity: Main
|
||||
resScale: MutableState<Float>,
|
||||
useVirtualController: MutableState<Boolean>,
|
||||
isGrid: MutableState<Boolean>,
|
||||
enableDebugLogs: MutableState<Boolean>,
|
||||
enableStubLogs: MutableState<Boolean>,
|
||||
enableInfoLogs: MutableState<Boolean>,
|
||||
enableWarningLogs: MutableState<Boolean>,
|
||||
enableErrorLogs: MutableState<Boolean>,
|
||||
enableGuestLogs: MutableState<Boolean>,
|
||||
enableAccessLogs: MutableState<Boolean>,
|
||||
enableTraceLogs: MutableState<Boolean>
|
||||
)
|
||||
{
|
||||
|
||||
@ -56,6 +66,15 @@ class SettingsViewModel(var navController: NavHostController, val activity: Main
|
||||
resScale.value = sharedPref.getFloat("resScale", 1f)
|
||||
useVirtualController.value = sharedPref.getBoolean("useVirtualController", true)
|
||||
isGrid.value = sharedPref.getBoolean("isGrid", true)
|
||||
|
||||
enableDebugLogs.value = sharedPref.getBoolean("enableDebugLogs", false)
|
||||
enableStubLogs.value = sharedPref.getBoolean("enableStubLogs", false)
|
||||
enableInfoLogs.value = sharedPref.getBoolean("enableInfoLogs", true)
|
||||
enableWarningLogs.value = sharedPref.getBoolean("enableWarningLogs", true)
|
||||
enableErrorLogs.value = sharedPref.getBoolean("enableErrorLogs", true)
|
||||
enableGuestLogs.value = sharedPref.getBoolean("enableGuestLogs", true)
|
||||
enableAccessLogs.value = sharedPref.getBoolean("enableAccessLogs", false)
|
||||
enableTraceLogs.value = sharedPref.getBoolean("enableStubLogs", false)
|
||||
}
|
||||
|
||||
fun save(
|
||||
@ -69,7 +88,15 @@ class SettingsViewModel(var navController: NavHostController, val activity: Main
|
||||
enableTextureRecompression: MutableState<Boolean>,
|
||||
resScale: MutableState<Float>,
|
||||
useVirtualController: MutableState<Boolean>,
|
||||
isGrid: MutableState<Boolean>
|
||||
isGrid: MutableState<Boolean>,
|
||||
enableDebugLogs: MutableState<Boolean>,
|
||||
enableStubLogs: MutableState<Boolean>,
|
||||
enableInfoLogs: MutableState<Boolean>,
|
||||
enableWarningLogs: MutableState<Boolean>,
|
||||
enableErrorLogs: MutableState<Boolean>,
|
||||
enableGuestLogs: MutableState<Boolean>,
|
||||
enableAccessLogs: MutableState<Boolean>,
|
||||
enableTraceLogs: MutableState<Boolean>
|
||||
){
|
||||
val editor = sharedPref.edit()
|
||||
|
||||
@ -85,8 +112,27 @@ class SettingsViewModel(var navController: NavHostController, val activity: Main
|
||||
editor.putBoolean("useVirtualController", useVirtualController.value)
|
||||
editor.putBoolean("isGrid", isGrid.value)
|
||||
|
||||
|
||||
editor.putBoolean("enableDebugLogs", enableDebugLogs.value)
|
||||
editor.putBoolean("enableStubLogs", enableStubLogs.value)
|
||||
editor.putBoolean("enableInfoLogs", enableInfoLogs.value)
|
||||
editor.putBoolean("enableWarningLogs", enableWarningLogs.value)
|
||||
editor.putBoolean("enableErrorLogs", enableErrorLogs.value)
|
||||
editor.putBoolean("enableGuestLogs", enableGuestLogs.value)
|
||||
editor.putBoolean("enableAccessLogs", enableAccessLogs.value)
|
||||
editor.putBoolean("enableTraceLogs", enableTraceLogs.value)
|
||||
|
||||
editor.apply()
|
||||
activity.storageHelper!!.onFolderSelected = previousCallback
|
||||
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Debug.ordinal, enableDebugLogs.value)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Info.ordinal, enableInfoLogs.value)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Stub.ordinal, enableStubLogs.value)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Warning.ordinal, enableWarningLogs.value)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Error.ordinal, enableErrorLogs.value)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.AccessLog.ordinal, enableAccessLogs.value)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Guest.ordinal, enableGuestLogs.value)
|
||||
RyujinxNative.instance.loggingSetEnabled(LogLevel.Trace.ordinal, enableTraceLogs.value)
|
||||
}
|
||||
|
||||
|
||||
|
@ -103,9 +103,16 @@ class SettingViews {
|
||||
val useVirtualController = remember {
|
||||
mutableStateOf(true)
|
||||
}
|
||||
val isGrid = remember {
|
||||
mutableStateOf(true)
|
||||
}
|
||||
val isGrid = remember { mutableStateOf(true) }
|
||||
|
||||
val enableDebugLogs = remember { mutableStateOf(true) }
|
||||
val enableStubLogs = remember { mutableStateOf(true) }
|
||||
val enableInfoLogs = remember { mutableStateOf(true) }
|
||||
val enableWarningLogs = remember { mutableStateOf(true) }
|
||||
val enableErrorLogs = remember { mutableStateOf(true) }
|
||||
val enableGuestLogs = remember { mutableStateOf(true) }
|
||||
val enableAccessLogs = remember { mutableStateOf(true) }
|
||||
val enableTraceLogs = remember { mutableStateOf(true) }
|
||||
|
||||
if (!loaded.value) {
|
||||
settingsViewModel.initializeState(
|
||||
@ -116,7 +123,15 @@ class SettingViews {
|
||||
enableTextureRecompression,
|
||||
resScale,
|
||||
useVirtualController,
|
||||
isGrid
|
||||
isGrid,
|
||||
enableDebugLogs,
|
||||
enableStubLogs,
|
||||
enableInfoLogs,
|
||||
enableWarningLogs,
|
||||
enableErrorLogs,
|
||||
enableGuestLogs,
|
||||
enableAccessLogs,
|
||||
enableTraceLogs
|
||||
)
|
||||
loaded.value = true
|
||||
}
|
||||
@ -139,7 +154,15 @@ class SettingViews {
|
||||
enableTextureRecompression,
|
||||
resScale,
|
||||
useVirtualController,
|
||||
isGrid
|
||||
isGrid,
|
||||
enableDebugLogs,
|
||||
enableStubLogs,
|
||||
enableInfoLogs,
|
||||
enableWarningLogs,
|
||||
enableErrorLogs,
|
||||
enableGuestLogs,
|
||||
enableAccessLogs,
|
||||
enableTraceLogs
|
||||
)
|
||||
settingsViewModel.navController.popBackStack()
|
||||
}) {
|
||||
@ -637,17 +660,139 @@ class SettingViews {
|
||||
}
|
||||
}
|
||||
ExpandableView(onCardArrowClick = { }, title = "Log") {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Button(onClick = {
|
||||
mainViewModel.logging.requestExport()
|
||||
}) {
|
||||
Text(text = "Send Logs")
|
||||
Column(modifier = Modifier.fillMaxWidth()) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = "Enable Debug Logs",
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
)
|
||||
Switch(checked = enableDebugLogs.value, onCheckedChange = {
|
||||
enableDebugLogs.value = !enableDebugLogs.value
|
||||
})
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = "Enable Stub Logs",
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
)
|
||||
Switch(checked = enableStubLogs.value, onCheckedChange = {
|
||||
enableStubLogs.value = !enableStubLogs.value
|
||||
})
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = "Enable Info Logs",
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
)
|
||||
Switch(checked = enableInfoLogs.value, onCheckedChange = {
|
||||
enableInfoLogs.value = !enableInfoLogs.value
|
||||
})
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = "Enable Warning Logs",
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
)
|
||||
Switch(checked = enableWarningLogs.value, onCheckedChange = {
|
||||
enableWarningLogs.value = !enableWarningLogs.value
|
||||
})
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = "Enable Error Logs",
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
)
|
||||
Switch(checked = enableErrorLogs.value, onCheckedChange = {
|
||||
enableErrorLogs.value = !enableErrorLogs.value
|
||||
})
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = "Enable Guest Logs",
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
)
|
||||
Switch(checked = enableGuestLogs.value, onCheckedChange = {
|
||||
enableGuestLogs.value = !enableGuestLogs.value
|
||||
})
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = "Enable Access Logs",
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
)
|
||||
Switch(checked = enableAccessLogs.value, onCheckedChange = {
|
||||
enableAccessLogs.value = !enableAccessLogs.value
|
||||
})
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = "Enable Trace Logs",
|
||||
modifier = Modifier.align(Alignment.CenterVertically)
|
||||
)
|
||||
Switch(checked = enableTraceLogs.value, onCheckedChange = {
|
||||
enableTraceLogs.value = !enableTraceLogs.value
|
||||
})
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Button(onClick = {
|
||||
mainViewModel.logging.requestExport()
|
||||
}) {
|
||||
Text(text = "Send Logs")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -661,7 +806,15 @@ class SettingViews {
|
||||
enableTextureRecompression,
|
||||
resScale,
|
||||
useVirtualController,
|
||||
isGrid
|
||||
isGrid,
|
||||
enableDebugLogs,
|
||||
enableStubLogs,
|
||||
enableInfoLogs,
|
||||
enableWarningLogs,
|
||||
enableErrorLogs,
|
||||
enableGuestLogs,
|
||||
enableAccessLogs,
|
||||
enableTraceLogs
|
||||
)
|
||||
settingsViewModel.navController.popBackStack()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user