summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/uuid.h7
-rw-r--r--src/core/frontend/applets/profile_select.cpp3
-rw-r--r--src/core/hle/service/acc/acc.cpp3
-rw-r--r--src/core/hle/service/acc/profile_manager.cpp9
-rw-r--r--src/core/hle/service/am/applets/applet_profile_select.cpp2
5 files changed, 16 insertions, 8 deletions
diff --git a/src/common/uuid.h b/src/common/uuid.h
index 2353179d8..8ea01f8da 100644
--- a/src/common/uuid.h
+++ b/src/common/uuid.h
@@ -58,6 +58,13 @@ struct UUID {
58 uuid = INVALID_UUID; 58 uuid = INVALID_UUID;
59 } 59 }
60 60
61 [[nodiscard]] constexpr bool IsInvalid() const {
62 return uuid == INVALID_UUID;
63 }
64 [[nodiscard]] constexpr bool IsValid() const {
65 return !IsInvalid();
66 }
67
61 // TODO(ogniK): Properly generate a Nintendo ID 68 // TODO(ogniK): Properly generate a Nintendo ID
62 [[nodiscard]] constexpr u64 GetNintendoID() const { 69 [[nodiscard]] constexpr u64 GetNintendoID() const {
63 return uuid[0]; 70 return uuid[0];
diff --git a/src/core/frontend/applets/profile_select.cpp b/src/core/frontend/applets/profile_select.cpp
index 4c58c310f..3e4f90be2 100644
--- a/src/core/frontend/applets/profile_select.cpp
+++ b/src/core/frontend/applets/profile_select.cpp
@@ -13,7 +13,8 @@ ProfileSelectApplet::~ProfileSelectApplet() = default;
13void DefaultProfileSelectApplet::SelectProfile( 13void DefaultProfileSelectApplet::SelectProfile(
14 std::function<void(std::optional<Common::UUID>)> callback) const { 14 std::function<void(std::optional<Common::UUID>)> callback) const {
15 Service::Account::ProfileManager manager; 15 Service::Account::ProfileManager manager;
16 callback(manager.GetUser(Settings::values.current_user.GetValue()).value_or(Common::UUID{})); 16 callback(manager.GetUser(Settings::values.current_user.GetValue())
17 .value_or(Common::UUID{Common::INVALID_UUID}));
17 LOG_INFO(Service_ACC, "called, selecting current user instead of prompting..."); 18 LOG_INFO(Service_ACC, "called, selecting current user instead of prompting...");
18} 19}
19 20
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp
index 6d9ec0a8a..689b36056 100644
--- a/src/core/hle/service/acc/acc.cpp
+++ b/src/core/hle/service/acc/acc.cpp
@@ -929,8 +929,7 @@ void Module::Interface::TrySelectUserWithoutInteraction(Kernel::HLERequestContex
929 } 929 }
930 930
931 const auto user_list = profile_manager->GetAllUsers(); 931 const auto user_list = profile_manager->GetAllUsers();
932 if (std::all_of(user_list.begin(), user_list.end(), 932 if (std::ranges::all_of(user_list, [](const auto& user) { return user.IsInvalid(); })) {
933 [](const auto& user) { return user.uuid == Common::INVALID_UUID; })) {
934 rb.Push(ResultUnknown); // TODO(ogniK): Find the correct error code 933 rb.Push(ResultUnknown); // TODO(ogniK): Find the correct error code
935 rb.PushRaw<u128>(Common::INVALID_UUID); 934 rb.PushRaw<u128>(Common::INVALID_UUID);
936 return; 935 return;
diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp
index 24a1c9157..568303ced 100644
--- a/src/core/hle/service/acc/profile_manager.cpp
+++ b/src/core/hle/service/acc/profile_manager.cpp
@@ -208,9 +208,10 @@ bool ProfileManager::UserExists(UUID uuid) const {
208} 208}
209 209
210bool ProfileManager::UserExistsIndex(std::size_t index) const { 210bool ProfileManager::UserExistsIndex(std::size_t index) const {
211 if (index >= MAX_USERS) 211 if (index >= MAX_USERS) {
212 return false; 212 return false;
213 return profiles[index].user_uuid.uuid != Common::INVALID_UUID; 213 }
214 return profiles[index].user_uuid.IsValid();
214} 215}
215 216
216/// Opens a specific user 217/// Opens a specific user
@@ -304,7 +305,7 @@ bool ProfileManager::RemoveUser(UUID uuid) {
304 305
305bool ProfileManager::SetProfileBase(UUID uuid, const ProfileBase& profile_new) { 306bool ProfileManager::SetProfileBase(UUID uuid, const ProfileBase& profile_new) {
306 const auto index = GetUserIndex(uuid); 307 const auto index = GetUserIndex(uuid);
307 if (!index || profile_new.user_uuid == UUID(Common::INVALID_UUID)) { 308 if (!index || profile_new.user_uuid.IsInvalid()) {
308 return false; 309 return false;
309 } 310 }
310 311
@@ -346,7 +347,7 @@ void ProfileManager::ParseUserSaveFile() {
346 } 347 }
347 348
348 for (const auto& user : data.users) { 349 for (const auto& user : data.users) {
349 if (user.uuid == UUID(Common::INVALID_UUID)) { 350 if (user.uuid.IsInvalid()) {
350 continue; 351 continue;
351 } 352 }
352 353
diff --git a/src/core/hle/service/am/applets/applet_profile_select.cpp b/src/core/hle/service/am/applets/applet_profile_select.cpp
index bdc21778e..a6e891944 100644
--- a/src/core/hle/service/am/applets/applet_profile_select.cpp
+++ b/src/core/hle/service/am/applets/applet_profile_select.cpp
@@ -60,7 +60,7 @@ void ProfileSelect::Execute() {
60void ProfileSelect::SelectionComplete(std::optional<Common::UUID> uuid) { 60void ProfileSelect::SelectionComplete(std::optional<Common::UUID> uuid) {
61 UserSelectionOutput output{}; 61 UserSelectionOutput output{};
62 62
63 if (uuid.has_value() && uuid->uuid != Common::INVALID_UUID) { 63 if (uuid.has_value() && uuid->IsValid()) {
64 output.result = 0; 64 output.result = 0;
65 output.uuid_selected = uuid->uuid; 65 output.uuid_selected = uuid->uuid;
66 } else { 66 } else {