From f734c4d1450c343fa17a4ef9e6b72101d1f9f375 Mon Sep 17 00:00:00 2001 From: lynxnb Date: Fri, 18 Feb 2022 13:20:56 +0100 Subject: [PATCH] Make log level setting changes immediately active --- app/src/main/cpp/emu_jni.cpp | 4 ++++ .../skyline/preference/LogLevelPreference.kt | 20 +++++++++++++++++++ .../java/emu/skyline/utils/SettingsValues.kt | 7 +++++++ app/src/main/res/xml/preferences.xml | 2 +- 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/emu/skyline/preference/LogLevelPreference.kt diff --git a/app/src/main/cpp/emu_jni.cpp b/app/src/main/cpp/emu_jni.cpp index fc49925e..d2d56486 100644 --- a/app/src/main/cpp/emu_jni.cpp +++ b/app/src/main/cpp/emu_jni.cpp @@ -237,3 +237,7 @@ extern "C" JNIEXPORT void JNICALL Java_emu_skyline_utils_SettingsValues_updateNa return; // We don't mind if we miss settings updates while settings haven't been initialized settings->Update(); } + +extern "C" JNIEXPORT void JNICALL Java_emu_skyline_utils_SettingsValues_00024Companion_setLogLevel(JNIEnv *, jobject, jint logLevel) { + skyline::Logger::configLevel = static_cast(logLevel); +} diff --git a/app/src/main/java/emu/skyline/preference/LogLevelPreference.kt b/app/src/main/java/emu/skyline/preference/LogLevelPreference.kt new file mode 100644 index 00000000..98f2ac02 --- /dev/null +++ b/app/src/main/java/emu/skyline/preference/LogLevelPreference.kt @@ -0,0 +1,20 @@ +/* + * SPDX-License-Identifier: MPL-2.0 + * Copyright © 2022 Skyline Team and Contributors (https://github.com/skyline-emu/) + */ + +package emu.skyline.preference + +import android.content.Context +import android.util.AttributeSet +import androidx.preference.R +import emu.skyline.utils.SettingsValues + +class LogLevelPreference @JvmOverloads constructor(context : Context, attrs : AttributeSet? = null, defStyleAttr : Int = R.attr.dialogPreferenceStyle) : IntegerListPreference(context, attrs, defStyleAttr) { + init { + setOnPreferenceChangeListener { _, newValue -> + SettingsValues.setLogLevel(newValue as Int) + true + } + } +} diff --git a/app/src/main/java/emu/skyline/utils/SettingsValues.kt b/app/src/main/java/emu/skyline/utils/SettingsValues.kt index d348c021..d9b2691a 100644 --- a/app/src/main/java/emu/skyline/utils/SettingsValues.kt +++ b/app/src/main/java/emu/skyline/utils/SettingsValues.kt @@ -18,4 +18,11 @@ class SettingsValues(pref: PreferenceSettings) : Serializable { * Updates settings in libskyline during emulation */ external fun updateNative() + + companion object { + /** + * Setter for native log level + */ + external fun setLogLevel(logLevel : Int) + } } diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 8bfada4f..c24a506a 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -34,7 +34,7 @@ android:summaryOn="@string/perf_stats_desc_on" app:key="perf_stats" app:title="@string/perf_stats" /> -