From 6f2eb2a418dee720bbb8ac407ba2312bdd990b9e Mon Sep 17 00:00:00 2001 From: xperia64 Date: Thu, 17 Jan 2019 23:48:50 -0500 Subject: [PATCH] Do 3D slider updating in the HID module --- src/core/hle/kernel/shared_page.cpp | 4 ++++ src/core/hle/kernel/shared_page.h | 2 ++ src/core/hle/service/hid/hid.cpp | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/src/core/hle/kernel/shared_page.cpp b/src/core/hle/kernel/shared_page.cpp index e2af01e0d..c47751c73 100644 --- a/src/core/hle/kernel/shared_page.cpp +++ b/src/core/hle/kernel/shared_page.cpp @@ -121,6 +121,10 @@ void Handler::Set3DLed(u8 state) { shared_page.ledstate_3d = state; } +void Handler::Set3DSlider(float_le slidestate) { + shared_page.sliderstate_3d = slidestate; +} + SharedPageDef& Handler::GetSharedPage() { return shared_page; } diff --git a/src/core/hle/kernel/shared_page.h b/src/core/hle/kernel/shared_page.h index 7b6dc2e06..2cef32826 100644 --- a/src/core/hle/kernel/shared_page.h +++ b/src/core/hle/kernel/shared_page.h @@ -89,6 +89,8 @@ public: void SetWifiLinkLevel(WifiLinkLevel); + void Set3DSlider(float_le); + void Set3DLed(u8); SharedPageDef& GetSharedPage(); diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 7393ad684..6b8ec9127 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -12,6 +12,7 @@ #include "core/hle/kernel/event.h" #include "core/hle/kernel/handle_table.h" #include "core/hle/kernel/shared_memory.h" +#include "core/hle/kernel/shared_page.h" #include "core/hle/service/hid/hid.h" #include "core/hle/service/hid/hid_spvr.h" #include "core/hle/service/hid/hid_user.h" @@ -160,6 +161,12 @@ void Module::UpdatePadCallback(u64 userdata, s64 cycles_late) { event_pad_or_touch_1->Signal(); event_pad_or_touch_2->Signal(); + // TODO(xperia64): How the 3D Slider is updated by the HID module needs to be RE'd + // and possibly moved to its own Core::Timing event. + system.Kernel().GetSharedPageHandler().Set3DSlider( + Settings::values.toggle_3d ? static_cast(Settings::values.factor_3d) / 100 + : 0.0f); + // Reschedule recurrent event system.CoreTiming().ScheduleEvent(pad_update_ticks - cycles_late, pad_update_event); }