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