diff --git a/src/xenia/kernel/xam/ui/create_profile_ui.cc b/src/xenia/kernel/xam/ui/create_profile_ui.cc index ec641ae35..ac7c35897 100644 --- a/src/xenia/kernel/xam/ui/create_profile_ui.cc +++ b/src/xenia/kernel/xam/ui/create_profile_ui.cc @@ -39,15 +39,14 @@ void CreateProfileUI::OnDraw(ImGuiIO& io) { } ImGui::TextUnformatted("Gamertag:"); - ImGui::InputText("##Gamertag", gamertag_, sizeof(gamertag_)); + if (ImGui::InputText("##Gamertag", gamertag_, sizeof(gamertag_))) { + valid_gamertag_ = profile_manager->IsGamertagValid(std::string(gamertag_)); + } - const std::string gamertag_string = std::string(gamertag_); - bool valid = profile_manager->IsGamertagValid(gamertag_string); - - ImGui::BeginDisabled(!valid); + ImGui::BeginDisabled(!valid_gamertag_); if (ImGui::Button("Create")) { bool autologin = (profile_manager->GetAccountCount() == 0); - if (profile_manager->CreateProfile(gamertag_string, autologin, + if (profile_manager->CreateProfile(std::string(gamertag_), autologin, migration_) && migration_) { emulator_->DataMigration(0xB13EBABEBABEBABE); diff --git a/src/xenia/kernel/xam/ui/create_profile_ui.h b/src/xenia/kernel/xam/ui/create_profile_ui.h index 84236eeef..d75aa3007 100644 --- a/src/xenia/kernel/xam/ui/create_profile_ui.h +++ b/src/xenia/kernel/xam/ui/create_profile_ui.h @@ -35,6 +35,7 @@ class CreateProfileUI final : public XamDialog { bool has_opened_ = false; bool migration_ = false; char gamertag_[16] = ""; + bool valid_gamertag_ = false; Emulator* emulator_; }; diff --git a/src/xenia/kernel/xam/ui/signin_ui.cc b/src/xenia/kernel/xam/ui/signin_ui.cc index 90aa0f620..9a912074f 100644 --- a/src/xenia/kernel/xam/ui/signin_ui.cc +++ b/src/xenia/kernel/xam/ui/signin_ui.cc @@ -148,14 +148,14 @@ void SigninUI::OnDraw(ImGuiIO& io) { } ImGui::TextUnformatted("Gamertag:"); - ImGui::InputText("##Gamertag", gamertag_, sizeof(gamertag_)); + if (ImGui::InputText("##Gamertag", gamertag_, sizeof(gamertag_))) { + valid_gamertag_ = + profile_manager_->IsGamertagValid(std::string(gamertag_)); + } - const std::string gamertag_string = gamertag_; - bool valid = profile_manager_->IsGamertagValid(gamertag_string); - - ImGui::BeginDisabled(!valid); + ImGui::BeginDisabled(!valid_gamertag_); if (ImGui::Button("Create")) { - profile_manager_->CreateProfile(gamertag_string, false); + profile_manager_->CreateProfile(std::string(gamertag_), false); std::fill(std::begin(gamertag_), std::end(gamertag_), '\0'); ImGui::CloseCurrentPopup(); creating_profile_ = false; diff --git a/src/xenia/kernel/xam/ui/signin_ui.h b/src/xenia/kernel/xam/ui/signin_ui.h index 01864a850..a4915830f 100644 --- a/src/xenia/kernel/xam/ui/signin_ui.h +++ b/src/xenia/kernel/xam/ui/signin_ui.h @@ -45,6 +45,7 @@ class SigninUI final : public XamDialog { bool creating_profile_ = false; char gamertag_[16] = ""; + bool valid_gamertag_ = false; }; } // namespace ui