From 31982c54bf44addf1e569fd1b68a9e3f738272b7 Mon Sep 17 00:00:00 2001 From: Vasily Date: Sun, 1 Dec 2019 17:06:40 +0100 Subject: [PATCH] Add m_customTickRateMs to new settings API The value is verified before saving and loading. It is the responsibility of the function calling the settings API to verify data. --- src/overlaycontroller.cpp | 68 ++++++++++-------------------- src/overlaycontroller.h | 1 - src/settings/settings.h | 1 + src/settings/settings_controller.h | 4 ++ 4 files changed, 27 insertions(+), 47 deletions(-) diff --git a/src/overlaycontroller.cpp b/src/overlaycontroller.cpp index 9ff5464..5f4c253 100644 --- a/src/overlaycontroller.cpp +++ b/src/overlaycontroller.cpp @@ -278,28 +278,6 @@ OverlayController::OverlayController( bool desktopMode, return obj; } ); - // Keep the settings for vsyncDisabled and crash recovery here in main - // overlaycontroller - appSettings()->beginGroup( "applicationSettings" ); - auto value = appSettings()->value( "customTickRateMs", m_customTickRateMs ); - if ( value.isValid() && !value.isNull() ) - { - // keep sane tickrate (between 1~k_maxCustomTickRate) - if ( value.toInt() < 1 ) - { - m_customTickRateMs = 1; - } - else if ( value.toInt() > k_maxCustomTickRate ) - { - m_customTickRateMs = k_maxCustomTickRate; - } - else - { - m_customTickRateMs = value.toInt(); - } - } - appSettings()->endGroup(); - // Grab local version number QStringList verNumericalString = QString( application_strings::applicationVersionString ).split( "-" ); @@ -835,38 +813,36 @@ void OverlayController::setPreviousShutdownSafe( bool value ) settings::BoolSetting::APPLICATION_previousShutdownSafe, value ); } +int verifyCustomTickRate( const int tickRate ) +{ + if ( tickRate < 1 ) + { + return 1; + } + else if ( tickRate > k_maxCustomTickRate ) + { + return k_maxCustomTickRate; + } + + return tickRate; +} + int OverlayController::customTickRateMs() const { - return m_customTickRateMs; + const auto tickRate = settings::getSetting( + settings::IntSetting::APPLICATION_customTickRateMs ); + return verifyCustomTickRate( tickRate ); } void OverlayController::setCustomTickRateMs( int value, bool notify ) { - if ( m_customTickRateMs == value ) - { - return; - } - // keep m_customTickRateMs sane (between 1~k_maxCustomTickRate) - if ( value < 1 ) - { - m_customTickRateMs = 1; - } - else if ( value > k_maxCustomTickRate ) - { - m_customTickRateMs = k_maxCustomTickRate; - } - else - { - m_customTickRateMs = value; - } + const auto verifiedTickRate = verifyCustomTickRate( value ); - appSettings()->beginGroup( "applicationSettings" ); - appSettings()->setValue( "customTickRateMs", m_customTickRateMs ); - appSettings()->endGroup(); - appSettings()->sync(); + settings::setSetting( settings::IntSetting::APPLICATION_customTickRateMs, + verifiedTickRate ); if ( notify ) { - emit customTickRateMsChanged( m_customTickRateMs ); + emit customTickRateMsChanged( verifiedTickRate ); } } @@ -879,7 +855,7 @@ void OverlayController::OnTimeoutPumpEvents() if ( vsyncDisabled() ) { // check if it's time for a custom tick rate tick - if ( m_customTickRateCounter > m_customTickRateMs ) + if ( m_customTickRateCounter > customTickRateMs() ) { mainEventLoop(); m_customTickRateCounter = 0; diff --git a/src/overlaycontroller.h b/src/overlaycontroller.h index 37b6ee4..a775223 100644 --- a/src/overlaycontroller.h +++ b/src/overlaycontroller.h @@ -122,7 +122,6 @@ private: bool m_desktopMode; bool m_noSound; bool m_newVersionDetected = false; - int m_customTickRateMs = 20; int m_remoteVersionMajor = -1; int m_remoteVersionMinor = -1; int m_remoteVersionPatch = -1; diff --git a/src/settings/settings.h b/src/settings/settings.h index 695db34..cfa2107 100644 --- a/src/settings/settings.h +++ b/src/settings/settings.h @@ -82,6 +82,7 @@ enum class IntSetting PLAYSPACE_turnComfortFactor, APPLICATION_debugState, + APPLICATION_customTickRateMs, UTILITY_alarmHour, UTILITY_alarmMinute, diff --git a/src/settings/settings_controller.h b/src/settings/settings_controller.h index c5236d0..8d32fb7 100644 --- a/src/settings/settings_controller.h +++ b/src/settings/settings_controller.h @@ -380,6 +380,10 @@ private: SettingCategory::Application, QtInfo{ "debugState" }, 0 }, + IntSettingValue{ IntSetting::APPLICATION_customTickRateMs, + SettingCategory::Application, + QtInfo{ "customTickRateMs" }, + 20 }, IntSettingValue{ IntSetting::UTILITY_alarmHour, SettingCategory::Utility,