yuzu-emu
/
yuzu-android
Archived
1
0
Fork 0

service: ac: Replace intances of ProfileData with UserData

This commit is contained in:
german77 2022-06-26 10:19:17 -05:00 committed by Narr the Reg
parent 802bbb2263
commit 32b522b1fd
3 changed files with 22 additions and 24 deletions

View File

@ -290,7 +290,7 @@ protected:
void Get(Kernel::HLERequestContext& ctx) { void Get(Kernel::HLERequestContext& ctx) {
LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.RawString()); LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.RawString());
ProfileBase profile_base{}; ProfileBase profile_base{};
ProfileData data{}; UserData data{};
if (profile_manager.GetProfileBaseAndData(user_id, profile_base, data)) { if (profile_manager.GetProfileBaseAndData(user_id, profile_base, data)) {
ctx.WriteBuffer(data); ctx.WriteBuffer(data);
IPC::ResponseBuilder rb{ctx, 16}; IPC::ResponseBuilder rb{ctx, 16};
@ -373,18 +373,18 @@ protected:
reinterpret_cast<const char*>(base.username.data()), base.username.size()), reinterpret_cast<const char*>(base.username.data()), base.username.size()),
base.timestamp, base.user_uuid.RawString()); base.timestamp, base.user_uuid.RawString());
if (user_data.size() < sizeof(ProfileData)) { if (user_data.size() < sizeof(UserData)) {
LOG_ERROR(Service_ACC, "ProfileData buffer too small!"); LOG_ERROR(Service_ACC, "UserData buffer too small!");
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ERR_INVALID_BUFFER); rb.Push(ERR_INVALID_BUFFER);
return; return;
} }
ProfileData data; UserData data;
std::memcpy(&data, user_data.data(), sizeof(ProfileData)); std::memcpy(&data, user_data.data(), sizeof(UserData));
if (!profile_manager.SetProfileBaseAndData(user_id, base, data)) { if (!profile_manager.SetProfileBaseAndData(user_id, base, data)) {
LOG_ERROR(Service_ACC, "Failed to update profile data and base!"); LOG_ERROR(Service_ACC, "Failed to update user data and base!");
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ERR_FAILED_SAVE_DATA); rb.Push(ERR_FAILED_SAVE_DATA);
return; return;
@ -406,15 +406,15 @@ protected:
reinterpret_cast<const char*>(base.username.data()), base.username.size()), reinterpret_cast<const char*>(base.username.data()), base.username.size()),
base.timestamp, base.user_uuid.RawString()); base.timestamp, base.user_uuid.RawString());
if (user_data.size() < sizeof(ProfileData)) { if (user_data.size() < sizeof(UserData)) {
LOG_ERROR(Service_ACC, "ProfileData buffer too small!"); LOG_ERROR(Service_ACC, "UserData buffer too small!");
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ERR_INVALID_BUFFER); rb.Push(ERR_INVALID_BUFFER);
return; return;
} }
ProfileData data; UserData data;
std::memcpy(&data, user_data.data(), sizeof(ProfileData)); std::memcpy(&data, user_data.data(), sizeof(UserData));
Common::FS::IOFile image(GetImagePath(user_id), Common::FS::FileAccessMode::Write, Common::FS::IOFile image(GetImagePath(user_id), Common::FS::FileAccessMode::Write,
Common::FS::FileType::BinaryFile); Common::FS::FileType::BinaryFile);

View File

@ -22,7 +22,7 @@ struct UserRaw {
UUID uuid2{}; UUID uuid2{};
u64 timestamp{}; u64 timestamp{};
ProfileUsername username{}; ProfileUsername username{};
ProfileData extra_data{}; UserData extra_data{};
}; };
static_assert(sizeof(UserRaw) == 0xC8, "UserRaw has incorrect size."); static_assert(sizeof(UserRaw) == 0xC8, "UserRaw has incorrect size.");
@ -263,7 +263,7 @@ UUID ProfileManager::GetLastOpenedUser() const {
/// Return the users profile base and the unknown arbitary data. /// Return the users profile base and the unknown arbitary data.
bool ProfileManager::GetProfileBaseAndData(std::optional<std::size_t> index, ProfileBase& profile, bool ProfileManager::GetProfileBaseAndData(std::optional<std::size_t> index, ProfileBase& profile,
ProfileData& data) const { UserData& data) const {
if (GetProfileBase(index, profile)) { if (GetProfileBase(index, profile)) {
data = profiles[*index].data; data = profiles[*index].data;
return true; return true;
@ -272,15 +272,14 @@ bool ProfileManager::GetProfileBaseAndData(std::optional<std::size_t> index, Pro
} }
/// Return the users profile base and the unknown arbitary data. /// Return the users profile base and the unknown arbitary data.
bool ProfileManager::GetProfileBaseAndData(UUID uuid, ProfileBase& profile, bool ProfileManager::GetProfileBaseAndData(UUID uuid, ProfileBase& profile, UserData& data) const {
ProfileData& data) const {
const auto idx = GetUserIndex(uuid); const auto idx = GetUserIndex(uuid);
return GetProfileBaseAndData(idx, profile, data); return GetProfileBaseAndData(idx, profile, data);
} }
/// Return the users profile base and the unknown arbitary data. /// Return the users profile base and the unknown arbitary data.
bool ProfileManager::GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, bool ProfileManager::GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile,
ProfileData& data) const { UserData& data) const {
return GetProfileBaseAndData(user.user_uuid, profile, data); return GetProfileBaseAndData(user.user_uuid, profile, data);
} }
@ -318,7 +317,7 @@ bool ProfileManager::SetProfileBase(UUID uuid, const ProfileBase& profile_new) {
} }
bool ProfileManager::SetProfileBaseAndData(Common::UUID uuid, const ProfileBase& profile_new, bool ProfileManager::SetProfileBaseAndData(Common::UUID uuid, const ProfileBase& profile_new,
const ProfileData& data_new) { const UserData& data_new) {
const auto index = GetUserIndex(uuid); const auto index = GetUserIndex(uuid);
if (index.has_value() && SetProfileBase(uuid, profile_new)) { if (index.has_value() && SetProfileBase(uuid, profile_new)) {
profiles[*index].data = data_new; profiles[*index].data = data_new;

View File

@ -22,7 +22,7 @@ using UserIDArray = std::array<Common::UUID, MAX_USERS>;
/// Contains extra data related to a user. /// Contains extra data related to a user.
/// TODO: RE this structure /// TODO: RE this structure
struct ProfileData { struct UserData {
INSERT_PADDING_WORDS_NOINIT(1); INSERT_PADDING_WORDS_NOINIT(1);
u32 icon_id; u32 icon_id;
u8 bg_color_id; u8 bg_color_id;
@ -30,7 +30,7 @@ struct ProfileData {
INSERT_PADDING_BYTES_NOINIT(0x10); INSERT_PADDING_BYTES_NOINIT(0x10);
INSERT_PADDING_BYTES_NOINIT(0x60); INSERT_PADDING_BYTES_NOINIT(0x60);
}; };
static_assert(sizeof(ProfileData) == 0x80, "ProfileData structure has incorrect size"); static_assert(sizeof(UserData) == 0x80, "UserData structure has incorrect size");
/// This holds general information about a users profile. This is where we store all the information /// This holds general information about a users profile. This is where we store all the information
/// based on a specific user /// based on a specific user
@ -38,7 +38,7 @@ struct ProfileInfo {
Common::UUID user_uuid{}; Common::UUID user_uuid{};
ProfileUsername username{}; ProfileUsername username{};
u64 creation_time{}; u64 creation_time{};
ProfileData data{}; // TODO(ognik): Work out what this is UserData data{}; // TODO(ognik): Work out what this is
bool is_open{}; bool is_open{};
}; };
@ -74,10 +74,9 @@ public:
bool GetProfileBase(Common::UUID uuid, ProfileBase& profile) const; bool GetProfileBase(Common::UUID uuid, ProfileBase& profile) const;
bool GetProfileBase(const ProfileInfo& user, ProfileBase& profile) const; bool GetProfileBase(const ProfileInfo& user, ProfileBase& profile) const;
bool GetProfileBaseAndData(std::optional<std::size_t> index, ProfileBase& profile, bool GetProfileBaseAndData(std::optional<std::size_t> index, ProfileBase& profile,
ProfileData& data) const; UserData& data) const;
bool GetProfileBaseAndData(Common::UUID uuid, ProfileBase& profile, ProfileData& data) const; bool GetProfileBaseAndData(Common::UUID uuid, ProfileBase& profile, UserData& data) const;
bool GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, bool GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, UserData& data) const;
ProfileData& data) const;
std::size_t GetUserCount() const; std::size_t GetUserCount() const;
std::size_t GetOpenUserCount() const; std::size_t GetOpenUserCount() const;
bool UserExists(Common::UUID uuid) const; bool UserExists(Common::UUID uuid) const;
@ -93,7 +92,7 @@ public:
bool RemoveUser(Common::UUID uuid); bool RemoveUser(Common::UUID uuid);
bool SetProfileBase(Common::UUID uuid, const ProfileBase& profile_new); bool SetProfileBase(Common::UUID uuid, const ProfileBase& profile_new);
bool SetProfileBaseAndData(Common::UUID uuid, const ProfileBase& profile_new, bool SetProfileBaseAndData(Common::UUID uuid, const ProfileBase& profile_new,
const ProfileData& data_new); const UserData& data_new);
private: private:
void ParseUserSaveFile(); void ParseUserSaveFile();