Fixed a mouse button state array bug
This commit is contained in:
parent
ff770dee4d
commit
7184576886
|
@ -233,13 +233,13 @@ int checkPointer() {
|
|||
case ButtonPress:
|
||||
switch (event.xbutton.button) {
|
||||
case Button1:
|
||||
buttons[0] = 1;
|
||||
buttons[0] = JNI_TRUE;
|
||||
break;
|
||||
case Button2:
|
||||
buttons[1] = 1;
|
||||
buttons[1] = JNI_TRUE;
|
||||
break;
|
||||
case Button3:
|
||||
buttons[2] = 1;
|
||||
buttons[2] = JNI_TRUE;
|
||||
break;
|
||||
case Button4:
|
||||
current_z--;
|
||||
|
@ -253,13 +253,13 @@ int checkPointer() {
|
|||
case ButtonRelease:
|
||||
switch (event.xbutton.button) {
|
||||
case Button1:
|
||||
buttons[0] = 0;
|
||||
buttons[0] = JNI_FALSE;
|
||||
break;
|
||||
case Button2:
|
||||
buttons[1] = 0;
|
||||
buttons[1] = JNI_FALSE;
|
||||
break;
|
||||
case Button3:
|
||||
buttons[2] = 0;
|
||||
buttons[2] = JNI_FALSE;
|
||||
break;
|
||||
case Button4: /* Fall through */
|
||||
case Button5:
|
||||
|
@ -324,9 +324,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nPoll
|
|||
last_y = current_y;
|
||||
last_z = current_z;
|
||||
jbooleanArray buttonsArray = (jbooleanArray) env->GetStaticObjectField(clazz, fid_button);
|
||||
unsigned char * class_buttons = (unsigned char *) env->GetPrimitiveArrayCritical(buttonsArray, NULL);
|
||||
memcpy(class_buttons, buttons, NUM_BUTTONS*sizeof(unsigned char));
|
||||
env->ReleasePrimitiveArrayCritical(buttonsArray, class_buttons, 0);
|
||||
env->SetBooleanArrayRegion(buttonsArray, 0, NUM_BUTTONS, buttons);
|
||||
if (current_fullscreen)
|
||||
warpPointer();
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Mouse_nCreate
|
|||
}
|
||||
|
||||
// Grab non-exclusive foreground access to device
|
||||
if (lpdiMouse->SetCooperativeLevel(hwnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND) != DI_OK) {
|
||||
if (lpdiMouse->SetCooperativeLevel(hwnd, DISCL_EXCLUSIVE | DISCL_FOREGROUND) != DI_OK) {
|
||||
printf("Failed to set mouse coop\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
@ -135,6 +135,7 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Mouse_nCreate
|
|||
printf("Failed to acquire mouse\n");
|
||||
#endif
|
||||
}
|
||||
printf("Acquired mouse\n");
|
||||
return JNI_TRUE;
|
||||
}
|
||||
|
||||
|
@ -187,9 +188,12 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nPoll
|
|||
env->SetStaticIntField(clazz, fid_dy, (jint)diMouseState.lY);
|
||||
env->SetStaticIntField(clazz, fid_dz, (jint)diMouseState.lZ);
|
||||
jbooleanArray buttonsArray = (jbooleanArray) env->GetStaticObjectField(clazz, fid_button);
|
||||
BYTE * buttons = (BYTE *) env->GetPrimitiveArrayCritical(buttonsArray, NULL);
|
||||
memcpy(buttons, diMouseState.rgbButtons, 4);
|
||||
env->ReleasePrimitiveArrayCritical(buttonsArray, buttons, 0);
|
||||
for (int i = 0; i < 4; i++)
|
||||
if (diMouseState.rgbButtons[i] != 0)
|
||||
diMouseState.rgbButtons[i] = JNI_TRUE;
|
||||
else
|
||||
diMouseState.rgbButtons[i] = JNI_FALSE;
|
||||
env->SetBooleanArrayRegion(buttonsArray, 0, 4, diMouseState.rgbButtons);
|
||||
} else {
|
||||
#ifdef _DEBUG
|
||||
printf("Failed to get mouse device state\n");
|
||||
|
|
Loading…
Reference in New Issue