Add delta values to Mouse events
This commit is contained in:
parent
0d013c7f54
commit
fa1713c4e8
|
@ -34,6 +34,7 @@ package org.lwjgl.input;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.IntBuffer;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -198,6 +199,8 @@ public class Keyboard {
|
||||||
|
|
||||||
/** Buffer size in events */
|
/** Buffer size in events */
|
||||||
private final static int BUFFER_SIZE = 50;
|
private final static int BUFFER_SIZE = 50;
|
||||||
|
/** Event size in elements */
|
||||||
|
private final static int EVENT_SIZE = 3;
|
||||||
|
|
||||||
/** Key names */
|
/** Key names */
|
||||||
private static final String[] keyName = new String[255];
|
private static final String[] keyName = new String[255];
|
||||||
|
@ -241,7 +244,7 @@ public class Keyboard {
|
||||||
* followed by state. If translation is enabled, the state is followed by
|
* followed by state. If translation is enabled, the state is followed by
|
||||||
* a 2 byte java char representing the translated character.
|
* a 2 byte java char representing the translated character.
|
||||||
*/
|
*/
|
||||||
private static ByteBuffer readBuffer;
|
private static IntBuffer readBuffer;
|
||||||
|
|
||||||
/** True if translation is enabled */
|
/** True if translation is enabled */
|
||||||
private static boolean translationEnabled;
|
private static boolean translationEnabled;
|
||||||
|
@ -351,10 +354,7 @@ public class Keyboard {
|
||||||
private static void read() {
|
private static void read() {
|
||||||
readBuffer.compact();
|
readBuffer.compact();
|
||||||
int numEvents = nRead(readBuffer, readBuffer.position());
|
int numEvents = nRead(readBuffer, readBuffer.position());
|
||||||
if (translationEnabled)
|
readBuffer.position(readBuffer.position() + numEvents*EVENT_SIZE);
|
||||||
readBuffer.position(readBuffer.position() + numEvents*4);
|
|
||||||
else
|
|
||||||
readBuffer.position(readBuffer.position() + numEvents*2);
|
|
||||||
readBuffer.flip();
|
readBuffer.flip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,7 +370,7 @@ public class Keyboard {
|
||||||
* Native method to read the keyboard buffer
|
* Native method to read the keyboard buffer
|
||||||
* @return the total number of events read.
|
* @return the total number of events read.
|
||||||
*/
|
*/
|
||||||
private static native int nRead(ByteBuffer buffer, int buffer_position);
|
private static native int nRead(IntBuffer buffer, int buffer_position);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable keyboard translation. Must be called after the keyboard is created,
|
* Enable keyboard translation. Must be called after the keyboard is created,
|
||||||
|
@ -396,7 +396,7 @@ public class Keyboard {
|
||||||
public static void enableBuffer() throws LWJGLException {
|
public static void enableBuffer() throws LWJGLException {
|
||||||
if (!created)
|
if (!created)
|
||||||
throw new IllegalStateException("Keyboard must be created before you can enable buffering");
|
throw new IllegalStateException("Keyboard must be created before you can enable buffering");
|
||||||
readBuffer = BufferUtils.createByteBuffer(4*BUFFER_SIZE);
|
readBuffer = BufferUtils.createIntBuffer(EVENT_SIZE*BUFFER_SIZE);
|
||||||
readBuffer.limit(0);
|
readBuffer.limit(0);
|
||||||
nEnableBuffer();
|
nEnableBuffer();
|
||||||
}
|
}
|
||||||
|
@ -474,10 +474,7 @@ public class Keyboard {
|
||||||
public static int getNumKeyboardEvents() {
|
public static int getNumKeyboardEvents() {
|
||||||
if (!created)
|
if (!created)
|
||||||
throw new IllegalStateException("Keyboard must be created before you can read events");
|
throw new IllegalStateException("Keyboard must be created before you can read events");
|
||||||
if (translationEnabled)
|
return readBuffer.remaining()/EVENT_SIZE;
|
||||||
return readBuffer.remaining()/4;
|
|
||||||
else
|
|
||||||
return readBuffer.remaining()/2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -500,9 +497,8 @@ public class Keyboard {
|
||||||
if (readBuffer.hasRemaining()) {
|
if (readBuffer.hasRemaining()) {
|
||||||
eventKey = readBuffer.get() & 0xFF;
|
eventKey = readBuffer.get() & 0xFF;
|
||||||
eventState = readBuffer.get() != 0;
|
eventState = readBuffer.get() != 0;
|
||||||
if (translationEnabled) {
|
int eventCharacterInt = readBuffer.get() & 0xFFFF;
|
||||||
eventCharacter = readBuffer.getChar();
|
eventCharacter = (char)eventCharacterInt;
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -127,7 +127,7 @@ public class Mouse {
|
||||||
private static boolean initialized;
|
private static boolean initialized;
|
||||||
|
|
||||||
/** The mouse button events from the last read */
|
/** The mouse button events from the last read */
|
||||||
private static ByteBuffer readBuffer = null;
|
private static IntBuffer readBuffer = null;
|
||||||
|
|
||||||
/** The current mouse event button being examined */
|
/** The current mouse event button being examined */
|
||||||
private static int eventButton;
|
private static int eventButton;
|
||||||
|
@ -135,8 +135,15 @@ public class Mouse {
|
||||||
/** The current state of the button being examined in the event queue */
|
/** The current state of the button being examined in the event queue */
|
||||||
private static boolean eventState;
|
private static boolean eventState;
|
||||||
|
|
||||||
|
/** The current delta of the mouse in the event queue */
|
||||||
|
private static int event_dx;
|
||||||
|
private static int event_dy;
|
||||||
|
private static int event_dwheel;
|
||||||
|
|
||||||
/** Buffer size in events */
|
/** Buffer size in events */
|
||||||
private final static int BUFFER_SIZE = 50;
|
private final static int BUFFER_SIZE = 50;
|
||||||
|
/** Event size in elements */
|
||||||
|
private final static int EVENT_SIZE = 5;
|
||||||
|
|
||||||
private static boolean isGrabbed;
|
private static boolean isGrabbed;
|
||||||
|
|
||||||
|
@ -404,7 +411,7 @@ public class Mouse {
|
||||||
private static void read() {
|
private static void read() {
|
||||||
readBuffer.compact();
|
readBuffer.compact();
|
||||||
int numEvents = nRead(readBuffer, readBuffer.position());
|
int numEvents = nRead(readBuffer, readBuffer.position());
|
||||||
readBuffer.position(readBuffer.position() + numEvents * 2);
|
readBuffer.position(readBuffer.position() + numEvents * EVENT_SIZE);
|
||||||
readBuffer.flip();
|
readBuffer.flip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -456,7 +463,7 @@ public class Mouse {
|
||||||
*/
|
*/
|
||||||
public static void enableBuffer() throws LWJGLException {
|
public static void enableBuffer() throws LWJGLException {
|
||||||
if (!created) throw new IllegalStateException("Mouse must be created before you can enable buffering");
|
if (!created) throw new IllegalStateException("Mouse must be created before you can enable buffering");
|
||||||
readBuffer = BufferUtils.createByteBuffer(2 * BUFFER_SIZE);
|
readBuffer = BufferUtils.createIntBuffer(EVENT_SIZE * BUFFER_SIZE);
|
||||||
readBuffer.limit(0);
|
readBuffer.limit(0);
|
||||||
nEnableBuffer();
|
nEnableBuffer();
|
||||||
}
|
}
|
||||||
|
@ -472,12 +479,13 @@ public class Mouse {
|
||||||
* Native method to read the keyboard buffer
|
* Native method to read the keyboard buffer
|
||||||
* @return the total number of events read.
|
* @return the total number of events read.
|
||||||
*/
|
*/
|
||||||
private static native int nRead(ByteBuffer buffer, int buffer_position);
|
private static native int nRead(IntBuffer buffer, int buffer_position);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the next mouse event. You can query which button caused the event by using
|
* Gets the next mouse event. You can query which button caused the event by using
|
||||||
* <code>getEventButton()</code>. To get the state of that key, for that event, use
|
* <code>getEventButton()</code> (if any). To get the state of that key, for that event, use
|
||||||
* <code>getEventButtonState</code>.
|
* <code>getEventButtonState</code>. To get the current mouse delta values use <code>getEventDX()</code>,
|
||||||
|
* <code>getEventDY()</code> and <code>getEventDZ()</code>.
|
||||||
* @see org.lwjgl.input.Mouse#getEventButton()
|
* @see org.lwjgl.input.Mouse#getEventButton()
|
||||||
* @see org.lwjgl.input.Mouse#getEventButtonState()
|
* @see org.lwjgl.input.Mouse#getEventButtonState()
|
||||||
* @return true if a mouse event was read, false otherwise
|
* @return true if a mouse event was read, false otherwise
|
||||||
|
@ -488,27 +496,55 @@ public class Mouse {
|
||||||
throw new IllegalStateException("Event buffering must be enabled before you can read events");
|
throw new IllegalStateException("Event buffering must be enabled before you can read events");
|
||||||
|
|
||||||
if (readBuffer.hasRemaining()) {
|
if (readBuffer.hasRemaining()) {
|
||||||
eventButton = readBuffer.get() & 0xFF;
|
eventButton = readBuffer.get();
|
||||||
eventState = readBuffer.get() != 0;
|
eventState = readBuffer.get() != 0;
|
||||||
|
event_dx = readBuffer.get();
|
||||||
|
event_dy = readBuffer.get();
|
||||||
|
event_dwheel = readBuffer.get();
|
||||||
return true;
|
return true;
|
||||||
} else
|
} else
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Current events button
|
* @return Current events button. Returns -1 if no button state was changed
|
||||||
*/
|
*/
|
||||||
public static int getEventButton() {
|
public static int getEventButton() {
|
||||||
return eventButton;
|
return eventButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Current events button state
|
* Get the current events button state. If <code>getEventButton()</code> is -1,
|
||||||
|
* and IllegalStateException is thrown.
|
||||||
|
* @return Current events button state.
|
||||||
*/
|
*/
|
||||||
public static boolean getEventButtonState() {
|
public static boolean getEventButtonState() {
|
||||||
|
if (eventButton == -1)
|
||||||
|
throw new IllegalStateException("Current event has no button state change");
|
||||||
return eventState;
|
return eventState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Current events delta x
|
||||||
|
*/
|
||||||
|
public static int getEventDX() {
|
||||||
|
return event_dx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Current events delta y
|
||||||
|
*/
|
||||||
|
public static int getEventDY() {
|
||||||
|
return event_dy;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Current events delta z
|
||||||
|
*/
|
||||||
|
public static int getEventDWheel() {
|
||||||
|
return event_dwheel;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the absolute position. If the Display has been created
|
* Retrieves the absolute position. If the Display has been created
|
||||||
* x will be clamped to 0...width-1.
|
* x will be clamped to 0...width-1.
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <jni.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "common_tools.h"
|
#include "common_tools.h"
|
||||||
|
|
||||||
|
@ -86,13 +87,13 @@ void initEventQueue(event_queue_t *event_queue) {
|
||||||
event_queue->list_end = 0;
|
event_queue->list_end = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void putEventElement(event_queue_t *queue, unsigned char byte) {
|
void putEventElement(event_queue_t *queue, jint s) {
|
||||||
int next_index = (queue->list_end + 1)%EVENT_BUFFER_SIZE;
|
int next_index = (queue->list_end + 1)%EVENT_BUFFER_SIZE;
|
||||||
if (next_index == queue->list_start) {
|
if (next_index == queue->list_start) {
|
||||||
printfDebug("Event buffer overflow!\n");
|
printfDebug("Event buffer overflow!\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
queue->input_event_buffer[queue->list_end] = byte;
|
queue->input_event_buffer[queue->list_end] = s;
|
||||||
queue->list_end = next_index;
|
queue->list_end = next_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +101,7 @@ static bool hasMoreEvents(event_queue_t *queue) {
|
||||||
return queue->list_start != queue->list_end;
|
return queue->list_start != queue->list_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void copyEvent(event_queue_t *queue, unsigned char *output_event_buffer, int output_index, int event_size) {
|
static void copyEvent(event_queue_t *queue, jint *output_event_buffer, int output_index, int event_size) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < event_size; i++) {
|
for (i = 0; i < event_size; i++) {
|
||||||
output_event_buffer[output_index] = queue->input_event_buffer[queue->list_start];
|
output_event_buffer[output_index] = queue->input_event_buffer[queue->list_start];
|
||||||
|
@ -109,7 +110,7 @@ static void copyEvent(event_queue_t *queue, unsigned char *output_event_buffer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int copyEvents(event_queue_t *event_queue, unsigned char *output_event_buffer, int buffer_size, int event_size) {
|
int copyEvents(event_queue_t *event_queue, jint *output_event_buffer, int buffer_size, int event_size) {
|
||||||
int num_events = 0;
|
int num_events = 0;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
while (index + event_size <= buffer_size && hasMoreEvents(event_queue)) {
|
while (index + event_size <= buffer_size && hasMoreEvents(event_queue)) {
|
||||||
|
|
|
@ -51,7 +51,7 @@ extern JavaVM *jvm;
|
||||||
#define ATTRIB_LIST_SIZE (256)
|
#define ATTRIB_LIST_SIZE (256)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned char input_event_buffer[EVENT_BUFFER_SIZE];
|
jint input_event_buffer[EVENT_BUFFER_SIZE];
|
||||||
|
|
||||||
int list_start;
|
int list_start;
|
||||||
int list_end;
|
int list_end;
|
||||||
|
@ -125,9 +125,8 @@ extern void putAttrib(attrib_list_t *list, int attrib);
|
||||||
extern bool isDebugEnabled(void);
|
extern bool isDebugEnabled(void);
|
||||||
extern jstring getVersionString(JNIEnv *env);
|
extern jstring getVersionString(JNIEnv *env);
|
||||||
extern void initEventQueue(event_queue_t *event_queue);
|
extern void initEventQueue(event_queue_t *event_queue);
|
||||||
extern int copyEvents(event_queue_t *event_queue, unsigned char *output_event_buffer, int buffer_size, int event_size);
|
extern int copyEvents(event_queue_t *event_queue, jint *output_event_buffer, int buffer_size, int event_size);
|
||||||
extern void putEventElement(event_queue_t *queue, unsigned char byte);
|
extern void putEventElement(event_queue_t *queue, jint byte);
|
||||||
extern unsigned char *getOutputList(event_queue_t *queue);
|
|
||||||
extern void throwException(JNIEnv *env, const char *msg);
|
extern void throwException(JNIEnv *env, const char *msg);
|
||||||
extern void throwOpenALException(JNIEnv * env, const char * err);
|
extern void throwOpenALException(JNIEnv * env, const char * err);
|
||||||
extern void throwFMODException(JNIEnv * env, const char * err);
|
extern void throwFMODException(JNIEnv * env, const char * err);
|
||||||
|
|
|
@ -142,9 +142,9 @@ static int translateEvent(XKeyEvent *event) {
|
||||||
static char temp_translation_buffer[KEYBOARD_BUFFER_SIZE];
|
static char temp_translation_buffer[KEYBOARD_BUFFER_SIZE];
|
||||||
static XComposeStatus status;
|
static XComposeStatus status;
|
||||||
int num_chars, i;
|
int num_chars, i;
|
||||||
|
jint ch;
|
||||||
|
|
||||||
if (event->type == KeyRelease) {
|
if (!translation_enabled || event->type == KeyRelease) {
|
||||||
putEventElement(&event_queue, 0);
|
|
||||||
putEventElement(&event_queue, 0);
|
putEventElement(&event_queue, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -152,17 +152,16 @@ static int translateEvent(XKeyEvent *event) {
|
||||||
if (num_chars > 0) {
|
if (num_chars > 0) {
|
||||||
num_chars--;
|
num_chars--;
|
||||||
/* Assume little endian byte order */
|
/* Assume little endian byte order */
|
||||||
putEventElement(&event_queue, temp_translation_buffer[0]);
|
ch = (jint)temp_translation_buffer[0] & 0xFF;
|
||||||
putEventElement(&event_queue, 0);
|
putEventElement(&event_queue, ch);
|
||||||
for (i = 0; i < num_chars; i++) {
|
for (i = 0; i < num_chars; i++) {
|
||||||
putEventElement(&event_queue, 0);
|
putEventElement(&event_queue, 0);
|
||||||
putEventElement(&event_queue, 0);
|
putEventElement(&event_queue, 0);
|
||||||
putEventElement(&event_queue, temp_translation_buffer[i + 1]);
|
ch = ((jint)temp_translation_buffer[i + 1]) & 0xFF;
|
||||||
putEventElement(&event_queue, 0);
|
putEventElement(&event_queue, ch);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
putEventElement(&event_queue, 0);
|
putEventElement(&event_queue, 0);
|
||||||
putEventElement(&event_queue, 0);
|
|
||||||
}
|
}
|
||||||
return num_chars;
|
return num_chars;
|
||||||
}
|
}
|
||||||
|
@ -182,7 +181,6 @@ static void bufferEvent(XKeyEvent *key_event) {
|
||||||
//printf("Reading a key %d %d count %d\n", (int)keycode, (int)state, num_events);
|
//printf("Reading a key %d %d count %d\n", (int)keycode, (int)state, num_events);
|
||||||
putEventElement(&event_queue, keycode);
|
putEventElement(&event_queue, keycode);
|
||||||
putEventElement(&event_queue, state);
|
putEventElement(&event_queue, state);
|
||||||
if (translation_enabled)
|
|
||||||
translateEvent(key_event);
|
translateEvent(key_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,14 +199,10 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nPoll(JNIEnv * env, jclass
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT int JNICALL Java_org_lwjgl_input_Keyboard_nRead(JNIEnv * env, jclass clazz, jobject buffer, jint buffer_position) {
|
JNIEXPORT int JNICALL Java_org_lwjgl_input_Keyboard_nRead(JNIEnv * env, jclass clazz, jobject buffer, jint buffer_position) {
|
||||||
int event_size;
|
int event_size = 3;
|
||||||
handleMessages();
|
handleMessages();
|
||||||
if (translation_enabled)
|
jint* buffer_ptr = (jint *)(*env)->GetDirectBufferAddress(env, buffer);
|
||||||
event_size = 4;
|
int buffer_size = ((*env)->GetDirectBufferCapacity(env, buffer))/sizeof(jint) - buffer_position;
|
||||||
else
|
|
||||||
event_size = 2;
|
|
||||||
unsigned char* buffer_ptr = (unsigned char *)(*env)->GetDirectBufferAddress(env, buffer);
|
|
||||||
int buffer_size = (*env)->GetDirectBufferCapacity(env, buffer) - buffer_position;
|
|
||||||
return copyEvents(&event_queue, buffer_ptr + buffer_position, buffer_size, event_size);
|
return copyEvents(&event_queue, buffer_ptr + buffer_position, buffer_size, event_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,13 +73,26 @@ static bool buffer_enabled;
|
||||||
static Cursor blank_cursor;
|
static Cursor blank_cursor;
|
||||||
static Cursor current_cursor;
|
static Cursor current_cursor;
|
||||||
|
|
||||||
|
static void putEvent(jint button, jint state, jint dx, jint dy, jint dz) {
|
||||||
|
if (buffer_enabled) {
|
||||||
|
putEventElement(&event_queue, button);
|
||||||
|
putEventElement(&event_queue, state);
|
||||||
|
putEventElement(&event_queue, dx);
|
||||||
|
putEventElement(&event_queue, dy);
|
||||||
|
putEventElement(&event_queue, dz);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void setCursorPos(int x, int y) {
|
static void setCursorPos(int x, int y) {
|
||||||
int current_x = x;
|
int current_x = x;
|
||||||
int current_y = y;
|
int current_y = y;
|
||||||
dx += current_x - last_x;
|
jint event_dx = current_x - last_x;
|
||||||
dy += current_y - last_y;
|
jint event_dy = current_y - last_y;
|
||||||
|
dx += event_dx;
|
||||||
|
dy += event_dy;
|
||||||
last_x = current_x;
|
last_x = current_x;
|
||||||
last_y = current_y;
|
last_y = current_y;
|
||||||
|
putEvent(-1, 0, event_dx, -event_dy, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int transformY(int y) {
|
static int transformY(int y) {
|
||||||
|
@ -275,22 +288,24 @@ static void handleButton(XButtonEvent *event, unsigned char state) {
|
||||||
if (button_num == NUM_BUTTONS)
|
if (button_num == NUM_BUTTONS)
|
||||||
return;
|
return;
|
||||||
buttons[button_num] = state;
|
buttons[button_num] = state;
|
||||||
if (buffer_enabled) {
|
putEvent(button_num, state, 0, 0, 0);
|
||||||
putEventElement(&event_queue, button_num);
|
|
||||||
putEventElement(&event_queue, state);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleButtonPress(XButtonEvent *event) {
|
void handleButtonPress(XButtonEvent *event) {
|
||||||
|
jint delta = 0;
|
||||||
switch (event->button) {
|
switch (event->button) {
|
||||||
case Button4:
|
case Button4:
|
||||||
dz += WHEEL_SCALE;
|
delta = WHEEL_SCALE;
|
||||||
|
putEvent(-1, 0, 0, 0, delta);
|
||||||
break;
|
break;
|
||||||
case Button5:
|
case Button5:
|
||||||
dz -= WHEEL_SCALE;
|
delta = -WHEEL_SCALE;
|
||||||
|
putEvent(-1, 0, 0, 0, delta);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
default: break;
|
|
||||||
}
|
}
|
||||||
|
dz += delta;
|
||||||
handleButton(event, 1);
|
handleButton(event, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -364,10 +379,10 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nEnableBuffer(JNIEnv *env, jcl
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_input_Mouse_nRead(JNIEnv *env, jclass clazz, jobject buffer, jint buffer_position) {
|
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(env, buffer);
|
jint* buffer_ptr = (jint *)(*env)->GetDirectBufferAddress(env, buffer);
|
||||||
int buffer_size = (*env)->GetDirectBufferCapacity(env, buffer) - buffer_position;
|
int buffer_size = ((*env)->GetDirectBufferCapacity(env, buffer))/sizeof(jint) - buffer_position;
|
||||||
handleMessages();
|
handleMessages();
|
||||||
return copyEvents(&event_queue, buffer_ptr + buffer_position, buffer_size, 2);
|
return copyEvents(&event_queue, buffer_ptr + buffer_position, buffer_size, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nGrabMouse(JNIEnv * env, jclass clazz, jboolean new_grab) {
|
JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nGrabMouse(JNIEnv * env, jclass clazz, jboolean new_grab) {
|
||||||
|
|
Loading…
Reference in New Issue