diff options
| -rw-r--r-- | src/nxmaccessmanager.cpp | 6 | ||||
| -rw-r--r-- | src/settings.cpp | 34 | ||||
| -rw-r--r-- | src/settings.h | 2 |
3 files changed, 40 insertions, 2 deletions
diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp index 0064f888..2fe676ba 100644 --- a/src/nxmaccessmanager.cpp +++ b/src/nxmaccessmanager.cpp @@ -611,17 +611,19 @@ void NexusKeyValidator::start(const QString& key, Behaviour b) m_key = key; + const auto timeouts = Settings::instance().nexus().validationTimeouts(); + switch (b) { case OneShot: { - createAttempts({10s}); + createAttempts({timeouts[0]}); break; } case Retry: { - createAttempts({10s, 15s, 20s}); + createAttempts(timeouts); break; } } diff --git a/src/settings.cpp b/src/settings.cpp index b1385c05..534e67c8 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1868,6 +1868,40 @@ void NexusSettings::registerAsNXMHandler(bool force) } } +std::vector<std::chrono::seconds> NexusSettings::validationTimeouts() const +{ + using namespace std::chrono_literals; + + const auto s = get<QString>( + m_Settings, "Settings", "validation_timeouts", ""); + + const auto numbers = s.split(" "); + std::vector<std::chrono::seconds> v; + + for (auto ns : numbers) + { + ns = ns.trimmed(); + if (ns.isEmpty()) + continue; + + bool ok = false; + const auto n = ns.toInt(&ok); + + if (!ok || n < 0 || n > 100) + { + log::error("bad validation_timeouts number '{}'", ns); + continue; + } + + v.push_back(std::chrono::seconds(n)); + } + + if (v.empty()) + v = {10s, 15s, 20s}; + + return v; +} + SteamSettings::SteamSettings(Settings& parent, QSettings& settings) : m_Parent(parent), m_Settings(settings) diff --git a/src/settings.h b/src/settings.h index 9d788664..636719bb 100644 --- a/src/settings.h +++ b/src/settings.h @@ -521,6 +521,8 @@ public: // void registerAsNXMHandler(bool force); + std::vector<std::chrono::seconds> validationTimeouts() const; + private: Settings& m_Parent; QSettings& m_Settings; |
