From 99e85cc27b3141d26b785efe1c180402b0f1a063 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 22 Sep 2022 10:10:20 -0700
Subject: [PATCH] Accidentally reverted
https://github.com/libsdl-org/SDL/commit/172865ff137532123ec06177119be163ba1811f5
---
src/hidapi/mac/hid.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/hidapi/mac/hid.c b/src/hidapi/mac/hid.c
index 35ca3803745..4ea6bdb6a3c 100644
--- a/src/hidapi/mac/hid.c
+++ b/src/hidapi/mac/hid.c
@@ -130,6 +130,7 @@ struct hid_device_list_node
static IOHIDManagerRef hid_mgr = 0x0;
static struct hid_device_list_node *device_list = 0x0;
+static int hid_input_monitoring_denied = 0;
static hid_device *new_hid_device(void)
{
@@ -521,7 +522,11 @@ struct hid_device_info HID_API_EXPORT *hid_enumerate(unsigned short vendor_id,
/* Set up the HID Manager if it hasn't been done */
if (hid_init() < 0)
return NULL;
-
+
+ /* If we don't have permission to open devices, don't enumerate them */
+ if (hid_input_monitoring_denied)
+ return NULL;
+
/* give the IOHIDManager a chance to update itself */
process_pending_events();
@@ -862,6 +867,11 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path, int bExclusive)
return dev;
}
+ else if (ret == kIOReturnNotPermitted) {
+ /* This application doesn't have input monitoring permissions */
+ hid_input_monitoring_denied = 1;
+ goto return_error;
+ }
else {
goto return_error;
}