diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2024-02-24 22:24:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-24 22:24:01 +0100 |
commit | a93d249ac161e190b8c7046917bd9a3b6e79a0e0 (patch) | |
tree | e7589e51b5bf334aef78658b2e7efddcce3578dd /src/core/hle/service/set/system_settings_server.h | |
parent | Merge pull request #13153 from german77/defaultset (diff) | |
parent | service: set: Fix GetSettingsItemValue (diff) | |
download | yuzu-a93d249ac161e190b8c7046917bd9a3b6e79a0e0.tar yuzu-a93d249ac161e190b8c7046917bd9a3b6e79a0e0.tar.gz yuzu-a93d249ac161e190b8c7046917bd9a3b6e79a0e0.tar.bz2 yuzu-a93d249ac161e190b8c7046917bd9a3b6e79a0e0.tar.lz yuzu-a93d249ac161e190b8c7046917bd9a3b6e79a0e0.tar.xz yuzu-a93d249ac161e190b8c7046917bd9a3b6e79a0e0.tar.zst yuzu-a93d249ac161e190b8c7046917bd9a3b6e79a0e0.zip |
Diffstat (limited to 'src/core/hle/service/set/system_settings_server.h')
-rw-r--r-- | src/core/hle/service/set/system_settings_server.h | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/core/hle/service/set/system_settings_server.h b/src/core/hle/service/set/system_settings_server.h index 46e06c8ea..9a1154ad6 100644 --- a/src/core/hle/service/set/system_settings_server.h +++ b/src/core/hle/service/set/system_settings_server.h @@ -34,20 +34,17 @@ public: explicit ISystemSettingsServer(Core::System& system_); ~ISystemSettingsServer() override; - Result GetSettingsItemValueImpl(std::vector<u8>& out_value, const std::string& category, - const std::string& name); + Result GetSettingsItemValueImpl(std::span<u8> out_value, u64& out_size, + const std::string& category, const std::string& name); template <typename T> - Result GetSettingsItemValueImpl(T& value, const std::string& category, + Result GetSettingsItemValueImpl(T& out_value, const std::string& category, const std::string& name) { - std::vector<u8> data; - const auto result = GetSettingsItemValueImpl(data, category, name); - if (result.IsError()) { - return result; - } - ASSERT(data.size() >= sizeof(T)); - std::memcpy(&value, data.data(), sizeof(T)); - return result; + u64 data_size{}; + std::vector<u8> data(sizeof(T)); + R_TRY(GetSettingsItemValueImpl(data, data_size, category, name)); + std::memcpy(&out_value, data.data(), data_size); + R_SUCCEED(); } public: @@ -84,7 +81,7 @@ public: InLargeData<SettingItemName, BufferAttr_HipcPointer> setting_category_buffer, InLargeData<SettingItemName, BufferAttr_HipcPointer> setting_name_buf); Result GetSettingsItemValue( - OutBuffer<BufferAttr_HipcMapAlias> out_data, + Out<u64> out_size, OutBuffer<BufferAttr_HipcMapAlias> out_data, InLargeData<SettingItemName, BufferAttr_HipcPointer> setting_category_buffer, InLargeData<SettingItemName, BufferAttr_HipcPointer> setting_name_buffer); Result GetTvSettings(Out<TvSettings> out_tv_settings); |