From b07ffbde29f4d726dcad648723c3e2666605e0d9 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 15 Sep 2022 01:59:29 -0500 Subject: [PATCH] Consolidate OSC timers --- .../input/virtual_controller/DigitalButton.java | 13 +------------ .../virtual_controller/VirtualController.java | 17 +++++++++++------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/limelight/binding/input/virtual_controller/DigitalButton.java b/app/src/main/java/com/limelight/binding/input/virtual_controller/DigitalButton.java index c452e6e4..6cbd792e 100644 --- a/app/src/main/java/com/limelight/binding/input/virtual_controller/DigitalButton.java +++ b/app/src/main/java/com/limelight/binding/input/virtual_controller/DigitalButton.java @@ -14,7 +14,6 @@ import android.view.MotionEvent; import java.util.ArrayList; import java.util.List; -import java.util.Timer; import java.util.TimerTask; /** @@ -57,7 +56,6 @@ public class DigitalButton extends VirtualControllerElement { private String text = ""; private int icon = -1; private long timerLongClickTimeout = 3000; - private Timer timerLongClick = null; private TimerLongClickTimerTask longClickTimerTask = null; private final Paint paint = new Paint(); @@ -177,18 +175,13 @@ public class DigitalButton extends VirtualControllerElement { listener.onClick(); } - if (timerLongClick != null) { - timerLongClick.cancel(); - timerLongClick = null; - } if (longClickTimerTask != null) { longClickTimerTask.cancel(); longClickTimerTask = null; } - timerLongClick = new Timer(); longClickTimerTask = new TimerLongClickTimerTask(); - timerLongClick.schedule(longClickTimerTask, timerLongClickTimeout); + virtualController.getTimer().schedule(longClickTimerTask, timerLongClickTimeout); } private void onLongClickCallback() { @@ -207,10 +200,6 @@ public class DigitalButton extends VirtualControllerElement { } // We may be called for a release without a prior click - if (timerLongClick != null) { - timerLongClick.cancel(); - timerLongClick = null; - } if (longClickTimerTask != null) { longClickTimerTask.cancel(); longClickTimerTask = null; diff --git a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualController.java b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualController.java index db7068ad..c895ca03 100644 --- a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualController.java +++ b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualController.java @@ -41,11 +41,11 @@ public class VirtualController { private final ControllerHandler controllerHandler; private final Context context; + private final Timer timer; + private TimerTask retransmitTimerTask; private FrameLayout frame_layout = null; - private Timer retransmitTimer; - ControllerMode currentMode = ControllerMode.Active; ControllerInputContext inputContext = new ControllerInputContext(); @@ -57,6 +57,7 @@ public class VirtualController { this.controllerHandler = controllerHandler; this.frame_layout = layout; this.context = context; + this.timer = new Timer("OSC timer", true); buttonConfigure = new Button(context); buttonConfigure.setAlpha(0.25f); @@ -91,8 +92,12 @@ public class VirtualController { } + Timer getTimer() { + return timer; + } + public void hide() { - retransmitTimer.cancel(); + retransmitTimerTask.cancel(); for (VirtualControllerElement element : elements) { element.setVisibility(View.INVISIBLE); @@ -112,13 +117,13 @@ public class VirtualController { // very shortly after another. This can be critical if an axis zeroing packet // is lost and causes an analog stick to get stuck. To avoid this, we send // a gamepad input packet every 100 ms to ensure any loss can be recovered. - retransmitTimer = new Timer("OSC timer", true); - retransmitTimer.schedule(new TimerTask() { + retransmitTimerTask = new TimerTask() { @Override public void run() { sendControllerInputContext(); } - }, 100, 100); + }; + timer.schedule(retransmitTimerTask, 100, 100); } public void removeElements() {