diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2024-03-11 01:31:30 -0500 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2024-03-11 03:05:52 -0500 |
| commit | 498584ac777ac4fc452a83a4380889ef2c99d216 (patch) | |
| tree | 85ae1be884ea2b7831d1b09dd15f9cfb6fa9b7ef /Source/Core/InputCommon/ControllerInterface | |
| parent | 9941c54911e8ab713aad1f156511bf6552ca4b3b (diff) | |
InputCommon: Add Quartz InputBackend class.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface')
4 files changed, 20 insertions, 17 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp b/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp index 24653acdd1..ba3740214a 100644 --- a/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp +++ b/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp @@ -65,7 +65,7 @@ void ControllerInterface::Initialize(const WindowSystemInfo& wsi) // nothing needed #endif #ifdef CIFACE_USE_OSX -// nothing needed for Quartz + m_input_backends.emplace_back(ciface::Quartz::CreateInputBackend(this)); #endif #ifdef CIFACE_USE_SDL m_input_backends.emplace_back(ciface::SDL::CreateInputBackend(this)); @@ -166,12 +166,6 @@ void ControllerInterface::RefreshDevices(RefreshReason reason) if (m_wsi.type == WindowSystemType::X11) ciface::XInput2::PopulateDevices(m_wsi.render_window); #endif -#ifdef CIFACE_USE_OSX - if (m_wsi.type == WindowSystemType::MacOS) - { - ciface::Quartz::PopulateDevices(m_wsi.render_window); - } -#endif #ifdef CIFACE_USE_ANDROID ciface::Android::PopulateDevices(); #endif @@ -223,9 +217,6 @@ void ControllerInterface::Shutdown() #ifdef CIFACE_USE_XLIB // nothing needed #endif -#ifdef CIFACE_USE_OSX - ciface::Quartz::DeInit(); -#endif #ifdef CIFACE_USE_ANDROID ciface::Android::Shutdown(); #endif diff --git a/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.h b/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.h index 8818425344..34219e9828 100644 --- a/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.h +++ b/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.h @@ -3,8 +3,9 @@ #pragma once +#include "InputCommon/ControllerInterface/InputBackend.h" + namespace ciface::Quartz { -void PopulateDevices(void* window); -void DeInit(); +std::unique_ptr<ciface::InputBackend> CreateInputBackend(ControllerInterface* controller_interface); } // namespace ciface::Quartz diff --git a/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm b/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm index 22dc4074d9..75054f08b9 100644 --- a/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm +++ b/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm @@ -7,15 +7,25 @@ namespace ciface::Quartz { -void PopulateDevices(void* window) +class InputBackend final : public ciface::InputBackend { - if (!window) - return; +public: + using ciface::InputBackend::InputBackend; + void PopulateDevices() override; +}; - g_controller_interface.AddDevice(std::make_shared<KeyboardAndMouse>(window)); +std::unique_ptr<ciface::InputBackend> CreateInputBackend(ControllerInterface* controller_interface) +{ + return std::make_unique<InputBackend>(controller_interface); } -void DeInit() +void InputBackend::PopulateDevices() { + const WindowSystemInfo wsi = GetControllerInterface().GetWindowSystemInfo(); + if (wsi.type != WindowSystemType::MacOS) + return; + + GetControllerInterface().AddDevice(std::make_shared<KeyboardAndMouse>(wsi.render_window)); } + } // namespace ciface::Quartz diff --git a/Source/Core/InputCommon/ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm b/Source/Core/InputCommon/ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm index e41c370edf..b21eb48ab4 100644 --- a/Source/Core/InputCommon/ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm +++ b/Source/Core/InputCommon/ControllerInterface/Quartz/QuartzKeyboardAndMouse.mm @@ -12,6 +12,7 @@ #include "Core/Host.h" #include "InputCommon/ControllerInterface/ControllerInterface.h" +#include "InputCommon/ControllerInterface/Quartz/Quartz.h" /// Helper class to get window position data from threads other than the main thread @interface DolWindowPositionObserver : NSObject |
