From d04df4ebe5375602dc830fc58d43542abbe44856 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 16 Sep 2022 17:41:52 -0500 Subject: [PATCH] Fix D-Pad buttons not releasing until all D-Pad input has ceased --- .../VirtualControllerConfigurationLoader.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerConfigurationLoader.java b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerConfigurationLoader.java index d38099a9..55e438f7 100644 --- a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerConfigurationLoader.java +++ b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualControllerConfigurationLoader.java @@ -40,27 +40,31 @@ public class VirtualControllerConfigurationLoader { VirtualController.ControllerInputContext inputContext = controller.getControllerInputContext(); - if (direction == DigitalPad.DIGITAL_PAD_DIRECTION_NO_DIRECTION) { - inputContext.inputMap &= ~ControllerPacket.LEFT_FLAG; - inputContext.inputMap &= ~ControllerPacket.RIGHT_FLAG; - inputContext.inputMap &= ~ControllerPacket.UP_FLAG; - inputContext.inputMap &= ~ControllerPacket.DOWN_FLAG; - - controller.sendControllerInputContext(); - return; - } - if ((direction & DigitalPad.DIGITAL_PAD_DIRECTION_LEFT) > 0) { + if ((direction & DigitalPad.DIGITAL_PAD_DIRECTION_LEFT) != 0) { inputContext.inputMap |= ControllerPacket.LEFT_FLAG; } - if ((direction & DigitalPad.DIGITAL_PAD_DIRECTION_RIGHT) > 0) { + else { + inputContext.inputMap &= ~ControllerPacket.LEFT_FLAG; + } + if ((direction & DigitalPad.DIGITAL_PAD_DIRECTION_RIGHT) != 0) { inputContext.inputMap |= ControllerPacket.RIGHT_FLAG; } - if ((direction & DigitalPad.DIGITAL_PAD_DIRECTION_UP) > 0) { + else { + inputContext.inputMap &= ~ControllerPacket.RIGHT_FLAG; + } + if ((direction & DigitalPad.DIGITAL_PAD_DIRECTION_UP) != 0) { inputContext.inputMap |= ControllerPacket.UP_FLAG; } - if ((direction & DigitalPad.DIGITAL_PAD_DIRECTION_DOWN) > 0) { + else { + inputContext.inputMap &= ~ControllerPacket.UP_FLAG; + } + if ((direction & DigitalPad.DIGITAL_PAD_DIRECTION_DOWN) != 0) { inputContext.inputMap |= ControllerPacket.DOWN_FLAG; } + else { + inputContext.inputMap &= ~ControllerPacket.DOWN_FLAG; + } + controller.sendControllerInputContext(); } });