|  |  |  | @ -57,7 +57,7 @@ static void getElementsCFArrayHandler(const void* value, void* parameter); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Adds an element to the specified joystick | 
			
		
	
		
			
				
					|  |  |  |  | // | 
			
		
	
		
			
				
					|  |  |  |  | static void addJoystickElement(_GLFWjoydeviceNS* js, | 
			
		
	
		
			
				
					|  |  |  |  | static void addJoystickElement(_GLFWjoystickNS* js, | 
			
		
	
		
			
				
					|  |  |  |  |                                IOHIDElementRef elementRef) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDElementType elementType; | 
			
		
	
	
		
			
				
					|  |  |  | @ -126,14 +126,14 @@ static void getElementsCFArrayHandler(const void* value, void* parameter) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     if (CFGetTypeID(value) == IOHIDElementGetTypeID()) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         addJoystickElement((_GLFWjoydeviceNS*) parameter, | 
			
		
	
		
			
				
					|  |  |  |  |         addJoystickElement((_GLFWjoystickNS*) parameter, | 
			
		
	
		
			
				
					|  |  |  |  |                            (IOHIDElementRef) value); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Returns the value of the specified element of the specified joystick | 
			
		
	
		
			
				
					|  |  |  |  | // | 
			
		
	
		
			
				
					|  |  |  |  | static long getElementValue(_GLFWjoydeviceNS* js, _GLFWjoyelementNS* element) | 
			
		
	
		
			
				
					|  |  |  |  | static long getElementValue(_GLFWjoystickNS* js, _GLFWjoyelementNS* element) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     IOReturn result = kIOReturnSuccess; | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDValueRef valueRef; | 
			
		
	
	
		
			
				
					|  |  |  | @ -163,7 +163,7 @@ static long getElementValue(_GLFWjoydeviceNS* js, _GLFWjoyelementNS* element) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Removes the specified joystick | 
			
		
	
		
			
				
					|  |  |  |  | // | 
			
		
	
		
			
				
					|  |  |  |  | static void removeJoystick(_GLFWjoydeviceNS* js) | 
			
		
	
		
			
				
					|  |  |  |  | static void removeJoystick(_GLFWjoystickNS* js) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     int i; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -188,14 +188,14 @@ static void removeJoystick(_GLFWjoydeviceNS* js) | 
			
		
	
		
			
				
					|  |  |  |  |     free(js->axes); | 
			
		
	
		
			
				
					|  |  |  |  |     free(js->buttons); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     memset(js, 0, sizeof(_GLFWjoydeviceNS)); | 
			
		
	
		
			
				
					|  |  |  |  |     memset(js, 0, sizeof(_GLFWjoystickNS)); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     _glfwInputJoystickChange(js - _glfw.ns_js.js, GLFW_DISCONNECTED); | 
			
		
	
		
			
				
					|  |  |  |  |     _glfwInputJoystickChange(js - _glfw.ns_js, GLFW_DISCONNECTED); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Polls for joystick axis events and updates GLFW state | 
			
		
	
		
			
				
					|  |  |  |  | // | 
			
		
	
		
			
				
					|  |  |  |  | static GLFWbool pollJoystickAxisEvents(_GLFWjoydeviceNS* js) | 
			
		
	
		
			
				
					|  |  |  |  | static GLFWbool pollJoystickAxisEvents(_GLFWjoystickNS* js) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     CFIndex i; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -221,7 +221,7 @@ static GLFWbool pollJoystickAxisEvents(_GLFWjoydeviceNS* js) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Polls for joystick button events and updates GLFW state | 
			
		
	
		
			
				
					|  |  |  |  | // | 
			
		
	
		
			
				
					|  |  |  |  | static GLFWbool pollJoystickButtonEvents(_GLFWjoydeviceNS* js) | 
			
		
	
		
			
				
					|  |  |  |  | static GLFWbool pollJoystickButtonEvents(_GLFWjoystickNS* js) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     CFIndex i; | 
			
		
	
		
			
				
					|  |  |  |  |     int buttonIndex = 0; | 
			
		
	
	
		
			
				
					|  |  |  | @ -271,25 +271,25 @@ static void matchCallback(void* context, | 
			
		
	
		
			
				
					|  |  |  |  |                           void* sender, | 
			
		
	
		
			
				
					|  |  |  |  |                           IOHIDDeviceRef deviceRef) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoydeviceNS* js; | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoystickNS* js; | 
			
		
	
		
			
				
					|  |  |  |  |     int joy; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     for (joy = GLFW_JOYSTICK_1;  joy <= GLFW_JOYSTICK_LAST;  joy++) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         if (_glfw.ns_js.js[joy].present && _glfw.ns_js.js[joy].deviceRef == deviceRef) | 
			
		
	
		
			
				
					|  |  |  |  |         if (_glfw.ns_js[joy].present && _glfw.ns_js[joy].deviceRef == deviceRef) | 
			
		
	
		
			
				
					|  |  |  |  |             return; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     for (joy = GLFW_JOYSTICK_1;  joy <= GLFW_JOYSTICK_LAST;  joy++) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         if (!_glfw.ns_js.js[joy].present) | 
			
		
	
		
			
				
					|  |  |  |  |         if (!_glfw.ns_js[joy].present) | 
			
		
	
		
			
				
					|  |  |  |  |             break; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if (joy > GLFW_JOYSTICK_LAST) | 
			
		
	
		
			
				
					|  |  |  |  |         return; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     js = _glfw.ns_js.js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     js = _glfw.ns_js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     js->present = GLFW_TRUE; | 
			
		
	
		
			
				
					|  |  |  |  |     js->deviceRef = deviceRef; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -338,9 +338,9 @@ static void removeCallback(void* context, | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     for (joy = GLFW_JOYSTICK_1;  joy <= GLFW_JOYSTICK_LAST;  joy++) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         if (_glfw.ns_js.js[joy].deviceRef == deviceRef) | 
			
		
	
		
			
				
					|  |  |  |  |         if (_glfw.ns_js[joy].deviceRef == deviceRef) | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             removeJoystick(_glfw.ns_js.js + joy); | 
			
		
	
		
			
				
					|  |  |  |  |             removeJoystick(_glfw.ns_js + joy); | 
			
		
	
		
			
				
					|  |  |  |  |             break; | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | @ -397,8 +397,8 @@ void _glfwInitJoysticksNS(void) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     CFMutableArrayRef matchingCFArrayRef; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     _glfw.ns_js.managerRef = IOHIDManagerCreate(kCFAllocatorDefault, | 
			
		
	
		
			
				
					|  |  |  |  |                                                 kIOHIDOptionsTypeNone); | 
			
		
	
		
			
				
					|  |  |  |  |     _glfw.ns.hidManager = IOHIDManagerCreate(kCFAllocatorDefault, | 
			
		
	
		
			
				
					|  |  |  |  |                                              kIOHIDOptionsTypeNone); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     matchingCFArrayRef = CFArrayCreateMutable(kCFAllocatorDefault, | 
			
		
	
		
			
				
					|  |  |  |  |                                               0, | 
			
		
	
	
		
			
				
					|  |  |  | @ -431,21 +431,21 @@ void _glfwInitJoysticksNS(void) | 
			
		
	
		
			
				
					|  |  |  |  |             CFRelease(matchingCFDictRef); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         IOHIDManagerSetDeviceMatchingMultiple(_glfw.ns_js.managerRef, | 
			
		
	
		
			
				
					|  |  |  |  |         IOHIDManagerSetDeviceMatchingMultiple(_glfw.ns.hidManager, | 
			
		
	
		
			
				
					|  |  |  |  |                                               matchingCFArrayRef); | 
			
		
	
		
			
				
					|  |  |  |  |         CFRelease(matchingCFArrayRef); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDManagerRegisterDeviceMatchingCallback(_glfw.ns_js.managerRef, | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDManagerRegisterDeviceMatchingCallback(_glfw.ns.hidManager, | 
			
		
	
		
			
				
					|  |  |  |  |                                                &matchCallback, NULL); | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDManagerRegisterDeviceRemovalCallback(_glfw.ns_js.managerRef, | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDManagerRegisterDeviceRemovalCallback(_glfw.ns.hidManager, | 
			
		
	
		
			
				
					|  |  |  |  |                                               &removeCallback, NULL); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDManagerScheduleWithRunLoop(_glfw.ns_js.managerRef, | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDManagerScheduleWithRunLoop(_glfw.ns.hidManager, | 
			
		
	
		
			
				
					|  |  |  |  |                                     CFRunLoopGetMain(), | 
			
		
	
		
			
				
					|  |  |  |  |                                     kCFRunLoopDefaultMode); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDManagerOpen(_glfw.ns_js.managerRef, kIOHIDOptionsTypeNone); | 
			
		
	
		
			
				
					|  |  |  |  |     IOHIDManagerOpen(_glfw.ns.hidManager, kIOHIDOptionsTypeNone); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Execute the run loop once in order to register any initially-attached | 
			
		
	
		
			
				
					|  |  |  |  |     // joysticks | 
			
		
	
	
		
			
				
					|  |  |  | @ -460,12 +460,12 @@ void _glfwTerminateJoysticksNS(void) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     for (joy = GLFW_JOYSTICK_1;  joy <= GLFW_JOYSTICK_LAST;  joy++) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         _GLFWjoydeviceNS* js = _glfw.ns_js.js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |         _GLFWjoystickNS* js = _glfw.ns_js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |         removeJoystick(js); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     CFRelease(_glfw.ns_js.managerRef); | 
			
		
	
		
			
				
					|  |  |  |  |     _glfw.ns_js.managerRef = NULL; | 
			
		
	
		
			
				
					|  |  |  |  |     CFRelease(_glfw.ns.hidManager); | 
			
		
	
		
			
				
					|  |  |  |  |     _glfw.ns.hidManager = NULL; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -475,13 +475,13 @@ void _glfwTerminateJoysticksNS(void) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | int _glfwPlatformJoystickPresent(int joy) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoydeviceNS* js = _glfw.ns_js.js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoystickNS* js = _glfw.ns_js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     return js->present; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const float* _glfwPlatformGetJoystickAxes(int joy, int* count) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoydeviceNS* js = _glfw.ns_js.js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoystickNS* js = _glfw.ns_js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     if (!pollJoystickAxisEvents(js)) | 
			
		
	
		
			
				
					|  |  |  |  |         return NULL; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -491,7 +491,7 @@ const float* _glfwPlatformGetJoystickAxes(int joy, int* count) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const unsigned char* _glfwPlatformGetJoystickButtons(int joy, int* count) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoydeviceNS* js = _glfw.ns_js.js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoystickNS* js = _glfw.ns_js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     if (!pollJoystickButtonEvents(js)) | 
			
		
	
		
			
				
					|  |  |  |  |         return NULL; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -502,7 +502,7 @@ const unsigned char* _glfwPlatformGetJoystickButtons(int joy, int* count) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const char* _glfwPlatformGetJoystickName(int joy) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoydeviceNS* js = _glfw.ns_js.js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     _GLFWjoystickNS* js = _glfw.ns_js + joy; | 
			
		
	
		
			
				
					|  |  |  |  |     if (!js->present) | 
			
		
	
		
			
				
					|  |  |  |  |         return NULL; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |