diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/service/mii/mii.cpp | 27 | ||||
| -rw-r--r-- | src/core/hle/service/mii/mii_manager.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/service/mii/mii_manager.h | 4 | 
3 files changed, 34 insertions, 9 deletions
| diff --git a/src/core/hle/service/mii/mii.cpp b/src/core/hle/service/mii/mii.cpp index c2263569d..39e4e937a 100644 --- a/src/core/hle/service/mii/mii.cpp +++ b/src/core/hle/service/mii/mii.cpp @@ -68,13 +68,14 @@ private:      void IsUpdated(Kernel::HLERequestContext& ctx) {          IPC::RequestParser rp{ctx}; -        const auto unknown{rp.PopRaw<u32>()}; +        const auto source{rp.PopRaw<Source>()}; -        LOG_WARNING(Service_Mii, "(STUBBED) called with unknown={:08X}", unknown); +        LOG_DEBUG(Service_Mii, "called with source={}", source);          IPC::ResponseBuilder rb{ctx, 3};          rb.Push(RESULT_SUCCESS); -        rb.Push(false); +        rb.Push(db.CheckUpdatedFlag()); +        db.ResetUpdatedFlag();      }      void IsFullDatabase(Kernel::HLERequestContext& ctx) { @@ -87,9 +88,9 @@ private:      void GetCount(Kernel::HLERequestContext& ctx) {          IPC::RequestParser rp{ctx}; -        const auto unknown{rp.PopRaw<u32>()}; +        const auto source{rp.PopRaw<Source>()}; -        LOG_DEBUG(Service_Mii, "called with unknown={:08X}", unknown); +        LOG_DEBUG(Service_Mii, "called with source={}", source);          IPC::ResponseBuilder rb{ctx, 3};          rb.Push(RESULT_SUCCESS); @@ -100,8 +101,10 @@ private:      void Get(Kernel::HLERequestContext& ctx) {          IPC::RequestParser rp{ctx};          const auto size{rp.PopRaw<u32>()}; +        const auto source{rp.PopRaw<Source>()}; -        LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}", size, offsets[0]); +        LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}, source={}", size, +                  offsets[0], source);          u32 read_size{};          ctx.WriteBuffer(SerializeArray(&MiiManager::GetInfoElement, offsets[0], size, read_size)); @@ -116,8 +119,10 @@ private:      void Get1(Kernel::HLERequestContext& ctx) {          IPC::RequestParser rp{ctx};          const auto size{rp.PopRaw<u32>()}; +        const auto source{rp.PopRaw<Source>()}; -        LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}", size, offsets[1]); +        LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}, source={}", size, +                  offsets[1], source);          u32 read_size{};          ctx.WriteBuffer(SerializeArray(&MiiManager::GetInfo, offsets[1], size, read_size)); @@ -157,8 +162,10 @@ private:      void Get2(Kernel::HLERequestContext& ctx) {          IPC::RequestParser rp{ctx};          const auto size{rp.PopRaw<u32>()}; +        const auto source{rp.PopRaw<Source>()}; -        LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}", size, offsets[2]); +        LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}, source={}", size, +                  offsets[2], source);          u32 read_size{};          ctx.WriteBuffer( @@ -174,8 +181,10 @@ private:      void Get3(Kernel::HLERequestContext& ctx) {          IPC::RequestParser rp{ctx};          const auto size{rp.PopRaw<u32>()}; +        const auto source{rp.PopRaw<Source>()}; -        LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}", size, offsets[3]); +        LOG_DEBUG(Service_Mii, "called with size={:08X}, offset={:08X}, source={}", size, +                  offsets[3], source);          u32 read_size{};          ctx.WriteBuffer(SerializeArray(&MiiManager::GetStoreData, offsets[3], size, read_size)); diff --git a/src/core/hle/service/mii/mii_manager.cpp b/src/core/hle/service/mii/mii_manager.cpp index 083c62b1e..7011ea2bd 100644 --- a/src/core/hle/service/mii/mii_manager.cpp +++ b/src/core/hle/service/mii/mii_manager.cpp @@ -204,6 +204,14 @@ MiiInfo MiiManager::CreateDefault(u32 index) {      return ConvertStoreDataToInfo(new_mii);  } +bool MiiManager::CheckUpdatedFlag() const { +    return updated_flag; +} + +void MiiManager::ResetUpdatedFlag() { +    updated_flag = false; +} +  bool MiiManager::Empty() const {      return Size() == 0;  } @@ -213,6 +221,7 @@ bool MiiManager::Full() const {  }  void MiiManager::Clear() { +    updated_flag = true;      std::fill(database.miis.begin(), database.miis.end(), MiiStoreData{});  } @@ -244,6 +253,7 @@ bool MiiManager::Remove(Common::UUID uuid) {      if (iter == database.miis.end())          return false; +    updated_flag = true;      *iter = MiiStoreData{};      EnsureDatabasePartition();      return true; @@ -277,6 +287,7 @@ bool MiiManager::Move(Common::UUID uuid, u32 new_index) {      if (index == INVALID_INDEX || new_index >= MAX_MIIS)          return false; +    updated_flag = true;      const auto moving = database.miis[index];      const auto replacing = database.miis[new_index];      if (replacing.uuid) { @@ -294,6 +305,7 @@ bool MiiManager::Move(Common::UUID uuid, u32 new_index) {  bool MiiManager::AddOrReplace(const MiiStoreData& data) {      const auto index = IndexOf(data.uuid); +    updated_flag = true;      if (index == INVALID_INDEX) {          const auto size = Size();          if (size == MAX_MIIS) diff --git a/src/core/hle/service/mii/mii_manager.h b/src/core/hle/service/mii/mii_manager.h index f7e3d2cf9..bf955930d 100644 --- a/src/core/hle/service/mii/mii_manager.h +++ b/src/core/hle/service/mii/mii_manager.h @@ -226,6 +226,9 @@ public:      MiiInfo CreateRandom(RandomParameters params);      MiiInfo CreateDefault(u32 index); +    bool CheckUpdatedFlag() const; +    void ResetUpdatedFlag(); +      bool Empty() const;      bool Full() const; @@ -254,6 +257,7 @@ private:      void EnsureDatabasePartition();      MiiDatabase database; +    bool updated_flag = false;  };  }; // namespace Service::Mii | 
