From f07c88671139fbe7e3f65f113ed3c31b24a9c19d Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 31 May 2017 21:24:41 -0700 Subject: [PATCH] Add isCapturing() method to mouse capture providers --- .../AndroidNativePointerCaptureProvider.java | 9 ++++++++- .../AndroidPointerIconCaptureProvider.java | 2 ++ .../input/capture/InputCaptureProvider.java | 15 +++++++++++++-- .../input/capture/NullCaptureProvider.java | 8 +------- .../input/capture/ShieldCaptureProvider.java | 2 ++ .../binding/input/evdev/EvdevCaptureProvider.java | 2 ++ 6 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/limelight/binding/input/capture/AndroidNativePointerCaptureProvider.java b/app/src/main/java/com/limelight/binding/input/capture/AndroidNativePointerCaptureProvider.java index d33cbc66..d2b16ae3 100644 --- a/app/src/main/java/com/limelight/binding/input/capture/AndroidNativePointerCaptureProvider.java +++ b/app/src/main/java/com/limelight/binding/input/capture/AndroidNativePointerCaptureProvider.java @@ -21,17 +21,24 @@ public class AndroidNativePointerCaptureProvider extends InputCaptureProvider { @Override public void enableCapture() { + super.enableCapture(); targetView.requestPointerCapture(); } @Override public void disableCapture() { + super.disableCapture(); targetView.releasePointerCapture(); } + @Override + public boolean isCapturing() { + return targetView.hasPointerCapture(); + } + @Override public boolean eventHasRelativeMouseAxes(MotionEvent event) { - return (event.getSource() & InputDevice.SOURCE_MOUSE_RELATIVE) != 0; + return event.getSource() == InputDevice.SOURCE_MOUSE_RELATIVE; } @Override diff --git a/app/src/main/java/com/limelight/binding/input/capture/AndroidPointerIconCaptureProvider.java b/app/src/main/java/com/limelight/binding/input/capture/AndroidPointerIconCaptureProvider.java index f5069d38..6774bfdf 100644 --- a/app/src/main/java/com/limelight/binding/input/capture/AndroidPointerIconCaptureProvider.java +++ b/app/src/main/java/com/limelight/binding/input/capture/AndroidPointerIconCaptureProvider.java @@ -33,11 +33,13 @@ public class AndroidPointerIconCaptureProvider extends InputCaptureProvider { @Override public void enableCapture() { + super.enableCapture(); setPointerIconOnAllViews(PointerIcon.getSystemIcon(context, PointerIcon.TYPE_NULL)); } @Override public void disableCapture() { + super.disableCapture(); setPointerIconOnAllViews(null); } diff --git a/app/src/main/java/com/limelight/binding/input/capture/InputCaptureProvider.java b/app/src/main/java/com/limelight/binding/input/capture/InputCaptureProvider.java index 3de18c37..cea2bd61 100644 --- a/app/src/main/java/com/limelight/binding/input/capture/InputCaptureProvider.java +++ b/app/src/main/java/com/limelight/binding/input/capture/InputCaptureProvider.java @@ -3,10 +3,21 @@ package com.limelight.binding.input.capture; import android.view.MotionEvent; public abstract class InputCaptureProvider { - public abstract void enableCapture(); - public abstract void disableCapture(); + protected boolean isCapturing; + + public void enableCapture() { + isCapturing = true; + } + public void disableCapture() { + isCapturing = false; + } + public void destroy() {} + public boolean isCapturing() { + return isCapturing; + } + public boolean eventHasRelativeMouseAxes(MotionEvent event) { return false; } diff --git a/app/src/main/java/com/limelight/binding/input/capture/NullCaptureProvider.java b/app/src/main/java/com/limelight/binding/input/capture/NullCaptureProvider.java index 553816c0..d8d9cb80 100644 --- a/app/src/main/java/com/limelight/binding/input/capture/NullCaptureProvider.java +++ b/app/src/main/java/com/limelight/binding/input/capture/NullCaptureProvider.java @@ -1,10 +1,4 @@ package com.limelight.binding.input.capture; -public class NullCaptureProvider extends InputCaptureProvider { - @Override - public void enableCapture() {} - - @Override - public void disableCapture() {} -} +public class NullCaptureProvider extends InputCaptureProvider {} diff --git a/app/src/main/java/com/limelight/binding/input/capture/ShieldCaptureProvider.java b/app/src/main/java/com/limelight/binding/input/capture/ShieldCaptureProvider.java index 98bbf7da..64e67573 100644 --- a/app/src/main/java/com/limelight/binding/input/capture/ShieldCaptureProvider.java +++ b/app/src/main/java/com/limelight/binding/input/capture/ShieldCaptureProvider.java @@ -63,11 +63,13 @@ public class ShieldCaptureProvider extends InputCaptureProvider { @Override public void enableCapture() { + super.enableCapture(); setCursorVisibility(false); } @Override public void disableCapture() { + super.disableCapture(); setCursorVisibility(true); } diff --git a/app/src/main/java/com/limelight/binding/input/evdev/EvdevCaptureProvider.java b/app/src/main/java/com/limelight/binding/input/evdev/EvdevCaptureProvider.java index 8b60a2d1..47f8dd2a 100644 --- a/app/src/main/java/com/limelight/binding/input/evdev/EvdevCaptureProvider.java +++ b/app/src/main/java/com/limelight/binding/input/evdev/EvdevCaptureProvider.java @@ -221,6 +221,7 @@ public class EvdevCaptureProvider extends InputCaptureProvider { @Override public void enableCapture() { + super.enableCapture(); if (!started) { // Start the handler thread if it's our first time // capturing @@ -247,6 +248,7 @@ public class EvdevCaptureProvider extends InputCaptureProvider { @Override public void disableCapture() { + super.disableCapture(); // This may be called on the main thread runInNetworkSafeContextSynchronously(new Runnable() { @Override