summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nxmaccessmanager.cpp6
-rw-r--r--src/settings.cpp34
-rw-r--r--src/settings.h2
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;