Update of /cvsroot/plib/plib/src/js
In directory sc8-pr-cvs1:/tmp/cvs-serv3590/plib/src/js
Modified Files:
Makefile.am js.h jsNone.cxx
Added Files:
jsMacOSX.cxx
Log Message:
Committed numerous patches from 3rd parties:
Added JS support for Mac OS-X.
Removed JS support for HPUX.
Fixes for IRIX sound support.
Compile problems fixed in ul.h.
Load/Save FLT fixed to include byte-swapping.
Several fixes to MDL loader.
Fixed 'frozen particle' bug in ssgaParticleSystem.
--- NEW FILE: jsMacOSX.cxx ---
#include "js.h"
#ifdef UL_MAC_OSX
#include <mach/mach_error.h>
#include <IOKit/hid/IOHIDKeys.h>
#include <IOKit/IOCFPlugIn.h>
#include <CoreFoundation/CoreFoundation.h>
#ifdef MACOS_10_0_4
# include <IOKit/hidsystem/IOHIDUsageTables.h>
#else
/* The header was moved here in MacOS X 10.1 */
# include <Kernel/IOKit/hidsystem/IOHIDUsageTables.h>
#endif
int jsJoystick::kNumDevices = 32 ;
int jsJoystick::numDevices = -1;
io_object_t jsJoystick::ioDevices[kNumDevices];
[...294 lines suppressed...]
}
void jsJoystick::rawRead(int *buttons, float *axes)
{
*buttons = 0;
IOHIDEventStruct hidEvent;
for (int b=0; b<num_buttons; ++b) {
(*hidDev)->getElementValue(hidDev, buttonCookies[b], &hidEvent);
if (hidEvent.value)
*buttons |= 1 << b;
}
for (int a=0; a<num_axes; ++a) {
(*hidDev)->getElementValue(hidDev, axisCookies[a], &hidEvent);
axes[a] = hidEvent.value;
}
}
#endif
Index: Makefile.am
===================================================================
RCS file: /cvsroot/plib/plib/src/js/Makefile.am,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- Makefile.am 30 Nov 2002 15:52:38 -0000 1.9
+++ Makefile.am 4 Jan 2003 02:55:53 -0000 1.10
@@ -5,7 +5,8 @@
include_HEADERS = js.h
libplibjs_a_SOURCES = js.cxx jsLinux.cxx jsLinuxOld.cxx jsMacOS.cxx \
- jsWindows.cxx jsBSD.cxx jsNone.cxx
+ jsMacOSX.cxx jsWindows.cxx jsBSD.cxx \
+ jsNone.cxx
INCLUDES = -I$(top_srcdir)/src/util
Index: js.h
===================================================================
RCS file: /cvsroot/plib/plib/src/js/js.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- js.h 30 Nov 2002 00:41:49 -0000 1.28
+++ js.h 4 Jan 2003 02:55:53 -0000 1.29
@@ -37,9 +37,15 @@
#endif
#ifdef UL_BSD
-# include <machine/joystick.h>
-# define JS_DATA_TYPE joystick
-# define JS_RETURN (sizeof(struct JS_DATA_TYPE))
+# include <machine/joystick.h>
+# define JS_DATA_TYPE joystick
+# define JS_RETURN (sizeof(struct JS_DATA_TYPE))
+#endif
+
+#ifdef UL_MAC_OSX
+# include <mach/mach.h>
+# include <IOKit/IOkitLib.h>
+# include <IOKit/hid/IOHIDLib.h>
#endif
#ifdef UL_LINUX
@@ -85,6 +91,31 @@
#define isp_num_needs 41
ISpElementReference isp_elem [ isp_num_needs ] ;
ISpNeed isp_needs [ isp_num_needs ] ;
+
+#elif defined(UL_MAC_OSX)
+
+ IOHIDDeviceInterface ** hidDev;
+ static const int kNumDevices;
+ static int numDevices;
+ static io_object_t ioDevices[kNumDevices];
+
+ static void findDevices(mach_port_t);
+ static CFDictionaryRef getCFProperties(io_object_t);
+
+ void enumerateElements(CFTypeRef element);
+ /// callback for CFArrayApply
+ static void elementEnumerator( const void *element, void* vjs);
+ void parseElement(CFDictionaryRef element);
+
+ void addAxisElement(CFDictionaryRef axis);
+ void addButtonElement(CFDictionaryRef button);
+ void addHatElement(CFDictionaryRef hat);
+
+ IOHIDElementCookie buttonCookies[41];
+ IOHIDElementCookie axisCookies[_JS_MAX_AXES];
+ long minReport[_JS_MAX_AXES],
+ maxReport[_JS_MAX_AXES];
+
#elif defined(UL_WIN32)
JOYCAPS jsCaps ;
JOYINFOEX js ;
Index: jsNone.cxx
===================================================================
RCS file: /cvsroot/plib/plib/src/js/jsNone.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- jsNone.cxx 30 Nov 2002 15:52:38 -0000 1.1
+++ jsNone.cxx 4 Jan 2003 02:55:54 -0000 1.2
@@ -22,7 +22,7 @@
#include "js.h"
-#if defined(UL_IRIX) || defined(UL_SOLARIS)
+#if defined(UL_IRIX) || defined(UL_SOLARIS) || defined(UL_HPUX)
/* check the joystick driver version */
|