Rename SettingsValues to NativeSettings

The previous name was chosen as an afterthought and didn't clearly indicate what the purpose of the class is. We needed a separate, simple class without delegates members (like PreferenceSettings), so that its fields can be easily accessed via JNI to get settings values from native code.
This commit is contained in:
lynxnb 2022-07-12 12:22:10 +02:00 committed by ◱ Mark
parent f734c4d145
commit 5aa2a4cd1c
4 changed files with 13 additions and 12 deletions

View File

@ -231,13 +231,13 @@ extern "C" JNIEXPORT void JNICALL Java_emu_skyline_EmulationActivity_setTouchSta
env->ReleaseIntArrayElements(pointsJni, reinterpret_cast<jint *>(points.data()), JNI_ABORT); env->ReleaseIntArrayElements(pointsJni, reinterpret_cast<jint *>(points.data()), JNI_ABORT);
} }
extern "C" JNIEXPORT void JNICALL Java_emu_skyline_utils_SettingsValues_updateNative(JNIEnv *env, jobject) { extern "C" JNIEXPORT void JNICALL Java_emu_skyline_utils_NativeSettings_updateNative(JNIEnv *env, jobject) {
auto settings{SettingsWeak.lock()}; auto settings{SettingsWeak.lock()};
if (!settings) if (!settings)
return; // We don't mind if we miss settings updates while settings haven't been initialized return; // We don't mind if we miss settings updates while settings haven't been initialized
settings->Update(); settings->Update();
} }
extern "C" JNIEXPORT void JNICALL Java_emu_skyline_utils_SettingsValues_00024Companion_setLogLevel(JNIEnv *, jobject, jint logLevel) { extern "C" JNIEXPORT void JNICALL Java_emu_skyline_utils_NativeSettings_00024Companion_setLogLevel(JNIEnv *, jobject, jint logLevel) {
skyline::Logger::configLevel = static_cast<skyline::Logger::LogLevel>(logLevel); skyline::Logger::configLevel = static_cast<skyline::Logger::LogLevel>(logLevel);
} }

View File

@ -30,7 +30,7 @@ import emu.skyline.input.*
import emu.skyline.loader.getRomFormat import emu.skyline.loader.getRomFormat
import emu.skyline.utils.PreferenceSettings import emu.skyline.utils.PreferenceSettings
import emu.skyline.utils.ByteBufferSerializable import emu.skyline.utils.ByteBufferSerializable
import emu.skyline.utils.SettingsValues import emu.skyline.utils.NativeSettings
import java.nio.ByteBuffer import java.nio.ByteBuffer
import java.nio.ByteOrder import java.nio.ByteOrder
import java.util.concurrent.FutureTask import java.util.concurrent.FutureTask
@ -85,13 +85,13 @@ class EmulationActivity : AppCompatActivity(), SurfaceHolder.Callback, View.OnTo
* @param romUri The URI of the ROM as a string, used to print out in the logs * @param romUri The URI of the ROM as a string, used to print out in the logs
* @param romType The type of the ROM as an enum value * @param romType The type of the ROM as an enum value
* @param romFd The file descriptor of the ROM object * @param romFd The file descriptor of the ROM object
* @param settingsValues The SettingsValues instance * @param nativeSettings The settings to be used by libskyline
* @param publicAppFilesPath The full path to the public app files directory * @param publicAppFilesPath The full path to the public app files directory
* @param privateAppFilesPath The full path to the private app files directory * @param privateAppFilesPath The full path to the private app files directory
* @param nativeLibraryPath The full path to the app native library directory * @param nativeLibraryPath The full path to the app native library directory
* @param assetManager The asset manager used for accessing app assets * @param assetManager The asset manager used for accessing app assets
*/ */
private external fun executeApplication(romUri : String, romType : Int, romFd : Int, settingsValues : SettingsValues, publicAppFilesPath : String, privateAppFilesPath : String, nativeLibraryPath : String, assetManager : AssetManager) private external fun executeApplication(romUri : String, romType : Int, romFd : Int, nativeSettings : NativeSettings, publicAppFilesPath : String, privateAppFilesPath : String, nativeLibraryPath : String, assetManager : AssetManager)
/** /**
* @param join If the function should only return after all the threads join or immediately * @param join If the function should only return after all the threads join or immediately
@ -249,7 +249,7 @@ class EmulationActivity : AppCompatActivity(), SurfaceHolder.Callback, View.OnTo
val romFd = contentResolver.openFileDescriptor(rom, "r")!! val romFd = contentResolver.openFileDescriptor(rom, "r")!!
emulationThread = Thread { emulationThread = Thread {
executeApplication(rom.toString(), romType, romFd.detachFd(), SettingsValues(preferenceSettings), applicationContext.getPublicFilesDir().canonicalPath + "/", applicationContext.filesDir.canonicalPath + "/", applicationInfo.nativeLibraryDir + "/", assets) executeApplication(rom.toString(), romType, romFd.detachFd(), NativeSettings(preferenceSettings), applicationContext.getPublicFilesDir().canonicalPath + "/", applicationContext.filesDir.canonicalPath + "/", applicationInfo.nativeLibraryDir + "/", assets)
returnFromEmulation() returnFromEmulation()
} }

View File

@ -8,12 +8,12 @@ package emu.skyline.preference
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import androidx.preference.R import androidx.preference.R
import emu.skyline.utils.SettingsValues import emu.skyline.utils.NativeSettings
class LogLevelPreference @JvmOverloads constructor(context : Context, attrs : AttributeSet? = null, defStyleAttr : Int = R.attr.dialogPreferenceStyle) : IntegerListPreference(context, attrs, defStyleAttr) { class LogLevelPreference @JvmOverloads constructor(context : Context, attrs : AttributeSet? = null, defStyleAttr : Int = R.attr.dialogPreferenceStyle) : IntegerListPreference(context, attrs, defStyleAttr) {
init { init {
setOnPreferenceChangeListener { _, newValue -> setOnPreferenceChangeListener { _, newValue ->
SettingsValues.setLogLevel(newValue as Int) NativeSettings.setLogLevel(newValue as Int)
true true
} }
} }

View File

@ -5,9 +5,10 @@
package emu.skyline.utils package emu.skyline.utils
import java.io.Serializable /**
* The settings that will be passed to libskyline when running and executable
class SettingsValues(pref: PreferenceSettings) : Serializable { */
class NativeSettings(pref: PreferenceSettings) {
var isDocked : Boolean = pref.isDocked var isDocked : Boolean = pref.isDocked
var usernameValue : String = pref.usernameValue var usernameValue : String = pref.usernameValue
var systemLanguage : Int = pref.systemLanguage var systemLanguage : Int = pref.systemLanguage
@ -21,7 +22,7 @@ class SettingsValues(pref: PreferenceSettings) : Serializable {
companion object { companion object {
/** /**
* Setter for native log level * Sets libskyline logger level to the given one
*/ */
external fun setLogLevel(logLevel : Int) external fun setLogLevel(logLevel : Int)
} }