Don't stop sending gamepad packets after receiving non mapped event

This commit is contained in:
Iwan Timmer
2014-09-22 12:38:45 +02:00
parent e2393d1336
commit 1efeb4a8c4
+7 -3
View File
@@ -23,7 +23,7 @@ public class EvdevHandler extends EvdevReader {
private short buttonFlags; private short buttonFlags;
private byte leftTrigger, rightTrigger; private byte leftTrigger, rightTrigger;
private short leftStickX, leftStickY, rightStickX, rightStickY; private short leftStickX, leftStickY, rightStickX, rightStickY;
private boolean gamepadModified; private boolean gamepadSynced;
private short mouseDeltaX, mouseDeltaY; private short mouseDeltaX, mouseDeltaY;
private byte mouseScroll; private byte mouseScroll;
@@ -48,6 +48,7 @@ public class EvdevHandler extends EvdevReader {
absDY = new EvdevAbsolute(device, mapping.abs_dpad_y, mapping.reverse_dpad_y); absDY = new EvdevAbsolute(device, mapping.abs_dpad_y, mapping.reverse_dpad_y);
translator = new KeyboardTranslator(conn); translator = new KeyboardTranslator(conn);
gamepadSynced = true;
} }
@Override @Override
@@ -62,11 +63,12 @@ public class EvdevHandler extends EvdevReader {
short type = buffer.getShort(); short type = buffer.getShort();
short code = buffer.getShort(); short code = buffer.getShort();
int value = buffer.getInt(); int value = buffer.getInt();
boolean gamepadModified = false;
if (type==EvdevConstants.EV_SYN) { if (type==EvdevConstants.EV_SYN) {
if (gamepadModified) { if (!gamepadSynced) {
conn.sendControllerInput(buttonFlags, leftTrigger, rightTrigger, leftStickX, leftStickY, rightStickX, rightStickY); conn.sendControllerInput(buttonFlags, leftTrigger, rightTrigger, leftStickX, leftStickY, rightStickX, rightStickY);
gamepadModified = false; gamepadSynced = true;
} }
if (mouseDeltaX != 0 || mouseDeltaY != 0) { if (mouseDeltaX != 0 || mouseDeltaY != 0) {
conn.sendMouseMove(mouseDeltaX, mouseDeltaY); conn.sendMouseMove(mouseDeltaX, mouseDeltaY);
@@ -195,6 +197,8 @@ public class EvdevHandler extends EvdevReader {
} else } else
gamepadModified = false; gamepadModified = false;
} }
gamepadSynced &= !gamepadModified;
} }
private short accountForDeadzone(short value) { private short accountForDeadzone(short value) {