diff --git a/src/xenia/kernel/xam/user_profile.cc b/src/xenia/kernel/xam/user_profile.cc index 6a51792ff..b4ec797dd 100644 --- a/src/xenia/kernel/xam/user_profile.cc +++ b/src/xenia/kernel/xam/user_profile.cc @@ -294,7 +294,7 @@ util::GpdFile* UserProfile::SetTitleSpaData(const util::SpaFile& spa_data) { } util::GpdFile* UserProfile::GetTitleGpd(uint32_t title_id) { - if (!title_id) { + if (title_id == -1) { return curr_gpd_; } @@ -306,16 +306,25 @@ util::GpdFile* UserProfile::GetTitleGpd(uint32_t title_id) { return &(*gpd).second; } -bool UserProfile::UpdateTitleGpd() { - if (!curr_gpd_ || curr_title_id_ == -1) { - return false; +void UserProfile::GetTitles(std::vector& titles) { + for (auto title : title_gpds_) { + titles.push_back(&title.second); + } +} + +bool UserProfile::UpdateTitleGpd(uint32_t title_id) { + if (title_id == -1) { + if (!curr_gpd_ || curr_title_id_ == -1) { + return false; + } + title_id = curr_title_id_; } - bool result = UpdateGpd(curr_title_id_, *curr_gpd_); + bool result = UpdateGpd(title_id, *curr_gpd_); if (!result) { - XELOGE("UpdateTitleGpd failed on title %X!", curr_title_id_); + XELOGE("UpdateTitleGpd failed on title %X!", title_id); } else { - XELOGD("Updated title %X GPD successfully!", curr_title_id_); + XELOGD("Updated title %X GPD successfully!", title_id); } return result; } diff --git a/src/xenia/kernel/xam/user_profile.h b/src/xenia/kernel/xam/user_profile.h index bcb4ae36e..08a9cd3bb 100644 --- a/src/xenia/kernel/xam/user_profile.h +++ b/src/xenia/kernel/xam/user_profile.h @@ -208,9 +208,11 @@ class UserProfile { Setting* GetSetting(uint32_t setting_id); util::GpdFile* SetTitleSpaData(const util::SpaFile& spa_data); - util::GpdFile* GetTitleGpd(uint32_t title_id = 0); + util::GpdFile* GetTitleGpd(uint32_t title_id = -1); - bool UpdateTitleGpd(); + void GetTitles(std::vector& titles); + + bool UpdateTitleGpd(uint32_t title_id = -1); bool UpdateAllGpds(); private: