From 406d6f28c0ee0e6d6187a0d633f3db07fab57841 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Sat, 13 Feb 2021 07:54:05 -0500 Subject: force instance selection when the current instance cannot be used the problem is that an empty instance name means the portable instance, but MO clears the name when it needs instance selection, which can create a loop if the portable instance can't be used --- src/main.cpp | 9 +++++++-- src/moapplication.cpp | 2 +- src/shared/util.h | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main.cpp b/src/main.cpp index 60d99817..84db88cb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -80,7 +80,8 @@ int run(int argc, char *argv[]) // stuff that's done only once, even if MO restarts in the loop below app.firstTimeSetup(multiProcess); - // force the "Select instance" dialog on startup (only for first loop) + // force the "Select instance" dialog on startup, only for first loop or when + // the current instance cannot be used bool pick = cl.pick(); // MO runs in a loop because it can be restarted in several ways, such as @@ -105,13 +106,17 @@ int run(int argc, char *argv[]) const auto r = app.setup(multiProcess, pick); pick = false; - if (r == RestartExitCode) { + if (r == RestartExitCode || r == ReselectExitCode) { // resets things when MO is "restarted" app.resetForRestart(); // don't reprocess command line cl.clear(); + if (r == ReselectExitCode) { + pick = true; + } + continue; } else if (r != 0) { // something failed, quit diff --git a/src/moapplication.cpp b/src/moapplication.cpp index 11053e66..4a6585dd 100644 --- a/src/moapplication.cpp +++ b/src/moapplication.cpp @@ -492,7 +492,7 @@ std::optional MOApplication::setupInstanceLoop( continue; } else if (setupResult == SetupInstanceResults::SelectAnother) { InstanceManager::singleton().clearCurrentInstance(); - return RestartExitCode; + return ReselectExitCode; } else { return 1; } diff --git a/src/shared/util.h b/src/shared/util.h index 1688a931..d8fdb3a3 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -74,6 +74,7 @@ enum class Exit }; const int RestartExitCode = INT_MAX; +const int ReselectExitCode = INT_MAX - 1; using ExitFlags = QFlags; Q_DECLARE_OPERATORS_FOR_FLAGS(ExitFlags); -- cgit v1.3.1