summaryrefslogtreecommitdiffstats
path: root/src/hid_core/resources/system_buttons/sleep_button.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hid_core/resources/system_buttons/sleep_button.cpp')
-rw-r--r--src/hid_core/resources/system_buttons/sleep_button.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/hid_core/resources/system_buttons/sleep_button.cpp b/src/hid_core/resources/system_buttons/sleep_button.cpp
index 22adf501f..159663246 100644
--- a/src/hid_core/resources/system_buttons/sleep_button.cpp
+++ b/src/hid_core/resources/system_buttons/sleep_button.cpp
@@ -17,10 +17,6 @@ void SleepButton::OnInit() {}
void SleepButton::OnRelease() {}
void SleepButton::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
- if (!smart_update) {
- return;
- }
-
std::scoped_lock shared_lock{*shared_mutex};
const u64 aruid = applet_resource->GetActiveAruid();
auto* data = applet_resource->GetAruidData(aruid);
@@ -29,11 +25,20 @@ void SleepButton::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
return;
}
- auto& header = data->shared_memory_format->capture_button.header;
- header.timestamp = core_timing.GetGlobalTimeNs().count();
- header.total_entry_count = 17;
- header.entry_count = 0;
- header.last_entry_index = 0;
+ auto& shared_memory = data->shared_memory_format->sleep_button;
+
+ if (!IsControllerActivated()) {
+ shared_memory.sleep_lifo.buffer_count = 0;
+ shared_memory.sleep_lifo.buffer_tail = 0;
+ return;
+ }
+
+ const auto& last_entry = shared_memory.sleep_lifo.ReadCurrentEntry().state;
+ next_state.sampling_number = last_entry.sampling_number + 1;
+
+ next_state.buttons.raw = 0;
+
+ shared_memory.sleep_lifo.WriteNextEntry(next_state);
}
} // namespace Service::HID