Revert "Hide the mouse cursor during pointer capture to work around DeX bug"

It doesn't actually fix the bug.

This reverts commit 16b845ab84fbad8a6fc3a7c4b3c1ff0f875bc6b6.
This commit is contained in:
Cameron Gutman 2018-12-24 19:58:19 -08:00
parent 04e561fd54
commit 81582d7343
2 changed files with 4 additions and 24 deletions

View File

@ -1,46 +1,27 @@
package com.limelight.binding.input.capture; package com.limelight.binding.input.capture;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.os.Build; import android.os.Build;
import android.view.InputDevice; import android.view.InputDevice;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.PointerIcon;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
@TargetApi(Build.VERSION_CODES.O) @TargetApi(Build.VERSION_CODES.O)
public class AndroidNativePointerCaptureProvider extends InputCaptureProvider { public class AndroidNativePointerCaptureProvider extends InputCaptureProvider {
private Context context;
private View targetView;
private ViewGroup rootViewGroup;
public AndroidNativePointerCaptureProvider(Activity activity, View targetView) { private View targetView;
this.context = activity;
public AndroidNativePointerCaptureProvider(View targetView) {
this.targetView = targetView; this.targetView = targetView;
this.rootViewGroup = (ViewGroup) activity.getWindow().getDecorView();
} }
public static boolean isCaptureProviderSupported() { public static boolean isCaptureProviderSupported() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
} }
// DeX on Android 8.1 doesn't properly hide the mouse pointer when running in
// windowed mode, even though the cursor is properly captured (and thus doesn't move anymore).
// To work around this issue, hide the pointer icon when requesting pointer capture.
private void setPointerIconOnAllViews(PointerIcon icon) {
for (int i = 0; i < rootViewGroup.getChildCount(); i++) {
View view = rootViewGroup.getChildAt(i);
view.setPointerIcon(icon);
}
rootViewGroup.setPointerIcon(icon);
}
@Override @Override
public void enableCapture() { public void enableCapture() {
super.enableCapture(); super.enableCapture();
setPointerIconOnAllViews(PointerIcon.getSystemIcon(context, PointerIcon.TYPE_NULL));
targetView.requestPointerCapture(); targetView.requestPointerCapture();
} }
@ -48,7 +29,6 @@ public class AndroidNativePointerCaptureProvider extends InputCaptureProvider {
public void disableCapture() { public void disableCapture() {
super.disableCapture(); super.disableCapture();
targetView.releasePointerCapture(); targetView.releasePointerCapture();
setPointerIconOnAllViews(null);
} }
@Override @Override

View File

@ -12,7 +12,7 @@ public class InputCaptureManager {
public static InputCaptureProvider getInputCaptureProvider(Activity activity, EvdevListener rootListener) { public static InputCaptureProvider getInputCaptureProvider(Activity activity, EvdevListener rootListener) {
if (AndroidNativePointerCaptureProvider.isCaptureProviderSupported()) { if (AndroidNativePointerCaptureProvider.isCaptureProviderSupported()) {
LimeLog.info("Using Android O+ native mouse capture"); LimeLog.info("Using Android O+ native mouse capture");
return new AndroidNativePointerCaptureProvider(activity, activity.findViewById(R.id.surfaceView)); return new AndroidNativePointerCaptureProvider(activity.findViewById(R.id.surfaceView));
} }
// LineageOS implemented broken NVIDIA capture extensions, so avoid using them on root builds. // LineageOS implemented broken NVIDIA capture extensions, so avoid using them on root builds.
// See https://github.com/LineageOS/android_frameworks_base/commit/d304f478a023430f4712dbdc3ee69d9ad02cebd3 // See https://github.com/LineageOS/android_frameworks_base/commit/d304f478a023430f4712dbdc3ee69d9ad02cebd3