From c6a4aeaf1e65ea7a243be68bb00340228ea03d62 Mon Sep 17 00:00:00 2001 From: endolf Date: Sun, 12 Aug 2007 21:59:25 +0000 Subject: [PATCH] Complete - task 36: Linux plugin not reporting normalised values https://jinput.dev.java.net/issues/show_bug.cgi?id=36 --- .../games/input/LinuxCombinedController.java | 32 +++++++++++++ .../games/input/LinuxEnvironmentPlugin.java | 46 +++++++++++++++---- .../java/games/input/LinuxJoystickButton.java | 2 +- .../java/games/input/LinuxJoystickPOV.java | 1 - 4 files changed, 71 insertions(+), 10 deletions(-) create mode 100644 plugins/linux/src/java/net/java/games/input/LinuxCombinedController.java diff --git a/plugins/linux/src/java/net/java/games/input/LinuxCombinedController.java b/plugins/linux/src/java/net/java/games/input/LinuxCombinedController.java new file mode 100644 index 0000000..a88c7c9 --- /dev/null +++ b/plugins/linux/src/java/net/java/games/input/LinuxCombinedController.java @@ -0,0 +1,32 @@ +package net.java.games.input; + +import java.io.IOException; + +public class LinuxCombinedController extends AbstractController { + + private LinuxAbstractController eventController; + private LinuxJoystickAbstractController joystickController; + + LinuxCombinedController(LinuxAbstractController eventController, LinuxJoystickAbstractController joystickController) { + super(eventController.getName(), joystickController.getComponents(), eventController.getControllers(), eventController.getRumblers()); + this.eventController = eventController; + this.joystickController = joystickController; + } + + protected boolean getNextDeviceEvent(Event event) throws IOException { + return joystickController.getNextDeviceEvent(event); + } + + public final PortType getPortType() { + return eventController.getPortType(); + } + + public final void pollDevice() throws IOException { + eventController.pollDevice(); + joystickController.pollDevice(); + } + + public Type getType() { + return eventController.getType(); + } +} diff --git a/plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java b/plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java index 2b93099..189747c 100644 --- a/plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java +++ b/plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java @@ -226,14 +226,44 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen private final Controller[] enumerateControllers() { List controllers = new ArrayList(); - enumerateEventControllers(controllers); - if (controllers.size() == 0) { - /* Some linux distros, even modern ones, can't figure out - * how to give event devices proper access rights, so we'll have - * to fallback to the legacy joystick interface. - */ - enumerateJoystickControllers(controllers); + List eventControllers = new ArrayList(); + List jsControllers = new ArrayList(); + enumerateEventControllers(eventControllers); + enumerateJoystickControllers(jsControllers); + + for(int i=0;i