summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface
diff options
context:
space:
mode:
authorshuffle2 <godisgovernment@gmail.com>2017-06-05 20:49:02 -0700
committerGitHub <noreply@github.com>2017-06-05 20:49:02 -0700
commit192fec50b9e3a98aa625684c0a6bd016bfedbcd5 (patch)
tree842cb3abfb59fbe8f6938799b305a29475ed8df7 /Source/Core/InputCommon/ControllerInterface
parent9a9b0eed7202bd052df92113072ef7e46a0b2582 (diff)
parentc63925dc218aaa116328716e57af576eb39178bf (diff)
Merge pull request #5276 from ligfx/macosheadless
Add headless support on macOS
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface')
-rw-r--r--Source/Core/InputCommon/ControllerInterface/OSX/OSX.mm14
-rw-r--r--Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm3
2 files changed, 14 insertions, 3 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/OSX/OSX.mm b/Source/Core/InputCommon/ControllerInterface/OSX/OSX.mm
index 900fc29a70..948e2b85fa 100644
--- a/Source/Core/InputCommon/ControllerInterface/OSX/OSX.mm
+++ b/Source/Core/InputCommon/ControllerInterface/OSX/OSX.mm
@@ -173,13 +173,21 @@ static void DeviceMatchingCallback(void* inContext, IOReturn inResult, void* inS
// Add a device if it's of a type we want
if (IOHIDDeviceConformsTo(inIOHIDDeviceRef, kHIDPage_GenericDesktop, kHIDUsage_GD_Keyboard))
- g_controller_interface.AddDevice(std::make_shared<Keyboard>(inIOHIDDeviceRef, name, g_window));
+ {
+ if (g_window)
+ g_controller_interface.AddDevice(
+ std::make_shared<Keyboard>(inIOHIDDeviceRef, name, g_window));
+ }
#if 0
else if (IOHIDDeviceConformsTo(inIOHIDDeviceRef, kHIDPage_GenericDesktop, kHIDUsage_GD_Mouse))
+ {
g_controller_interface.AddDevice(new Mouse(inIOHIDDeviceRef, name));
+ }
#endif
else
+ {
g_controller_interface.AddDevice(std::make_shared<Joystick>(inIOHIDDeviceRef, name));
+ }
NOTICE_LOG(SERIALINTERFACE, "Added device: %s", name.c_str());
g_controller_interface.InvokeHotplugCallbacks();
@@ -187,12 +195,12 @@ static void DeviceMatchingCallback(void* inContext, IOReturn inResult, void* inS
void Init(void* window)
{
+ g_window = window;
+
HIDManager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone);
if (!HIDManager)
ERROR_LOG(SERIALINTERFACE, "Failed to create HID Manager reference");
- g_window = window;
-
IOHIDManagerSetDeviceMatching(HIDManager, nullptr);
if (IOHIDManagerOpen(HIDManager, kIOHIDOptionsTypeNone) != kIOReturnSuccess)
ERROR_LOG(SERIALINTERFACE, "Failed to open HID Manager");
diff --git a/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm b/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm
index a090b421a5..30802182a8 100644
--- a/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm
+++ b/Source/Core/InputCommon/ControllerInterface/Quartz/Quartz.mm
@@ -12,6 +12,9 @@ namespace Quartz
{
void PopulateDevices(void* window)
{
+ if (!window)
+ return;
+
g_controller_interface.AddDevice(std::make_shared<KeyboardAndMouse>(window));
}