[XAM/User] Added title_id == 0 check for few User functions

Games like to report title_id as 0 (it is expected behaviour).
0 in this case means currently opened title
This commit is contained in:
Gliniak 2020-01-09 14:17:51 +01:00
parent 7d9e8fba2c
commit 2749ab1284
1 changed files with 6 additions and 3 deletions

View File

@ -254,7 +254,7 @@ dword_result_t XamUserReadProfileSettings(
auto gpd = user_profile->GetDashboardGpd(); auto gpd = user_profile->GetDashboardGpd();
if (title_id != kDashboardID) { if (title_id != kDashboardID) {
gpd = user_profile->GetTitleGpd(title_id); gpd = user_profile->GetTitleGpd(!title_id ? kernel_state()->title_id() : title_id);
} }
// First call asks for size (fill buffer_size_ptr). // First call asks for size (fill buffer_size_ptr).
@ -403,7 +403,8 @@ dword_result_t XamUserWriteProfileSettings(
auto gpd = user_profile->GetDashboardGpd(); auto gpd = user_profile->GetDashboardGpd();
if (title_id != kDashboardID) { if (title_id != kDashboardID) {
gpd = user_profile->GetTitleGpd(title_id); gpd = user_profile->GetTitleGpd(!title_id ? kernel_state()->title_id()
: title_id);
} }
if (!gpd) { if (!gpd) {
@ -605,7 +606,9 @@ dword_result_t XamUserCreateAchievementEnumerator(dword_t title_id,
*handle_ptr = e->handle(); *handle_ptr = e->handle();
// Copy achievements into the enumerator if game GPD is loaded // Copy achievements into the enumerator if game GPD is loaded
auto* game_gpd = user_profile->GetTitleGpd(title_id); auto* game_gpd = user_profile->GetTitleGpd(
!title_id ? kernel_state()->title_id() : title_id);
if (!game_gpd) { if (!game_gpd) {
XELOGE( XELOGE(
"XamUserCreateAchievementEnumerator failed to find GPD for title %X!", "XamUserCreateAchievementEnumerator failed to find GPD for title %X!",