Revision: 2379
Author: elias_naur
Date: 2006-06-18 01:51:03 -0700 (Sun, 18 Jun 2006)
ViewCVS: http://svn.sourceforge.net/java-game-lib/?rev=2379&view=rev
Log Message:
-----------
Windows: Fixed spurious mouse button events after a Mouse.setGrabbed(true)
Modified Paths:
--------------
trunk/LWJGL/src/native/win32/org_lwjgl_input_Mouse.c
Modified: trunk/LWJGL/src/native/win32/org_lwjgl_input_Mouse.c
===================================================================
--- trunk/LWJGL/src/native/win32/org_lwjgl_input_Mouse.c 2006-06-17 23:46:59 UTC (rev 2378)
+++ trunk/LWJGL/src/native/win32/org_lwjgl_input_Mouse.c 2006-06-18 08:51:03 UTC (rev 2379)
@@ -247,10 +247,10 @@
static void copyDXEvents(int num_di_events, DIDEVICEOBJECTDATA *di_buffer) {
int buffer_index = 0;
int dx = 0, dy = 0, dwheel = 0;
- int button_state;
- int i;
- for (i = 0; i < num_di_events; i++) {
- button_state = (di_buffer[i].dwData & 0x80) != 0 ? 1 : 0;
+ int button_state;
+ int i;
+ for (i = 0; i < num_di_events; i++) {
+ button_state = (di_buffer[i].dwData & 0x80) != 0 ? 1 : 0;
switch (di_buffer[i].dwOfs) {
case DIMOFS_BUTTON0:
putMouseEventWithCoords(0, button_state, dx, -dy, dwheel);
@@ -300,7 +300,8 @@
0);
if (ret == DI_OK) {
- copyDXEvents(num_di_events, rgdod);
+ if (mouse_grabbed)
+ copyDXEvents(num_di_events, rgdod);
} else if (ret == DI_BUFFEROVERFLOW) {
printfDebugJava(env, "Buffer overflowed");
} else if (ret == DIERR_INPUTLOST) {
@@ -314,7 +315,7 @@
} else if (ret == DIERR_NOTINITIALIZED) {
printfDebugJava(env, "not inited");
} else {
- printfDebugJava(env, "unknown keyboard error");
+ printfDebugJava(env, "unknown mouse error (%d)", ret);
}
}
@@ -323,9 +324,7 @@
{
jint* buffer_ptr = (jint *)(*env)->GetDirectBufferAddress(env, buffer_obj) + buffer_position;
int buffer_size = ((*env)->GetDirectBufferCapacity(env, buffer_obj))/sizeof(jint) - buffer_position;
- if (mouse_grabbed) {
readDXBuffer(env);
- }
return copyEvents(&event_queue, buffer_ptr, buffer_size);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|