Merge pull request #13605 from JosJuice/android-cinit-native

Android: Don't call NativeLibrary methods during class init
This commit is contained in:
JMC47
2025-05-01 21:31:21 -04:00
committed by GitHub

View File

@ -1961,7 +1961,7 @@ class SettingsFragmentPresenter(
IntSetting.LOGGER_VERBOSITY,
R.string.log_verbosity,
0,
logVerbosityEntries, logVerbosityValues
getLogVerbosityEntries(), getLogVerbosityValues()
)
)
sl.add(
@ -1993,7 +1993,7 @@ class SettingsFragmentPresenter(
) { SettingsAdapter.clearLog() })
sl.add(HeaderSetting(context, R.string.log_types, 0))
for (logType in LOG_TYPE_NAMES) {
for (logType in NativeLibrary.GetLogTypeNames()) {
sl.add(LogSwitchSetting(logType.first, logType.second, ""))
}
}
@ -2543,7 +2543,7 @@ class SettingsFragmentPresenter(
fun setAllLogTypes(value: Boolean) {
val settings = fragmentView.settings
for (logType in LOG_TYPE_NAMES) {
for (logType in NativeLibrary.GetLogTypeNames()) {
AdHocBooleanSetting(
Settings.FILE_LOGGER,
Settings.SECTION_LOGGER_LOGS,
@ -2604,26 +2604,29 @@ class SettingsFragmentPresenter(
}
companion object {
private val LOG_TYPE_NAMES = NativeLibrary.GetLogTypeNames()
const val ARG_CONTROLLER_TYPE = "controller_type"
const val ARG_SERIALPORT1_TYPE = "serialport1_type"
// Value obtained from LogLevel in Common/Logging/Log.h
private val logVerbosityEntries: Int
get() =
if (NativeLibrary.GetMaxLogLevel() == 5) {
R.array.logVerbosityEntriesMaxLevelDebug
} else {
R.array.logVerbosityEntriesMaxLevelInfo
}
private fun getLogVerbosityEntries(): Int {
// GetMaxLogLevel is effectively a constant, but we can't call it before loading
// the native library
return if (NativeLibrary.GetMaxLogLevel() == 5) {
R.array.logVerbosityEntriesMaxLevelDebug
} else {
R.array.logVerbosityEntriesMaxLevelInfo
}
}
// Value obtained from LogLevel in Common/Logging/Log.h
private val logVerbosityValues: Int
get() =
if (NativeLibrary.GetMaxLogLevel() == 5) {
R.array.logVerbosityValuesMaxLevelDebug
} else {
R.array.logVerbosityValuesMaxLevelInfo
}
private fun getLogVerbosityValues(): Int {
// GetMaxLogLevel is effectively a constant, but we can't call it before loading
// the native library
return if (NativeLibrary.GetMaxLogLevel() == 5) {
R.array.logVerbosityValuesMaxLevelDebug
} else {
R.array.logVerbosityValuesMaxLevelInfo
}
}
}
}