diff --git a/src/java/org/lwjgl/input/Controller.java b/src/java/org/lwjgl/input/Controller.java index a196978e..408c7281 100644 --- a/src/java/org/lwjgl/input/Controller.java +++ b/src/java/org/lwjgl/input/Controller.java @@ -171,9 +171,7 @@ public class Controller { return; } - if (!nCreate()) { - throw new Exception("The controller could not be created."); - } + nCreate(); created = true; } @@ -248,10 +246,8 @@ public class Controller { /** * Native method to create the controller - * - * @return true if the controller was created */ - private static native boolean nCreate(); + private static native void nCreate() throws Exception; /** * Native method the destroy the controller diff --git a/src/java/org/lwjgl/input/Keyboard.java b/src/java/org/lwjgl/input/Keyboard.java index 0c67e6c9..367c340c 100644 --- a/src/java/org/lwjgl/input/Keyboard.java +++ b/src/java/org/lwjgl/input/Keyboard.java @@ -286,17 +286,14 @@ public class Keyboard { initialize(); if (created) return; - if (!nCreate()) - throw new Exception("The keyboard could not be created."); + nCreate(); created = true; } /** * Native method to create the keyboard - * - * @return true if the keyboard was created */ - private static native boolean nCreate(); + private static native void nCreate() throws Exception; /** * @return true if the keyboard has been created @@ -359,27 +356,26 @@ public class Keyboard { /** * Enable keyboard translation. Must be called after the keyboard is created, * and keyboard buffering must be enabled. - * @return false if translation cannot be enabled; true if it can */ - public static boolean enableTranslation() { + public static void enableTranslation() throws Exception { assert created : "The keyboard has not been created."; assert readBuffer != null : "Keyboard buffering has not been enabled."; - translationEnabled = nEnableTranslation(); - return translationEnabled; + nEnableTranslation(); + translationEnabled = true; } /** * Native method to enable the translation buffer */ - private static native boolean nEnableTranslation(); + private static native void nEnableTranslation() throws Exception; /** * Enable keyboard buffering. Must be called after the keyboard is created. * @return the size of the keyboard buffer in events, or 0 if no buffering * can be enabled for any reason */ - public static int enableBuffer() { + public static int enableBuffer() throws Exception { assert created : "The keyboard has not been created."; int buf_len = nEnableBuffer(); if (readBuffer != null) @@ -392,7 +388,7 @@ public class Keyboard { * @return the size of the buffer allocated, in events (1 event is 2 bytes), * or 0 if no buffer can be allocated */ - private static native int nEnableBuffer(); + private static native int nEnableBuffer() throws Exception; /** * Checks to see if a key is down. diff --git a/src/java/org/lwjgl/input/Mouse.java b/src/java/org/lwjgl/input/Mouse.java index 58f0e070..e6a6a860 100644 --- a/src/java/org/lwjgl/input/Mouse.java +++ b/src/java/org/lwjgl/input/Mouse.java @@ -146,7 +146,7 @@ public class Mouse { } /** Native method to set the native cursor */ - private static native void nSetNativeCursor(int handle); + private static native void nSetNativeCursor(int handle) throws Exception; /** * Gets the minimum size of a native cursor. Can only be called if @@ -210,9 +210,7 @@ public class Mouse { if (created) { return; } - if (!nCreate()) { - throw new Exception("The mouse could not be created."); - } + nCreate(); created = true; currentCursor = null; @@ -225,7 +223,7 @@ public class Mouse { * * @return true if the mouse was created */ - private static native boolean nCreate(); + private static native void nCreate(); /** * @return true if the mouse has been created diff --git a/src/java/org/lwjgl/test/input/KeyboardTest.java b/src/java/org/lwjgl/test/input/KeyboardTest.java index e8c41395..408dc197 100644 --- a/src/java/org/lwjgl/test/input/KeyboardTest.java +++ b/src/java/org/lwjgl/test/input/KeyboardTest.java @@ -107,6 +107,8 @@ public class KeyboardTest { private void createKeyboard() { try { Keyboard.create(); + Keyboard.enableBuffer(); + Keyboard.enableTranslation(); } catch (Exception e) { e.printStackTrace(); System.exit(-1); @@ -114,8 +116,6 @@ public class KeyboardTest { } private void wiggleKeyboard() { - Keyboard.enableBuffer(); - Keyboard.enableTranslation(); while (!Window.isCloseRequested()) { Window.update(); diff --git a/src/native/common/org_lwjgl_input_Controller.h b/src/native/common/org_lwjgl_input_Controller.h index efbf5c5e..cbc91e1b 100644 --- a/src/native/common/org_lwjgl_input_Controller.h +++ b/src/native/common/org_lwjgl_input_Controller.h @@ -11,9 +11,13 @@ extern "C" { /* Inaccessible static: created */ /* Inaccessible static: buttons */ /* Inaccessible static: x */ +/* Inaccessible static: rx */ /* Inaccessible static: y */ +/* Inaccessible static: ry */ /* Inaccessible static: z */ +/* Inaccessible static: rz */ /* Inaccessible static: pov */ +/* Inaccessible static: slider */ #undef org_lwjgl_input_Controller_POV_CENTER #define org_lwjgl_input_Controller_POV_CENTER -1L #undef org_lwjgl_input_Controller_POV_NORTH @@ -25,8 +29,17 @@ extern "C" { #undef org_lwjgl_input_Controller_POV_WEST #define org_lwjgl_input_Controller_POV_WEST 9000L /* Inaccessible static: buttonCount */ +/* Inaccessible static: hasXAxis */ +/* Inaccessible static: hasRXAxis */ +/* Inaccessible static: hasYAxis */ +/* Inaccessible static: hasRYAxis */ /* Inaccessible static: hasZAxis */ +/* Inaccessible static: hasRZAxis */ /* Inaccessible static: hasPOV */ +/* Inaccessible static: hasSlider */ +/* Inaccessible static: buttonName */ +/* Inaccessible static: buttonMap */ +/* Inaccessible static: initialized */ /* Inaccessible static: class_00024org_00024lwjgl_00024input_00024Controller */ /* * Class: org_lwjgl_input_Controller @@ -39,9 +52,9 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Controller_nPoll /* * Class: org_lwjgl_input_Controller * Method: nCreate - * Signature: ()Z + * Signature: ()V */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Controller_nCreate +JNIEXPORT void JNICALL Java_org_lwjgl_input_Controller_nCreate (JNIEnv *, jclass); /* diff --git a/src/native/common/org_lwjgl_input_Keyboard.h b/src/native/common/org_lwjgl_input_Keyboard.h index de6551e4..380a007e 100644 --- a/src/native/common/org_lwjgl_input_Keyboard.h +++ b/src/native/common/org_lwjgl_input_Keyboard.h @@ -276,8 +276,8 @@ extern "C" { /* Inaccessible static: character */ /* Inaccessible static: key */ /* Inaccessible static: state */ -/* Inaccessible static: class_000240 */ -/* Inaccessible static: class_000241 */ +/* Inaccessible static: initialized */ +/* Inaccessible static: class_00024org_00024lwjgl_00024input_00024Keyboard */ /* * Class: org_lwjgl_input_Keyboard * Method: initIDs @@ -289,9 +289,9 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_initIDs /* * Class: org_lwjgl_input_Keyboard * Method: nCreate - * Signature: ()Z + * Signature: ()V */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nCreate +JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nCreate (JNIEnv *, jclass); /* @@ -321,9 +321,9 @@ JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nRead /* * Class: org_lwjgl_input_Keyboard * Method: nEnableTranslation - * Signature: ()Z + * Signature: ()V */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nEnableTranslation +JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nEnableTranslation (JNIEnv *, jclass); /* diff --git a/src/native/common/org_lwjgl_input_Mouse.h b/src/native/common/org_lwjgl_input_Mouse.h index 13c12542..30d9846c 100644 --- a/src/native/common/org_lwjgl_input_Mouse.h +++ b/src/native/common/org_lwjgl_input_Mouse.h @@ -24,6 +24,7 @@ extern "C" { /* Inaccessible static: currentCursor */ /* Inaccessible static: buttonName */ /* Inaccessible static: buttonMap */ +/* Inaccessible static: initialized */ /* Inaccessible static: class_00024org_00024lwjgl_00024input_00024Mouse */ /* * Class: org_lwjgl_input_Mouse @@ -68,9 +69,9 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_initIDs /* * Class: org_lwjgl_input_Mouse * Method: nCreate - * Signature: ()Z + * Signature: ()V */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Mouse_nCreate +JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nCreate (JNIEnv *, jclass); /* diff --git a/src/native/macosx/org_lwjgl_input_Keyboard.cpp b/src/native/macosx/org_lwjgl_input_Keyboard.cpp index f7697163..673a0e49 100644 --- a/src/native/macosx/org_lwjgl_input_Keyboard.cpp +++ b/src/native/macosx/org_lwjgl_input_Keyboard.cpp @@ -39,11 +39,11 @@ * @version $Revision$ */ -#include -#include #include "org_lwjgl_input_Keyboard.h" -KeyMap keyMap; +#define KEYBOARD_BUFFER_SIZE 50 +#define KEYBOARD_SIZE 256 +#define KEY_EVENT_BACKLOG 40 /* * Class: org_lwjgl_input_Keyboard @@ -53,32 +53,16 @@ KeyMap keyMap; JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_initIDs (JNIEnv * env, jclass clazz) { - // Get a global class instance, just to be sure - static jobject globalClassLock = NULL; - - if (globalClassLock == NULL) { - globalClassLock = env->NewGlobalRef(clazz); - } - - //fid_readBuffer = env->GetStaticFieldID(clazz, "readBuffer", "Ljava/nio/ByteBuffer;"); - //fid_readBufferAddress = env->GetStaticFieldID(clazz, "readBufferAddress", "I"); } - /* * Class: org_lwjgl_input_Keyboard * Method: nCreate * Signature: ()Z */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nCreate +JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nCreate (JNIEnv * env, jclass clazz) { - -#ifdef _DEBUG - printf("Creating OSX Carbon keyboard interface\n"); -#endif - - return JNI_TRUE; } /* @@ -89,24 +73,16 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nCreate JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nDestroy (JNIEnv * env, jclass clazz) { - // no specific methodology for doing this in OSX input system -#ifdef _DEBUG - printf("Destroying OSX Carbon keyboard interface\n"); -#endif } - /* * Class: org_lwjgl_input_Keyboard * Method: nPoll * Signature: (I)V */ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nPoll - (JNIEnv * env, jclass clazz, jint buf) + (JNIEnv * env, jclass clazz, jobject buffer) { - // get the keymap from the operating system's carbon layer - // - GetKeys( keyMap ); } /* @@ -114,10 +90,18 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nPoll * Method: nRead * Signature: (I)V */ -JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nRead - (JNIEnv * env, jclass clazz, jint keys) +JNIEXPORT int JNICALL Java_org_lwjgl_input_Keyboard_nRead + (JNIEnv * env, jclass clazz) +{ + +/* + * Class: org_lwjgl_input_Keyboard + * Method: nEnableTranslation + * Signature: ()I + */ +JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nEnableTranslation + (JNIEnv *env, jclass clazz) { - return 0; } /* @@ -128,7 +112,14 @@ JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nRead JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nEnableBuffer (JNIEnv * env, jclass clazz) { - printf("Buffered input is currently not available\n"); - - return JNI_FALSE; +} + +/* + * Class: org_lwjgl_input_Keyboard + * Method: nisStateKeySet + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nisStateKeySet(JNIEnv *env, jclass clazz, jint key) +{ + return org_lwjgl_input_Keyboard_STATE_UNKNOWN; } diff --git a/src/native/macosx/org_lwjgl_opengl_Window.cpp b/src/native/macosx/org_lwjgl_opengl_Window.cpp index 537c6cba..2b1b5f7e 100644 --- a/src/native/macosx/org_lwjgl_opengl_Window.cpp +++ b/src/native/macosx/org_lwjgl_opengl_Window.cpp @@ -73,24 +73,22 @@ static void setWindowTitle(JNIEnv *env, jstring title_obj) { } static pascal OSStatus doQuit(EventHandlerCallRef next_handler, EventRef event, void *user_data) { -printf("Close requested\n"); close_requested = true; return noErr; } static void registerEventHandlers(JNIEnv *env) { - EventTypeSpec event_type; + EventTypeSpec event_types[2]; OSStatus err; EventHandlerUPP handler_upp = NewEventHandlerUPP(doQuit); - event_type.eventClass = kEventClassWindow; - event_type.eventKind = kEventWindowClose; - err = InstallWindowEventHandler(win_ref, handler_upp, 1, &event_type, NULL, NULL); + event_types[0].eventClass = kEventClassWindow; + event_types[0].eventKind = kEventWindowClose; + err = InstallWindowEventHandler(win_ref, handler_upp, 1, event_types, NULL, NULL); + DisposeEventHandlerUPP(handler_upp); if (noErr != err) { - DisposeEventHandlerUPP(handler_upp); throwException(env, "Could not register window event handler"); return; } - DisposeEventHandlerUPP(handler_upp); } static void destroy(void) { @@ -125,7 +123,6 @@ static bool createContext(JNIEnv *env, jint bpp, jint alpha, jint depth, jint st throwException(env, "Could not create context"); return false; } - //if (aglSetFullScreen(context, 800, 600, 85, 0) == GL_FALSE) { if (aglSetDrawable(context, drawable) == GL_FALSE) { aglDestroyContext(context); throwException(env, "Could not attach context"); @@ -180,15 +177,21 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate(JNIEnv *env, jclass throwException(env, "Could not load gl function pointers"); return; } - TransitionWindow(win_ref, kWindowZoomTransitionEffect, kWindowShowTransitionAction, NULL); + ShowWindow(win_ref); SelectWindow(win_ref); } JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_update (JNIEnv *env, jclass clazz) { + RunApplicationEventLoop(); +} + +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_swapBuffers(JNIEnv * env, jclass clazz) +{ aglSwapBuffers(context); } + JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nDestroy (JNIEnv *env, jclass clazz)