aboutsummaryrefslogtreecommitdiff
path: root/launcher/LaunchController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/LaunchController.cpp')
-rw-r--r--launcher/LaunchController.cpp31
1 files changed, 20 insertions, 11 deletions
diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp
index a865caab..1c1e41e6 100644
--- a/launcher/LaunchController.cpp
+++ b/launcher/LaunchController.cpp
@@ -34,9 +34,11 @@ void LaunchController::executeTask()
login();
}
-// FIXME: minecraft specific
-void LaunchController::login() {
- JavaCommon::checkJVMArgs(m_instance->settings()->get("JvmArgs").toString(), m_parentWidget);
+void LaunchController::decideAccount()
+{
+ if(m_accountToUse) {
+ return;
+ }
// Find an account to use.
std::shared_ptr<AccountList> accounts = LAUNCHER->accounts();
@@ -60,8 +62,8 @@ void LaunchController::login() {
}
}
- MinecraftAccountPtr account = accounts->activeAccount();
- if (account.get() == nullptr)
+ m_accountToUse = accounts->activeAccount();
+ if (m_accountToUse == nullptr)
{
// If no default account is set, ask the user which one to use.
ProfileSelectDialog selectDialog(
@@ -73,16 +75,23 @@ void LaunchController::login() {
selectDialog.exec();
// Launch the instance with the selected account.
- account = selectDialog.selectedAccount();
+ m_accountToUse = selectDialog.selectedAccount();
// If the user said to use the account as default, do that.
- if (selectDialog.useAsGlobalDefault() && account.get() != nullptr) {
- accounts->setActiveAccount(account->profileId());
+ if (selectDialog.useAsGlobalDefault() && m_accountToUse) {
+ accounts->setActiveAccount(m_accountToUse->profileId());
}
}
+}
+
+
+void LaunchController::login() {
+ JavaCommon::checkJVMArgs(m_instance->settings()->get("JvmArgs").toString(), m_parentWidget);
+
+ decideAccount();
// if no account is selected, we bail
- if (!account.get())
+ if (!m_accountToUse)
{
emitFailed(tr("No account selected for launch."));
return;
@@ -102,10 +111,10 @@ void LaunchController::login() {
m_session->wants_online = m_online;
std::shared_ptr<AccountTask> task;
if(!password.isNull()) {
- task = account->login(m_session, password);
+ task = m_accountToUse->login(m_session, password);
}
else {
- task = account->refresh(m_session);
+ task = m_accountToUse->refresh(m_session);
}
if (task)
{