SDL: Revert "Don't leak device handle in macOS 10.10 or newer"

From 5b951141d2a56863b7f199b0952192a0cee53428 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 29 Apr 2025 09:48:44 -0700
Subject: [PATCH] Revert "Don't leak device handle in macOS 10.10 or newer"

This reverts commit 5925c27efb872be854bda4616ad5ce3e7db23927.

Fixes https://github.com/libsdl-org/SDL/issues/12807
---
 src/hidapi/configure.ac        |  2 +-
 src/hidapi/mac/Makefile-manual |  2 +-
 src/hidapi/mac/hid.c           | 21 ++++-----------------
 3 files changed, 6 insertions(+), 19 deletions(-)

diff --git a/src/hidapi/configure.ac b/src/hidapi/configure.ac
index c3d3dbc1b1dbb..c6747f906ac48 100644
--- a/src/hidapi/configure.ac
+++ b/src/hidapi/configure.ac
@@ -79,7 +79,7 @@ case $host in
 	backend="mac"
 	os="darwin"
 	threads="pthreads"
-	LIBS="${LIBS} -framework IOKit -framework CoreFoundation -framework AppKit"
+	LIBS="${LIBS} -framework IOKit -framework CoreFoundation"
 	;;
 *-freebsd*)
 	AC_MSG_RESULT([ (FreeBSD back-end)])
diff --git a/src/hidapi/mac/Makefile-manual b/src/hidapi/mac/Makefile-manual
index 16052d143fc58..5399b5a70fc62 100644
--- a/src/hidapi/mac/Makefile-manual
+++ b/src/hidapi/mac/Makefile-manual
@@ -14,7 +14,7 @@ COBJS=hid.o
 CPPOBJS=../hidtest/hidtest.o
 OBJS=$(COBJS) $(CPPOBJS)
 CFLAGS+=-I../hidapi -Wall -g -c 
-LIBS=-framework IOKit -framework CoreFoundation -framework AppKit
+LIBS=-framework IOKit -framework CoreFoundation
 
 
 hidtest: $(OBJS)
diff --git a/src/hidapi/mac/hid.c b/src/hidapi/mac/hid.c
index b45767333740b..0dbe4227d21c3 100644
--- a/src/hidapi/mac/hid.c
+++ b/src/hidapi/mac/hid.c
@@ -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);
 	}