Add isCapturing() method to mouse capture providers

This commit is contained in:
Cameron Gutman 2017-05-31 21:24:41 -07:00
parent e66b1ebec9
commit f07c886711
6 changed files with 28 additions and 10 deletions

View File

@ -21,17 +21,24 @@ public class AndroidNativePointerCaptureProvider extends InputCaptureProvider {
@Override @Override
public void enableCapture() { public void enableCapture() {
super.enableCapture();
targetView.requestPointerCapture(); targetView.requestPointerCapture();
} }
@Override @Override
public void disableCapture() { public void disableCapture() {
super.disableCapture();
targetView.releasePointerCapture(); targetView.releasePointerCapture();
} }
@Override
public boolean isCapturing() {
return targetView.hasPointerCapture();
}
@Override @Override
public boolean eventHasRelativeMouseAxes(MotionEvent event) { public boolean eventHasRelativeMouseAxes(MotionEvent event) {
return (event.getSource() & InputDevice.SOURCE_MOUSE_RELATIVE) != 0; return event.getSource() == InputDevice.SOURCE_MOUSE_RELATIVE;
} }
@Override @Override

View File

@ -33,11 +33,13 @@ public class AndroidPointerIconCaptureProvider extends InputCaptureProvider {
@Override @Override
public void enableCapture() { public void enableCapture() {
super.enableCapture();
setPointerIconOnAllViews(PointerIcon.getSystemIcon(context, PointerIcon.TYPE_NULL)); setPointerIconOnAllViews(PointerIcon.getSystemIcon(context, PointerIcon.TYPE_NULL));
} }
@Override @Override
public void disableCapture() { public void disableCapture() {
super.disableCapture();
setPointerIconOnAllViews(null); setPointerIconOnAllViews(null);
} }

View File

@ -3,10 +3,21 @@ package com.limelight.binding.input.capture;
import android.view.MotionEvent; import android.view.MotionEvent;
public abstract class InputCaptureProvider { public abstract class InputCaptureProvider {
public abstract void enableCapture(); protected boolean isCapturing;
public abstract void disableCapture();
public void enableCapture() {
isCapturing = true;
}
public void disableCapture() {
isCapturing = false;
}
public void destroy() {} public void destroy() {}
public boolean isCapturing() {
return isCapturing;
}
public boolean eventHasRelativeMouseAxes(MotionEvent event) { public boolean eventHasRelativeMouseAxes(MotionEvent event) {
return false; return false;
} }

View File

@ -1,10 +1,4 @@
package com.limelight.binding.input.capture; package com.limelight.binding.input.capture;
public class NullCaptureProvider extends InputCaptureProvider { public class NullCaptureProvider extends InputCaptureProvider {}
@Override
public void enableCapture() {}
@Override
public void disableCapture() {}
}

View File

@ -63,11 +63,13 @@ public class ShieldCaptureProvider extends InputCaptureProvider {
@Override @Override
public void enableCapture() { public void enableCapture() {
super.enableCapture();
setCursorVisibility(false); setCursorVisibility(false);
} }
@Override @Override
public void disableCapture() { public void disableCapture() {
super.disableCapture();
setCursorVisibility(true); setCursorVisibility(true);
} }

View File

@ -221,6 +221,7 @@ public class EvdevCaptureProvider extends InputCaptureProvider {
@Override @Override
public void enableCapture() { public void enableCapture() {
super.enableCapture();
if (!started) { if (!started) {
// Start the handler thread if it's our first time // Start the handler thread if it's our first time
// capturing // capturing
@ -247,6 +248,7 @@ public class EvdevCaptureProvider extends InputCaptureProvider {
@Override @Override
public void disableCapture() { public void disableCapture() {
super.disableCapture();
// This may be called on the main thread // This may be called on the main thread
runInNetworkSafeContextSynchronously(new Runnable() { runInNetworkSafeContextSynchronously(new Runnable() {
@Override @Override