From 5298328cb175a17eb9ea534a9d07dc57b42d2d42 Mon Sep 17 00:00:00 2001 From: Michael Maltese Date: Sat, 15 Apr 2017 19:23:19 -0700 Subject: Add headless support on macOS --- Source/Core/InputCommon/ControllerInterface/OSX/OSX.mm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'Source/Core/InputCommon/ControllerInterface/OSX') 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(inIOHIDDeviceRef, name, g_window)); + { + if (g_window) + g_controller_interface.AddDevice( + std::make_shared(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(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"); -- cgit v1.2.3