|
@@ -37,9 +37,6 @@
|
|
|
|
|
|
#define VALVE_USB_VID 0x28DE
|
|
|
|
|
|
-/* As defined in AppKit.h, but we don't need the entire AppKit for a single constant. */
|
|
|
-extern const double NSAppKitVersionNumber;
|
|
|
-
|
|
|
/* Barrier implementation because Mac OSX doesn't have pthread_barrier.
|
|
|
It also doesn't have clock_gettime(). So much for POSIX and SUSv2.
|
|
|
This implementation came from Brent Priddy and was posted on
|
|
@@ -134,7 +131,6 @@ struct hid_device_list_node
|
|
|
};
|
|
|
|
|
|
static IOHIDManagerRef hid_mgr = 0x0;
|
|
|
-static int is_macos_10_10_or_greater = 0;
|
|
|
static struct hid_device_list_node *device_list = 0x0;
|
|
|
|
|
|
static hid_device *new_hid_device(void)
|
|
@@ -489,7 +485,6 @@ static int init_hid_manager(void)
|
|
|
int HID_API_EXPORT hid_init(void)
|
|
|
{
|
|
|
if (!hid_mgr) {
|
|
|
- is_macos_10_10_or_greater = (NSAppKitVersionNumber >= 1343); /* NSAppKitVersionNumber10_10 */
|
|
|
return init_hid_manager();
|
|
|
}
|
|
|
|
|
@@ -1143,10 +1138,8 @@ void HID_API_EXPORT hid_close(hid_device *dev)
|
|
|
if (!dev)
|
|
|
return;
|
|
|
|
|
|
- /* Disconnect the report callback before close.
|
|
|
- See comment below.
|
|
|
- */
|
|
|
- if (is_macos_10_10_or_greater || !dev->disconnected) {
|
|
|
+ /* Disconnect the report callback before close. */
|
|
|
+ if (!dev->disconnected) {
|
|
|
IOHIDDeviceRegisterInputReportCallback(
|
|
|
dev->device_handle, dev->input_report_buf, dev->max_input_report_len,
|
|
|
NULL, dev);
|
|
@@ -1169,14 +1162,8 @@ void HID_API_EXPORT hid_close(hid_device *dev)
|
|
|
|
|
|
/* Close the OS handle to the device, but only if it's not
|
|
|
been unplugged. If it's been unplugged, then calling
|
|
|
- IOHIDDeviceClose() will crash.
|
|
|
-
|
|
|
- UPD: The crash part was true in/until some version of macOS.
|
|
|
- Starting with macOS 10.15, there is an opposite effect in some environments:
|
|
|
- crash happenes if IOHIDDeviceClose() is not called.
|
|
|
- Not leaking a resource in all tested environments.
|
|
|
- */
|
|
|
- if (is_macos_10_10_or_greater || !dev->disconnected) {
|
|
|
+ IOHIDDeviceClose() will crash. */
|
|
|
+ if (!dev->disconnected) {
|
|
|
IOHIDDeviceClose(dev->device_handle, kIOHIDOptionsTypeNone);
|
|
|
}
|
|
|
|