diff options
author | Narr the Reg <juangerman-13@hotmail.com> | 2022-04-19 22:30:32 +0200 |
---|---|---|
committer | Narr the Reg <juangerman-13@hotmail.com> | 2022-04-23 22:41:42 +0200 |
commit | 61582efeb976b0852e73b734835d60c73b38f3cf (patch) | |
tree | b5ac72746de0533cd292ad5cb962d0e663326b0e /src/core/hle/service/hid/controllers/debug_pad.cpp | |
parent | Merge pull request #8249 from german77/queued (diff) | |
download | yuzu-61582efeb976b0852e73b734835d60c73b38f3cf.tar yuzu-61582efeb976b0852e73b734835d60c73b38f3cf.tar.gz yuzu-61582efeb976b0852e73b734835d60c73b38f3cf.tar.bz2 yuzu-61582efeb976b0852e73b734835d60c73b38f3cf.tar.lz yuzu-61582efeb976b0852e73b734835d60c73b38f3cf.tar.xz yuzu-61582efeb976b0852e73b734835d60c73b38f3cf.tar.zst yuzu-61582efeb976b0852e73b734835d60c73b38f3cf.zip |
Diffstat (limited to 'src/core/hle/service/hid/controllers/debug_pad.cpp')
-rw-r--r-- | src/core/hle/service/hid/controllers/debug_pad.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/core/hle/service/hid/controllers/debug_pad.cpp b/src/core/hle/service/hid/controllers/debug_pad.cpp index 73309d64e..8ec9f4a95 100644 --- a/src/core/hle/service/hid/controllers/debug_pad.cpp +++ b/src/core/hle/service/hid/controllers/debug_pad.cpp @@ -13,8 +13,12 @@ namespace Service::HID { constexpr std::size_t SHARED_MEMORY_OFFSET = 0x00000; -Controller_DebugPad::Controller_DebugPad(Core::HID::HIDCore& hid_core_) +Controller_DebugPad::Controller_DebugPad(Core::HID::HIDCore& hid_core_, u8* raw_shared_memory_) : ControllerBase{hid_core_} { + static_assert(SHARED_MEMORY_OFFSET + sizeof(DebugPadSharedMemory) < shared_memory_size, + "DebugPadSharedMemory is bigger than the shared memory"); + shared_memory = std::construct_at( + reinterpret_cast<DebugPadSharedMemory*>(raw_shared_memory_ + SHARED_MEMORY_OFFSET)); controller = hid_core.GetEmulatedController(Core::HID::NpadIdType::Other); } @@ -24,16 +28,14 @@ void Controller_DebugPad::OnInit() {} void Controller_DebugPad::OnRelease() {} -void Controller_DebugPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* data, - std::size_t size) { +void Controller_DebugPad::OnUpdate(const Core::Timing::CoreTiming& core_timing) { if (!IsControllerActivated()) { - debug_pad_lifo.buffer_count = 0; - debug_pad_lifo.buffer_tail = 0; - std::memcpy(data + SHARED_MEMORY_OFFSET, &debug_pad_lifo, sizeof(debug_pad_lifo)); + shared_memory->debug_pad_lifo.buffer_count = 0; + shared_memory->debug_pad_lifo.buffer_tail = 0; return; } - const auto& last_entry = debug_pad_lifo.ReadCurrentEntry().state; + const auto& last_entry = shared_memory->debug_pad_lifo.ReadCurrentEntry().state; next_state.sampling_number = last_entry.sampling_number + 1; if (Settings::values.debug_pad_enabled) { @@ -47,8 +49,7 @@ void Controller_DebugPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, next_state.r_stick = stick_state.right; } - debug_pad_lifo.WriteNextEntry(next_state); - std::memcpy(data + SHARED_MEMORY_OFFSET, &debug_pad_lifo, sizeof(debug_pad_lifo)); + shared_memory->debug_pad_lifo.WriteNextEntry(next_state); } } // namespace Service::HID |