[Kernel] Removed XAM specific entities from KernelState
This commit is contained in:
committed by
Radosław Gliński
parent
6f65ec382c
commit
e409a384ec
@@ -36,8 +36,9 @@ X_HRESULT_result_t XamUserGetXUID_entry(dword_t user_index, dword_t type_mask,
|
||||
uint32_t result = X_E_NO_SUCH_USER;
|
||||
uint64_t xuid = 0;
|
||||
if (user_index < 4) {
|
||||
if (kernel_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile = kernel_state()->user_profile(user_index);
|
||||
if (kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile =
|
||||
kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
auto type = user_profile->type() & type_mask;
|
||||
if (type & (2 | 4)) {
|
||||
// maybe online profile?
|
||||
@@ -62,8 +63,9 @@ dword_result_t XamUserGetSigninState_entry(dword_t user_index) {
|
||||
xe::threading::MaybeYield();
|
||||
uint32_t signin_state = 0;
|
||||
if (user_index < 4) {
|
||||
if (kernel_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile = kernel_state()->user_profile(user_index);
|
||||
if (kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile =
|
||||
kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
signin_state = user_profile->signin_state();
|
||||
}
|
||||
}
|
||||
@@ -93,10 +95,11 @@ X_HRESULT_result_t XamUserGetSigninInfo_entry(
|
||||
return X_E_NO_SUCH_USER;
|
||||
}
|
||||
|
||||
kernel_state()->UpdateUsedUserProfiles();
|
||||
kernel_state()->xam_state()->UpdateUsedUserProfiles();
|
||||
|
||||
if (kernel_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile = kernel_state()->user_profile(user_index);
|
||||
if (kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile =
|
||||
kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
info->xuid = user_profile->xuid();
|
||||
info->signin_state = user_profile->signin_state();
|
||||
xe::string_util::copy_truncating(info->name, user_profile->name(),
|
||||
@@ -114,8 +117,9 @@ dword_result_t XamUserGetName_entry(dword_t user_index, lpstring_t buffer,
|
||||
return X_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (kernel_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile = kernel_state()->user_profile(user_index);
|
||||
if (kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile =
|
||||
kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
const auto& user_name = user_profile->name();
|
||||
xe::string_util::copy_truncating(
|
||||
buffer, user_name, std::min(buffer_len.value(), uint32_t(16)));
|
||||
@@ -138,11 +142,12 @@ dword_result_t XamUserGetGamerTag_entry(dword_t user_index,
|
||||
return X_E_INVALIDARG;
|
||||
}
|
||||
|
||||
if (!kernel_state()->IsUserSignedIn(user_index)) {
|
||||
if (!kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
return X_E_INVALIDARG;
|
||||
}
|
||||
|
||||
const auto& user_profile = kernel_state()->user_profile(user_index);
|
||||
const auto& user_profile =
|
||||
kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
auto user_name = xe::to_utf16(user_profile->name());
|
||||
xe::string_util::copy_and_swap_truncating(
|
||||
buffer, user_name, std::min(buffer_len.value(), uint32_t(16)));
|
||||
@@ -173,8 +178,9 @@ uint32_t XamUserReadProfileSettingsEx(uint32_t title_id, uint32_t user_index,
|
||||
// TODO(gibbed): we assert here, but in case a title passes xuid_count > 1
|
||||
// until it's implemented for release builds...
|
||||
xuid_count = 1;
|
||||
if (kernel_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile = kernel_state()->user_profile(user_index);
|
||||
if (kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile =
|
||||
kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
assert_true(static_cast<uint64_t>(xuids[0]) == user_profile->xuid());
|
||||
}
|
||||
}
|
||||
@@ -227,7 +233,7 @@ uint32_t XamUserReadProfileSettingsEx(uint32_t title_id, uint32_t user_index,
|
||||
|
||||
// Title ID = 0 means us.
|
||||
// 0xfffe07d1 = profile?
|
||||
if (!kernel_state()->IsUserSignedIn(user_index) && !xuids) {
|
||||
if (!kernel_state()->xam_state()->IsUserSignedIn(user_index) && !xuids) {
|
||||
if (overlapped) {
|
||||
kernel_state()->CompleteOverlappedImmediate(
|
||||
kernel_state()->memory()->HostToGuestVirtual(overlapped),
|
||||
@@ -237,11 +243,11 @@ uint32_t XamUserReadProfileSettingsEx(uint32_t title_id, uint32_t user_index,
|
||||
return X_ERROR_NO_SUCH_USER;
|
||||
}
|
||||
|
||||
auto user_profile = kernel_state()->user_profile(user_index);
|
||||
auto user_profile = kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
|
||||
if (xuids) {
|
||||
uint64_t user_xuid = static_cast<uint64_t>(xuids[0]);
|
||||
if (!kernel_state()->IsUserSignedIn(user_xuid)) {
|
||||
if (!kernel_state()->xam_state()->IsUserSignedIn(user_xuid)) {
|
||||
if (overlapped) {
|
||||
kernel_state()->CompleteOverlappedImmediate(
|
||||
kernel_state()->memory()->HostToGuestVirtual(overlapped),
|
||||
@@ -250,7 +256,7 @@ uint32_t XamUserReadProfileSettingsEx(uint32_t title_id, uint32_t user_index,
|
||||
}
|
||||
return X_ERROR_NO_SUCH_USER;
|
||||
}
|
||||
user_profile = kernel_state()->user_profile(user_xuid);
|
||||
user_profile = kernel_state()->xam_state()->GetUserProfile(user_xuid);
|
||||
}
|
||||
|
||||
// First call asks for size (fill buffer_size_ptr).
|
||||
@@ -361,7 +367,8 @@ dword_result_t XamUserWriteProfileSettings_entry(
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
// Update and save settings.
|
||||
const auto& user_profile = kernel_state()->user_profile(user_index);
|
||||
const auto& user_profile =
|
||||
kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
|
||||
for (uint32_t n = 0; n < setting_count; ++n) {
|
||||
const X_USER_PROFILE_SETTING& setting = settings[n];
|
||||
@@ -429,7 +436,7 @@ dword_result_t XamUserCheckPrivilege_entry(dword_t user_index, dword_t mask,
|
||||
return X_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (!kernel_state()->IsUserSignedIn(user_index)) {
|
||||
if (!kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
return X_ERROR_NO_SUCH_USER;
|
||||
}
|
||||
}
|
||||
@@ -442,7 +449,7 @@ DECLARE_XAM_EXPORT1(XamUserCheckPrivilege, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamUserContentRestrictionGetFlags_entry(dword_t user_index,
|
||||
lpdword_t out_flags) {
|
||||
if (!kernel_state()->IsUserSignedIn(user_index)) {
|
||||
if (!kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
return X_ERROR_NO_SUCH_USER;
|
||||
}
|
||||
|
||||
@@ -456,7 +463,7 @@ dword_result_t XamUserContentRestrictionGetRating_entry(dword_t user_index,
|
||||
dword_t unk1,
|
||||
lpdword_t out_unk2,
|
||||
lpdword_t out_unk3) {
|
||||
if (!kernel_state()->IsUserSignedIn(user_index)) {
|
||||
if (!kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
return X_ERROR_NO_SUCH_USER;
|
||||
}
|
||||
|
||||
@@ -491,7 +498,7 @@ dword_result_t XamUserGetMembershipTier_entry(dword_t user_index) {
|
||||
return X_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (!kernel_state()->IsUserSignedIn(user_index)) {
|
||||
if (!kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
return X_ERROR_NO_SUCH_USER;
|
||||
}
|
||||
return 6 /* 6 appears to be Gold */;
|
||||
@@ -507,8 +514,9 @@ dword_result_t XamUserAreUsersFriends_entry(dword_t user_index, dword_t unk1,
|
||||
if (user_index >= 4) {
|
||||
result = X_ERROR_INVALID_PARAMETER;
|
||||
} else {
|
||||
if (kernel_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile = kernel_state()->user_profile(user_index);
|
||||
if (kernel_state()->xam_state()->IsUserSignedIn(user_index)) {
|
||||
const auto& user_profile =
|
||||
kernel_state()->xam_state()->GetUserProfile(user_index);
|
||||
if (user_profile->signin_state() == 0) {
|
||||
result = X_ERROR_NOT_LOGGED_ON;
|
||||
} else {
|
||||
@@ -545,7 +553,7 @@ DECLARE_XAM_EXPORT1(XamUserAreUsersFriends, kUserProfiles, kStub);
|
||||
dword_result_t XamShowSigninUI_entry(dword_t users_needed, dword_t unk_mask) {
|
||||
// XN_SYS_UI (on)
|
||||
kernel_state()->BroadcastNotification(kXNotificationIDSystemUI, 1);
|
||||
kernel_state()->UpdateUsedUserProfiles();
|
||||
kernel_state()->xam_state()->UpdateUsedUserProfiles();
|
||||
// Mask values vary. Probably matching user types? Local/remote?
|
||||
// Games seem to sit and loop until we trigger this notification:
|
||||
|
||||
@@ -554,7 +562,7 @@ dword_result_t XamShowSigninUI_entry(dword_t users_needed, dword_t unk_mask) {
|
||||
uint32_t active_users = 0;
|
||||
|
||||
for (uint32_t i = 0; i < 4; i++) {
|
||||
if (kernel_state()->IsUserSignedIn(i)) {
|
||||
if (kernel_state()->xam_state()->IsUserSignedIn(i)) {
|
||||
user_mask |= (1 << i);
|
||||
active_users++;
|
||||
if (active_users >= users_needed) break;
|
||||
@@ -773,4 +781,4 @@ DECLARE_XAM_EXPORT1(XamUserCreateStatsEnumerator, kUserProfiles, kSketchy);
|
||||
} // namespace kernel
|
||||
} // namespace xe
|
||||
|
||||
DECLARE_XAM_EMPTY_REGISTER_EXPORTS(User);
|
||||
DECLARE_XAM_EMPTY_REGISTER_EXPORTS(User);
|
||||
Reference in New Issue
Block a user