|
From: Elias N. <eli...@us...> - 2004-03-26 21:22:22
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/macosx In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27218/src/native/macosx Modified Files: org_lwjgl_input_Keyboard.cpp org_lwjgl_input_Mouse.cpp Log Message: Save unread buffered input events between read()s Index: org_lwjgl_input_Mouse.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/macosx/org_lwjgl_input_Mouse.cpp,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- org_lwjgl_input_Mouse.cpp 20 Dec 2003 22:03:25 -0000 1.24 +++ org_lwjgl_input_Mouse.cpp 26 Mar 2004 21:11:20 -0000 1.25 @@ -249,12 +249,12 @@ resetDeltas(); } -JNIEXPORT jobject JNICALL Java_org_lwjgl_input_Mouse_nEnableBuffer(JNIEnv *env, jclass clazz) { - jobject newBuffer = env->NewDirectByteBuffer(getOutputList(&event_queue), getEventBufferSize(&event_queue)); +JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nEnableBuffer(JNIEnv *env, jclass clazz) { buffer_enabled = true; - return newBuffer; } -JNIEXPORT jint JNICALL Java_org_lwjgl_input_Mouse_nRead(JNIEnv *env, jclass clazz) { - return copyEvents(&event_queue, 2); +JNIEXPORT jint JNICALL Java_org_lwjgl_input_Mouse_nRead(JNIEnv *env, jclass clazz, jobject buffer, jint buffer_position) { + unsigned char* buffer_ptr = (unsigned char *)env->GetDirectBufferAddress(buffer); + int buffer_size = env->GetDirectBufferCapacity(buffer) - buffer_position; + return copyEvents(&event_queue, buffer_ptr + buffer_position, buffer_size, 2); } Index: org_lwjgl_input_Keyboard.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/macosx/org_lwjgl_input_Keyboard.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- org_lwjgl_input_Keyboard.cpp 20 Dec 2003 22:03:25 -0000 1.21 +++ org_lwjgl_input_Keyboard.cpp 26 Mar 2004 21:11:20 -0000 1.22 @@ -365,25 +365,23 @@ memcpy(new_keyboard_buffer, key_buf, KEYBOARD_SIZE*sizeof(unsigned char)); } -JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nRead(JNIEnv * env, jclass clazz) { - int num_events = 0; +JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nRead(JNIEnv * env, jclass clazz, jobject buffer, jint buffer_position) { int event_size; if (translation_enabled) event_size = 4; else event_size = 2; - num_events = copyEvents(&event_queue, event_size); - return num_events; + unsigned char* buffer_ptr = (unsigned char *)env->GetDirectBufferAddress(buffer); + int buffer_size = env->GetDirectBufferCapacity(buffer) - buffer_position; + return copyEvents(&event_queue, buffer_ptr + buffer_position, buffer_size, event_size); } JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nEnableTranslation(JNIEnv *env, jclass clazz) { translation_enabled = true; } -JNIEXPORT jobject JNICALL Java_org_lwjgl_input_Keyboard_nEnableBuffer(JNIEnv * env, jclass clazz) { - jobject new_buffer = env->NewDirectByteBuffer(getOutputList(&event_queue), getEventBufferSize(&event_queue)); +JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nEnableBuffer(JNIEnv * env, jclass clazz) { buffer_enabled = true; - return new_buffer; } JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nisStateKeySet(JNIEnv *env, jclass clazz, jint key) { |