From 242b6f6b49a81e9e94d5c1bba8134f41fc6a3657 Mon Sep 17 00:00:00 2001 From: pineappleEA Date: Tue, 20 Apr 2021 12:40:19 +0200 Subject: [PATCH] early-access version 1615 --- README.md | 2 +- src/core/hle/service/glue/arp.cpp | 10 +++++----- src/core/hle/service/hid/controllers/npad.cpp | 2 +- src/core/hle/service/hid/controllers/npad.h | 1 - src/core/hle/service/set/set.cpp | 3 ++- src/core/hle/service/time/time.cpp | 8 +++++--- src/core/hle/service/time/time_zone_service.cpp | 6 ++++-- src/core/hle/service/vi/vi.cpp | 8 ++++++-- 8 files changed, 24 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 8f7acab3c..b16ec77b3 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 1612. +This is the source code for early-access 1615. ## Legal Notice diff --git a/src/core/hle/service/glue/arp.cpp b/src/core/hle/service/glue/arp.cpp index 322125135..7b1c6677c 100755 --- a/src/core/hle/service/glue/arp.cpp +++ b/src/core/hle/service/glue/arp.cpp @@ -157,9 +157,9 @@ class IRegistrar final : public ServiceFramework { friend class ARP_W; public: - explicit IRegistrar( - Core::System& system_, - std::function)> issuer) + using IssuerFn = std::function)>; + + explicit IRegistrar(Core::System& system_, IssuerFn&& issuer) : ServiceFramework{system_, "IRegistrar"}, issue_process_id{std::move(issuer)} { // clang-format off static const FunctionInfo functions[] = { @@ -238,9 +238,9 @@ private: rb.Push(RESULT_SUCCESS); } - std::function)> issue_process_id; + IssuerFn issue_process_id; bool issued = false; - ApplicationLaunchProperty launch; + ApplicationLaunchProperty launch{}; std::vector control; }; diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index 783386fcf..113a41254 100755 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp @@ -147,7 +147,7 @@ bool Controller_NPad::IsDeviceHandleValid(const DeviceHandle& device_handle) { device_handle.device_index < DeviceIndex::MaxDeviceIndex; } -Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system), system(system) { +Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system) { latest_vibration_values.fill({DEFAULT_VIBRATION_VALUE, DEFAULT_VIBRATION_VALUE}); } diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index 14d0ac067..c3b07bd41 100755 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h @@ -587,6 +587,5 @@ private: std::array npad_pad_states{}; std::array npad_trigger_states{}; bool is_in_lr_assignment_mode{false}; - Core::System& system; }; } // namespace Service::HID diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp index bc7dc776f..fbdc4793d 100755 --- a/src/core/hle/service/set/set.cpp +++ b/src/core/hle/service/set/set.cpp @@ -104,9 +104,10 @@ void GetKeyCodeMapImpl(Kernel::HLERequestContext& ctx) { layout = key_code->second; } + ctx.WriteBuffer(layout); + IPC::ResponseBuilder rb{ctx, 2}; rb.Push(RESULT_SUCCESS); - ctx.WriteBuffer(layout); } } // Anonymous namespace diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index 63e0247de..32f372d71 100755 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp @@ -294,16 +294,17 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) { return; } + ctx.WriteBuffer(clock_snapshot); + IPC::ResponseBuilder rb{ctx, 2}; rb.Push(RESULT_SUCCESS); - ctx.WriteBuffer(clock_snapshot); } void Module::Interface::GetClockSnapshotFromSystemClockContext(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; const auto type{rp.PopEnum()}; - rp.AlignWithPadding(); + rp.Skip(1, false); const Clock::SystemClockContext user_context{rp.PopRaw()}; const Clock::SystemClockContext network_context{rp.PopRaw()}; @@ -319,9 +320,10 @@ void Module::Interface::GetClockSnapshotFromSystemClockContext(Kernel::HLEReques return; } + ctx.WriteBuffer(clock_snapshot); + IPC::ResponseBuilder rb{ctx, 2}; rb.Push(RESULT_SUCCESS); - ctx.WriteBuffer(clock_snapshot); } void Module::Interface::CalculateStandardUserSystemClockDifferenceByUser( diff --git a/src/core/hle/service/time/time_zone_service.cpp b/src/core/hle/service/time/time_zone_service.cpp index 3117627cf..19d7a1a0c 100755 --- a/src/core/hle/service/time/time_zone_service.cpp +++ b/src/core/hle/service/time/time_zone_service.cpp @@ -140,11 +140,12 @@ void ITimeZoneService::ToPosixTime(Kernel::HLERequestContext& ctx) { return; } + ctx.WriteBuffer(posix_time); + // TODO(bunnei): Handle multiple times IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); rb.PushRaw(1); // Number of times we're returning - ctx.WriteBuffer(posix_time); } void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) { @@ -163,10 +164,11 @@ void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) { return; } + ctx.WriteBuffer(posix_time); + IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); rb.PushRaw(1); // Number of times we're returning - ctx.WriteBuffer(posix_time); } } // namespace Service::Time diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index 348360b51..7ae07d072 100755 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp @@ -1129,9 +1129,11 @@ private: } NativeWindow native_window{*buffer_queue_id}; + const auto buffer_size = ctx.WriteBuffer(native_window.Serialize()); + IPC::ResponseBuilder rb{ctx, 4}; rb.Push(RESULT_SUCCESS); - rb.Push(ctx.WriteBuffer(native_window.Serialize())); + rb.Push(buffer_size); } void CloseLayer(Kernel::HLERequestContext& ctx) { @@ -1173,10 +1175,12 @@ private: } NativeWindow native_window{*buffer_queue_id}; + const auto buffer_size = ctx.WriteBuffer(native_window.Serialize()); + IPC::ResponseBuilder rb{ctx, 6}; rb.Push(RESULT_SUCCESS); rb.Push(*layer_id); - rb.Push(ctx.WriteBuffer(native_window.Serialize())); + rb.Push(buffer_size); } void DestroyStrayLayer(Kernel::HLERequestContext& ctx) {