diff options
| author | 2019-09-21 18:43:43 +1000 | |
|---|---|---|
| committer | 2019-09-22 16:30:29 +1000 | |
| commit | 28181919a60c21d9c217fd56b9994fa7778a87c4 (patch) | |
| tree | 0fe18715b0937b86d5e7d7824f000ce26088b06a /src | |
| parent | Deglobalize System: Friend (diff) | |
| download | yuzu-28181919a60c21d9c217fd56b9994fa7778a87c4.tar.gz yuzu-28181919a60c21d9c217fd56b9994fa7778a87c4.tar.xz yuzu-28181919a60c21d9c217fd56b9994fa7778a87c4.zip | |
Deglobalize System: Hid
Diffstat (limited to 'src')
20 files changed, 44 insertions, 37 deletions
diff --git a/src/core/hle/service/hid/controllers/controller_base.cpp b/src/core/hle/service/hid/controllers/controller_base.cpp index 0993a7815..cc935b031 100644 --- a/src/core/hle/service/hid/controllers/controller_base.cpp +++ b/src/core/hle/service/hid/controllers/controller_base.cpp | |||
| @@ -9,12 +9,12 @@ namespace Service::HID { | |||
| 9 | ControllerBase::ControllerBase() = default; | 9 | ControllerBase::ControllerBase() = default; |
| 10 | ControllerBase::~ControllerBase() = default; | 10 | ControllerBase::~ControllerBase() = default; |
| 11 | 11 | ||
| 12 | void ControllerBase::ActivateController() { | 12 | void ControllerBase::ActivateController(Core::System& system) { |
| 13 | if (is_activated) { | 13 | if (is_activated) { |
| 14 | OnRelease(); | 14 | OnRelease(); |
| 15 | } | 15 | } |
| 16 | is_activated = true; | 16 | is_activated = true; |
| 17 | OnInit(); | 17 | OnInit(system); |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | void ControllerBase::DeactivateController() { | 20 | void ControllerBase::DeactivateController() { |
diff --git a/src/core/hle/service/hid/controllers/controller_base.h b/src/core/hle/service/hid/controllers/controller_base.h index 5e5097a03..7abe24f1d 100644 --- a/src/core/hle/service/hid/controllers/controller_base.h +++ b/src/core/hle/service/hid/controllers/controller_base.h | |||
| @@ -11,6 +11,10 @@ namespace Core::Timing { | |||
| 11 | class CoreTiming; | 11 | class CoreTiming; |
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | namespace Core { | ||
| 15 | class System; | ||
| 16 | } | ||
| 17 | |||
| 14 | namespace Service::HID { | 18 | namespace Service::HID { |
| 15 | class ControllerBase { | 19 | class ControllerBase { |
| 16 | public: | 20 | public: |
| @@ -18,7 +22,7 @@ public: | |||
| 18 | virtual ~ControllerBase(); | 22 | virtual ~ControllerBase(); |
| 19 | 23 | ||
| 20 | // Called when the controller is initialized | 24 | // Called when the controller is initialized |
| 21 | virtual void OnInit() = 0; | 25 | virtual void OnInit(Core::System& system) = 0; |
| 22 | 26 | ||
| 23 | // When the controller is released | 27 | // When the controller is released |
| 24 | virtual void OnRelease() = 0; | 28 | virtual void OnRelease() = 0; |
| @@ -30,7 +34,7 @@ public: | |||
| 30 | // Called when input devices should be loaded | 34 | // Called when input devices should be loaded |
| 31 | virtual void OnLoadInputDevices() = 0; | 35 | virtual void OnLoadInputDevices() = 0; |
| 32 | 36 | ||
| 33 | void ActivateController(); | 37 | void ActivateController(Core::System& system); |
| 34 | 38 | ||
| 35 | void DeactivateController(); | 39 | void DeactivateController(); |
| 36 | 40 | ||
diff --git a/src/core/hle/service/hid/controllers/debug_pad.cpp b/src/core/hle/service/hid/controllers/debug_pad.cpp index c5c2e032a..2c5528b67 100644 --- a/src/core/hle/service/hid/controllers/debug_pad.cpp +++ b/src/core/hle/service/hid/controllers/debug_pad.cpp | |||
| @@ -17,7 +17,7 @@ enum class JoystickId : std::size_t { Joystick_Left, Joystick_Right }; | |||
| 17 | Controller_DebugPad::Controller_DebugPad() = default; | 17 | Controller_DebugPad::Controller_DebugPad() = default; |
| 18 | Controller_DebugPad::~Controller_DebugPad() = default; | 18 | Controller_DebugPad::~Controller_DebugPad() = default; |
| 19 | 19 | ||
| 20 | void Controller_DebugPad::OnInit() {} | 20 | void Controller_DebugPad::OnInit(Core::System& system) {} |
| 21 | 21 | ||
| 22 | void Controller_DebugPad::OnRelease() {} | 22 | void Controller_DebugPad::OnRelease() {} |
| 23 | 23 | ||
diff --git a/src/core/hle/service/hid/controllers/debug_pad.h b/src/core/hle/service/hid/controllers/debug_pad.h index e584b92ec..629d6d582 100644 --- a/src/core/hle/service/hid/controllers/debug_pad.h +++ b/src/core/hle/service/hid/controllers/debug_pad.h | |||
| @@ -20,7 +20,7 @@ public: | |||
| 20 | ~Controller_DebugPad() override; | 20 | ~Controller_DebugPad() override; |
| 21 | 21 | ||
| 22 | // Called when the controller is initialized | 22 | // Called when the controller is initialized |
| 23 | void OnInit() override; | 23 | void OnInit(Core::System& system) override; |
| 24 | 24 | ||
| 25 | // When the controller is released | 25 | // When the controller is released |
| 26 | void OnRelease() override; | 26 | void OnRelease() override; |
diff --git a/src/core/hle/service/hid/controllers/gesture.cpp b/src/core/hle/service/hid/controllers/gesture.cpp index a179252e3..c01fd6d4e 100644 --- a/src/core/hle/service/hid/controllers/gesture.cpp +++ b/src/core/hle/service/hid/controllers/gesture.cpp | |||
| @@ -13,7 +13,7 @@ constexpr std::size_t SHARED_MEMORY_OFFSET = 0x3BA00; | |||
| 13 | Controller_Gesture::Controller_Gesture() = default; | 13 | Controller_Gesture::Controller_Gesture() = default; |
| 14 | Controller_Gesture::~Controller_Gesture() = default; | 14 | Controller_Gesture::~Controller_Gesture() = default; |
| 15 | 15 | ||
| 16 | void Controller_Gesture::OnInit() {} | 16 | void Controller_Gesture::OnInit(Core::System& system) {} |
| 17 | 17 | ||
| 18 | void Controller_Gesture::OnRelease() {} | 18 | void Controller_Gesture::OnRelease() {} |
| 19 | 19 | ||
diff --git a/src/core/hle/service/hid/controllers/gesture.h b/src/core/hle/service/hid/controllers/gesture.h index f305fe90f..c3827fa00 100644 --- a/src/core/hle/service/hid/controllers/gesture.h +++ b/src/core/hle/service/hid/controllers/gesture.h | |||
| @@ -16,7 +16,7 @@ public: | |||
| 16 | ~Controller_Gesture() override; | 16 | ~Controller_Gesture() override; |
| 17 | 17 | ||
| 18 | // Called when the controller is initialized | 18 | // Called when the controller is initialized |
| 19 | void OnInit() override; | 19 | void OnInit(Core::System& system) override; |
| 20 | 20 | ||
| 21 | // When the controller is released | 21 | // When the controller is released |
| 22 | void OnRelease() override; | 22 | void OnRelease() override; |
diff --git a/src/core/hle/service/hid/controllers/keyboard.cpp b/src/core/hle/service/hid/controllers/keyboard.cpp index 92d7bfb52..b3fbb7962 100644 --- a/src/core/hle/service/hid/controllers/keyboard.cpp +++ b/src/core/hle/service/hid/controllers/keyboard.cpp | |||
| @@ -15,7 +15,7 @@ constexpr u8 KEYS_PER_BYTE = 8; | |||
| 15 | Controller_Keyboard::Controller_Keyboard() = default; | 15 | Controller_Keyboard::Controller_Keyboard() = default; |
| 16 | Controller_Keyboard::~Controller_Keyboard() = default; | 16 | Controller_Keyboard::~Controller_Keyboard() = default; |
| 17 | 17 | ||
| 18 | void Controller_Keyboard::OnInit() {} | 18 | void Controller_Keyboard::OnInit(Core::System& system) {} |
| 19 | 19 | ||
| 20 | void Controller_Keyboard::OnRelease() {} | 20 | void Controller_Keyboard::OnRelease() {} |
| 21 | 21 | ||
diff --git a/src/core/hle/service/hid/controllers/keyboard.h b/src/core/hle/service/hid/controllers/keyboard.h index 73cd2c7bb..a594706a9 100644 --- a/src/core/hle/service/hid/controllers/keyboard.h +++ b/src/core/hle/service/hid/controllers/keyboard.h | |||
| @@ -19,7 +19,7 @@ public: | |||
| 19 | ~Controller_Keyboard() override; | 19 | ~Controller_Keyboard() override; |
| 20 | 20 | ||
| 21 | // Called when the controller is initialized | 21 | // Called when the controller is initialized |
| 22 | void OnInit() override; | 22 | void OnInit(Core::System& system) override; |
| 23 | 23 | ||
| 24 | // When the controller is released | 24 | // When the controller is released |
| 25 | void OnRelease() override; | 25 | void OnRelease() override; |
diff --git a/src/core/hle/service/hid/controllers/mouse.cpp b/src/core/hle/service/hid/controllers/mouse.cpp index 11ab096d9..fd3f91e65 100644 --- a/src/core/hle/service/hid/controllers/mouse.cpp +++ b/src/core/hle/service/hid/controllers/mouse.cpp | |||
| @@ -14,7 +14,7 @@ constexpr std::size_t SHARED_MEMORY_OFFSET = 0x3400; | |||
| 14 | Controller_Mouse::Controller_Mouse() = default; | 14 | Controller_Mouse::Controller_Mouse() = default; |
| 15 | Controller_Mouse::~Controller_Mouse() = default; | 15 | Controller_Mouse::~Controller_Mouse() = default; |
| 16 | 16 | ||
| 17 | void Controller_Mouse::OnInit() {} | 17 | void Controller_Mouse::OnInit(Core::System& system) {} |
| 18 | void Controller_Mouse::OnRelease() {} | 18 | void Controller_Mouse::OnRelease() {} |
| 19 | 19 | ||
| 20 | void Controller_Mouse::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* data, | 20 | void Controller_Mouse::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* data, |
diff --git a/src/core/hle/service/hid/controllers/mouse.h b/src/core/hle/service/hid/controllers/mouse.h index 9d46eecbe..df3a17491 100644 --- a/src/core/hle/service/hid/controllers/mouse.h +++ b/src/core/hle/service/hid/controllers/mouse.h | |||
| @@ -18,7 +18,7 @@ public: | |||
| 18 | ~Controller_Mouse() override; | 18 | ~Controller_Mouse() override; |
| 19 | 19 | ||
| 20 | // Called when the controller is initialized | 20 | // Called when the controller is initialized |
| 21 | void OnInit() override; | 21 | void OnInit(Core::System& system) override; |
| 22 | 22 | ||
| 23 | // When the controller is released | 23 | // When the controller is released |
| 24 | void OnRelease() override; | 24 | void OnRelease() override; |
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index e47fe8188..104924d03 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -167,8 +167,8 @@ void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) { | |||
| 167 | controller.battery_level[2] = BATTERY_FULL; | 167 | controller.battery_level[2] = BATTERY_FULL; |
| 168 | } | 168 | } |
| 169 | 169 | ||
| 170 | void Controller_NPad::OnInit() { | 170 | void Controller_NPad::OnInit(Core::System& system) { |
| 171 | auto& kernel = Core::System::GetInstance().Kernel(); | 171 | auto& kernel = system.Kernel(); |
| 172 | styleset_changed_event = Kernel::WritableEvent::CreateEventPair( | 172 | styleset_changed_event = Kernel::WritableEvent::CreateEventPair( |
| 173 | kernel, Kernel::ResetType::Automatic, "npad:NpadStyleSetChanged"); | 173 | kernel, Kernel::ResetType::Automatic, "npad:NpadStyleSetChanged"); |
| 174 | 174 | ||
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index f28b36806..755739700 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h | |||
| @@ -24,7 +24,7 @@ public: | |||
| 24 | ~Controller_NPad() override; | 24 | ~Controller_NPad() override; |
| 25 | 25 | ||
| 26 | // Called when the controller is initialized | 26 | // Called when the controller is initialized |
| 27 | void OnInit() override; | 27 | void OnInit(Core::System& system) override; |
| 28 | 28 | ||
| 29 | // When the controller is released | 29 | // When the controller is released |
| 30 | void OnRelease() override; | 30 | void OnRelease() override; |
diff --git a/src/core/hle/service/hid/controllers/stubbed.cpp b/src/core/hle/service/hid/controllers/stubbed.cpp index 946948f5e..5de75c958 100644 --- a/src/core/hle/service/hid/controllers/stubbed.cpp +++ b/src/core/hle/service/hid/controllers/stubbed.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::HID { | |||
| 12 | Controller_Stubbed::Controller_Stubbed() = default; | 12 | Controller_Stubbed::Controller_Stubbed() = default; |
| 13 | Controller_Stubbed::~Controller_Stubbed() = default; | 13 | Controller_Stubbed::~Controller_Stubbed() = default; |
| 14 | 14 | ||
| 15 | void Controller_Stubbed::OnInit() {} | 15 | void Controller_Stubbed::OnInit(Core::System& system) {} |
| 16 | 16 | ||
| 17 | void Controller_Stubbed::OnRelease() {} | 17 | void Controller_Stubbed::OnRelease() {} |
| 18 | 18 | ||
diff --git a/src/core/hle/service/hid/controllers/stubbed.h b/src/core/hle/service/hid/controllers/stubbed.h index 24469f03e..af636bae3 100644 --- a/src/core/hle/service/hid/controllers/stubbed.h +++ b/src/core/hle/service/hid/controllers/stubbed.h | |||
| @@ -14,7 +14,7 @@ public: | |||
| 14 | ~Controller_Stubbed() override; | 14 | ~Controller_Stubbed() override; |
| 15 | 15 | ||
| 16 | // Called when the controller is initialized | 16 | // Called when the controller is initialized |
| 17 | void OnInit() override; | 17 | void OnInit(Core::System& system) override; |
| 18 | 18 | ||
| 19 | // When the controller is released | 19 | // When the controller is released |
| 20 | void OnRelease() override; | 20 | void OnRelease() override; |
diff --git a/src/core/hle/service/hid/controllers/touchscreen.cpp b/src/core/hle/service/hid/controllers/touchscreen.cpp index 1a8445a43..ea8dffaab 100644 --- a/src/core/hle/service/hid/controllers/touchscreen.cpp +++ b/src/core/hle/service/hid/controllers/touchscreen.cpp | |||
| @@ -16,7 +16,7 @@ constexpr std::size_t SHARED_MEMORY_OFFSET = 0x400; | |||
| 16 | Controller_Touchscreen::Controller_Touchscreen() = default; | 16 | Controller_Touchscreen::Controller_Touchscreen() = default; |
| 17 | Controller_Touchscreen::~Controller_Touchscreen() = default; | 17 | Controller_Touchscreen::~Controller_Touchscreen() = default; |
| 18 | 18 | ||
| 19 | void Controller_Touchscreen::OnInit() {} | 19 | void Controller_Touchscreen::OnInit(Core::System& system) {} |
| 20 | 20 | ||
| 21 | void Controller_Touchscreen::OnRelease() {} | 21 | void Controller_Touchscreen::OnRelease() {} |
| 22 | 22 | ||
diff --git a/src/core/hle/service/hid/controllers/touchscreen.h b/src/core/hle/service/hid/controllers/touchscreen.h index 76fc340e9..fdb45fd85 100644 --- a/src/core/hle/service/hid/controllers/touchscreen.h +++ b/src/core/hle/service/hid/controllers/touchscreen.h | |||
| @@ -18,7 +18,7 @@ public: | |||
| 18 | ~Controller_Touchscreen() override; | 18 | ~Controller_Touchscreen() override; |
| 19 | 19 | ||
| 20 | // Called when the controller is initialized | 20 | // Called when the controller is initialized |
| 21 | void OnInit() override; | 21 | void OnInit(Core::System& system) override; |
| 22 | 22 | ||
| 23 | // When the controller is released | 23 | // When the controller is released |
| 24 | void OnRelease() override; | 24 | void OnRelease() override; |
diff --git a/src/core/hle/service/hid/controllers/xpad.cpp b/src/core/hle/service/hid/controllers/xpad.cpp index 1a9da9576..22ee0c7d7 100644 --- a/src/core/hle/service/hid/controllers/xpad.cpp +++ b/src/core/hle/service/hid/controllers/xpad.cpp | |||
| @@ -13,7 +13,7 @@ constexpr std::size_t SHARED_MEMORY_OFFSET = 0x3C00; | |||
| 13 | Controller_XPad::Controller_XPad() = default; | 13 | Controller_XPad::Controller_XPad() = default; |
| 14 | Controller_XPad::~Controller_XPad() = default; | 14 | Controller_XPad::~Controller_XPad() = default; |
| 15 | 15 | ||
| 16 | void Controller_XPad::OnInit() {} | 16 | void Controller_XPad::OnInit(Core::System& system) {} |
| 17 | 17 | ||
| 18 | void Controller_XPad::OnRelease() {} | 18 | void Controller_XPad::OnRelease() {} |
| 19 | 19 | ||
diff --git a/src/core/hle/service/hid/controllers/xpad.h b/src/core/hle/service/hid/controllers/xpad.h index 2864e6617..8522efd50 100644 --- a/src/core/hle/service/hid/controllers/xpad.h +++ b/src/core/hle/service/hid/controllers/xpad.h | |||
| @@ -16,7 +16,7 @@ public: | |||
| 16 | ~Controller_XPad() override; | 16 | ~Controller_XPad() override; |
| 17 | 17 | ||
| 18 | // Called when the controller is initialized | 18 | // Called when the controller is initialized |
| 19 | void OnInit() override; | 19 | void OnInit(Core::System& system) override; |
| 20 | 20 | ||
| 21 | // When the controller is released | 21 | // When the controller is released |
| 22 | void OnRelease() override; | 22 | void OnRelease() override; |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index f8b1ca816..277dfe240 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -42,13 +42,14 @@ constexpr s64 accelerometer_update_ticks = static_cast<s64>(Core::Timing::BASE_C | |||
| 42 | constexpr s64 gyroscope_update_ticks = static_cast<s64>(Core::Timing::BASE_CLOCK_RATE / 100); | 42 | constexpr s64 gyroscope_update_ticks = static_cast<s64>(Core::Timing::BASE_CLOCK_RATE / 100); |
| 43 | constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; | 43 | constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; |
| 44 | 44 | ||
| 45 | IAppletResource::IAppletResource() : ServiceFramework("IAppletResource") { | 45 | IAppletResource::IAppletResource(Core::System& system) |
| 46 | : ServiceFramework("IAppletResource"), system(system) { | ||
| 46 | static const FunctionInfo functions[] = { | 47 | static const FunctionInfo functions[] = { |
| 47 | {0, &IAppletResource::GetSharedMemoryHandle, "GetSharedMemoryHandle"}, | 48 | {0, &IAppletResource::GetSharedMemoryHandle, "GetSharedMemoryHandle"}, |
| 48 | }; | 49 | }; |
| 49 | RegisterHandlers(functions); | 50 | RegisterHandlers(functions); |
| 50 | 51 | ||
| 51 | auto& kernel = Core::System::GetInstance().Kernel(); | 52 | auto& kernel = system.Kernel(); |
| 52 | shared_mem = Kernel::SharedMemory::Create( | 53 | shared_mem = Kernel::SharedMemory::Create( |
| 53 | kernel, nullptr, SHARED_MEMORY_SIZE, Kernel::MemoryPermission::ReadWrite, | 54 | kernel, nullptr, SHARED_MEMORY_SIZE, Kernel::MemoryPermission::ReadWrite, |
| 54 | Kernel::MemoryPermission::Read, 0, Kernel::MemoryRegion::BASE, "HID:SharedMemory"); | 55 | Kernel::MemoryPermission::Read, 0, Kernel::MemoryRegion::BASE, "HID:SharedMemory"); |
| @@ -66,15 +67,15 @@ IAppletResource::IAppletResource() : ServiceFramework("IAppletResource") { | |||
| 66 | MakeController<Controller_Gesture>(HidController::Gesture); | 67 | MakeController<Controller_Gesture>(HidController::Gesture); |
| 67 | 68 | ||
| 68 | // Homebrew doesn't try to activate some controllers, so we activate them by default | 69 | // Homebrew doesn't try to activate some controllers, so we activate them by default |
| 69 | GetController<Controller_NPad>(HidController::NPad).ActivateController(); | 70 | GetController<Controller_NPad>(HidController::NPad).ActivateController(system); |
| 70 | GetController<Controller_Touchscreen>(HidController::Touchscreen).ActivateController(); | 71 | GetController<Controller_Touchscreen>(HidController::Touchscreen).ActivateController(system); |
| 71 | 72 | ||
| 72 | GetController<Controller_Stubbed>(HidController::Unknown1).SetCommonHeaderOffset(0x4c00); | 73 | GetController<Controller_Stubbed>(HidController::Unknown1).SetCommonHeaderOffset(0x4c00); |
| 73 | GetController<Controller_Stubbed>(HidController::Unknown2).SetCommonHeaderOffset(0x4e00); | 74 | GetController<Controller_Stubbed>(HidController::Unknown2).SetCommonHeaderOffset(0x4e00); |
| 74 | GetController<Controller_Stubbed>(HidController::Unknown3).SetCommonHeaderOffset(0x5000); | 75 | GetController<Controller_Stubbed>(HidController::Unknown3).SetCommonHeaderOffset(0x5000); |
| 75 | 76 | ||
| 76 | // Register update callbacks | 77 | // Register update callbacks |
| 77 | auto& core_timing = Core::System::GetInstance().CoreTiming(); | 78 | auto& core_timing = system.CoreTiming(); |
| 78 | pad_update_event = | 79 | pad_update_event = |
| 79 | core_timing.RegisterEvent("HID::UpdatePadCallback", [this](u64 userdata, s64 cycles_late) { | 80 | core_timing.RegisterEvent("HID::UpdatePadCallback", [this](u64 userdata, s64 cycles_late) { |
| 80 | UpdateControllers(userdata, cycles_late); | 81 | UpdateControllers(userdata, cycles_late); |
| @@ -88,7 +89,7 @@ IAppletResource::IAppletResource() : ServiceFramework("IAppletResource") { | |||
| 88 | } | 89 | } |
| 89 | 90 | ||
| 90 | void IAppletResource::ActivateController(HidController controller) { | 91 | void IAppletResource::ActivateController(HidController controller) { |
| 91 | controllers[static_cast<size_t>(controller)]->ActivateController(); | 92 | controllers[static_cast<size_t>(controller)]->ActivateController(system); |
| 92 | } | 93 | } |
| 93 | 94 | ||
| 94 | void IAppletResource::DeactivateController(HidController controller) { | 95 | void IAppletResource::DeactivateController(HidController controller) { |
| @@ -96,7 +97,7 @@ void IAppletResource::DeactivateController(HidController controller) { | |||
| 96 | } | 97 | } |
| 97 | 98 | ||
| 98 | IAppletResource ::~IAppletResource() { | 99 | IAppletResource ::~IAppletResource() { |
| 99 | Core::System::GetInstance().CoreTiming().UnscheduleEvent(pad_update_event, 0); | 100 | system.CoreTiming().UnscheduleEvent(pad_update_event, 0); |
| 100 | } | 101 | } |
| 101 | 102 | ||
| 102 | void IAppletResource::GetSharedMemoryHandle(Kernel::HLERequestContext& ctx) { | 103 | void IAppletResource::GetSharedMemoryHandle(Kernel::HLERequestContext& ctx) { |
| @@ -108,7 +109,7 @@ void IAppletResource::GetSharedMemoryHandle(Kernel::HLERequestContext& ctx) { | |||
| 108 | } | 109 | } |
| 109 | 110 | ||
| 110 | void IAppletResource::UpdateControllers(u64 userdata, s64 cycles_late) { | 111 | void IAppletResource::UpdateControllers(u64 userdata, s64 cycles_late) { |
| 111 | auto& core_timing = Core::System::GetInstance().CoreTiming(); | 112 | auto& core_timing = system.CoreTiming(); |
| 112 | 113 | ||
| 113 | const bool should_reload = Settings::values.is_device_reload_pending.exchange(false); | 114 | const bool should_reload = Settings::values.is_device_reload_pending.exchange(false); |
| 114 | for (const auto& controller : controllers) { | 115 | for (const auto& controller : controllers) { |
| @@ -141,13 +142,13 @@ private: | |||
| 141 | 142 | ||
| 142 | std::shared_ptr<IAppletResource> Hid::GetAppletResource() { | 143 | std::shared_ptr<IAppletResource> Hid::GetAppletResource() { |
| 143 | if (applet_resource == nullptr) { | 144 | if (applet_resource == nullptr) { |
| 144 | applet_resource = std::make_shared<IAppletResource>(); | 145 | applet_resource = std::make_shared<IAppletResource>(system); |
| 145 | } | 146 | } |
| 146 | 147 | ||
| 147 | return applet_resource; | 148 | return applet_resource; |
| 148 | } | 149 | } |
| 149 | 150 | ||
| 150 | Hid::Hid() : ServiceFramework("hid") { | 151 | Hid::Hid(Core::System& system) : ServiceFramework("hid"), system(system) { |
| 151 | // clang-format off | 152 | // clang-format off |
| 152 | static const FunctionInfo functions[] = { | 153 | static const FunctionInfo functions[] = { |
| 153 | {0, &Hid::CreateAppletResource, "CreateAppletResource"}, | 154 | {0, &Hid::CreateAppletResource, "CreateAppletResource"}, |
| @@ -286,7 +287,7 @@ void Hid::CreateAppletResource(Kernel::HLERequestContext& ctx) { | |||
| 286 | LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id); | 287 | LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id); |
| 287 | 288 | ||
| 288 | if (applet_resource == nullptr) { | 289 | if (applet_resource == nullptr) { |
| 289 | applet_resource = std::make_shared<IAppletResource>(); | 290 | applet_resource = std::make_shared<IAppletResource>(system); |
| 290 | } | 291 | } |
| 291 | 292 | ||
| 292 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 293 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| @@ -1053,8 +1054,8 @@ void ReloadInputDevices() { | |||
| 1053 | Settings::values.is_device_reload_pending.store(true); | 1054 | Settings::values.is_device_reload_pending.store(true); |
| 1054 | } | 1055 | } |
| 1055 | 1056 | ||
| 1056 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 1057 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 1057 | std::make_shared<Hid>()->InstallAsService(service_manager); | 1058 | std::make_shared<Hid>(system)->InstallAsService(service_manager); |
| 1058 | std::make_shared<HidBus>()->InstallAsService(service_manager); | 1059 | std::make_shared<HidBus>()->InstallAsService(service_manager); |
| 1059 | std::make_shared<HidDbg>()->InstallAsService(service_manager); | 1060 | std::make_shared<HidDbg>()->InstallAsService(service_manager); |
| 1060 | std::make_shared<HidSys>()->InstallAsService(service_manager); | 1061 | std::make_shared<HidSys>()->InstallAsService(service_manager); |
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h index 2fd6d9fc7..bf8dbdc0e 100644 --- a/src/core/hle/service/hid/hid.h +++ b/src/core/hle/service/hid/hid.h | |||
| @@ -42,7 +42,7 @@ enum class HidController : std::size_t { | |||
| 42 | 42 | ||
| 43 | class IAppletResource final : public ServiceFramework<IAppletResource> { | 43 | class IAppletResource final : public ServiceFramework<IAppletResource> { |
| 44 | public: | 44 | public: |
| 45 | IAppletResource(); | 45 | IAppletResource(Core::System& system); |
| 46 | ~IAppletResource() override; | 46 | ~IAppletResource() override; |
| 47 | 47 | ||
| 48 | void ActivateController(HidController controller); | 48 | void ActivateController(HidController controller); |
| @@ -70,6 +70,7 @@ private: | |||
| 70 | Kernel::SharedPtr<Kernel::SharedMemory> shared_mem; | 70 | Kernel::SharedPtr<Kernel::SharedMemory> shared_mem; |
| 71 | 71 | ||
| 72 | Core::Timing::EventType* pad_update_event; | 72 | Core::Timing::EventType* pad_update_event; |
| 73 | Core::System& system; | ||
| 73 | 74 | ||
| 74 | std::array<std::unique_ptr<ControllerBase>, static_cast<size_t>(HidController::MaxControllers)> | 75 | std::array<std::unique_ptr<ControllerBase>, static_cast<size_t>(HidController::MaxControllers)> |
| 75 | controllers{}; | 76 | controllers{}; |
| @@ -77,7 +78,7 @@ private: | |||
| 77 | 78 | ||
| 78 | class Hid final : public ServiceFramework<Hid> { | 79 | class Hid final : public ServiceFramework<Hid> { |
| 79 | public: | 80 | public: |
| 80 | Hid(); | 81 | Hid(Core::System& system); |
| 81 | ~Hid() override; | 82 | ~Hid() override; |
| 82 | 83 | ||
| 83 | std::shared_ptr<IAppletResource> GetAppletResource(); | 84 | std::shared_ptr<IAppletResource> GetAppletResource(); |
| @@ -126,12 +127,13 @@ private: | |||
| 126 | void SwapNpadAssignment(Kernel::HLERequestContext& ctx); | 127 | void SwapNpadAssignment(Kernel::HLERequestContext& ctx); |
| 127 | 128 | ||
| 128 | std::shared_ptr<IAppletResource> applet_resource; | 129 | std::shared_ptr<IAppletResource> applet_resource; |
| 130 | Core::System& system; | ||
| 129 | }; | 131 | }; |
| 130 | 132 | ||
| 131 | /// Reload input devices. Used when input configuration changed | 133 | /// Reload input devices. Used when input configuration changed |
| 132 | void ReloadInputDevices(); | 134 | void ReloadInputDevices(); |
| 133 | 135 | ||
| 134 | /// Registers all HID services with the specified service manager. | 136 | /// Registers all HID services with the specified service manager. |
| 135 | void InstallInterfaces(SM::ServiceManager& service_manager); | 137 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
| 136 | 138 | ||
| 137 | } // namespace Service::HID | 139 | } // namespace Service::HID |