Fix consuming the remaining input events when mapping the gamepad. See GitHub issue 4 for details.

This commit is contained in:
Cameron Gutman
2013-12-29 19:21:33 -06:00
parent 0bbc25e281
commit df65ac5b45
+14 -16
View File
@@ -306,24 +306,22 @@ public class GamepadConfigFrame extends JFrame {
* Consumes any events left in the queue after the mapping has been made * Consumes any events left in the queue after the mapping has been made
*/ */
private void consumeEvents(final Gamepad pad) { private void consumeEvents(final Gamepad pad) {
// start a new thread to go through all of the remaining events EventQueue queue = pad.getEvents();
Thread consumeEvents = new Thread(new Runnable() { Event event = new Event();
@Override
public void run() {
if (pad.poll()) {
EventQueue queue = pad.getEvents();
Event event = new Event();
while (queue.getNextEvent(event)) { for (int i = 0; i < 5; i++) {
if (!pad.poll()) { if (!pad.poll()) {
break; break;
}
}
}
} }
});
consumeEvents.setName("Consume Events Thread"); // Drop all events currently in the queue
consumeEvents.start(); while (queue.getNextEvent(event) && pad.poll());
// Give the queue a bit of time to fill again
try {
Thread.sleep(50);
} catch (InterruptedException e) {}
}
} }
/* /*