mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-26 22:43:05 +00:00
Move recapture on focus gain logic to InputCaptureProvider
This commit is contained in:
parent
8b692269c1
commit
530b48de71
@ -620,23 +620,9 @@ public class Game extends Activity implements SurfaceHolder.Callback,
|
|||||||
// lifted while focus was not on us. Clear the modifier state.
|
// lifted while focus was not on us. Clear the modifier state.
|
||||||
this.modifierFlags = 0;
|
this.modifierFlags = 0;
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
// With Android native pointer capture, capture is lost when focus is lost,
|
||||||
// Capture is lost when focus is lost, so it must be requested again
|
// so it must be requested again when focus is regained.
|
||||||
// when focus is regained.
|
inputCaptureProvider.onWindowFocusChanged(hasFocus);
|
||||||
if (inputCaptureProvider.isCapturingEnabled() && hasFocus) {
|
|
||||||
// Recapture the pointer if focus was regained. On Android Q,
|
|
||||||
// we have to delay a bit before requesting capture because otherwise
|
|
||||||
// we'll hit the "requestPointerCapture called for a window that has no focus"
|
|
||||||
// error and it will not actually capture the cursor.
|
|
||||||
Handler h = new Handler();
|
|
||||||
h.postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
streamView.requestPointerCapture();
|
|
||||||
}
|
|
||||||
}, 500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isRefreshRateGoodMatch(float refreshRate) {
|
private boolean isRefreshRateGoodMatch(float refreshRate) {
|
||||||
|
@ -3,6 +3,7 @@ package com.limelight.binding.input.capture;
|
|||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.os.Handler;
|
||||||
import android.view.InputDevice;
|
import android.view.InputDevice;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -36,6 +37,25 @@ public class AndroidNativePointerCaptureProvider extends AndroidPointerIconCaptu
|
|||||||
targetView.releasePointerCapture();
|
targetView.releasePointerCapture();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onWindowFocusChanged(boolean focusActive) {
|
||||||
|
if (!focusActive || !isCapturing) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recapture the pointer if focus was regained. On Android Q,
|
||||||
|
// we have to delay a bit before requesting capture because otherwise
|
||||||
|
// we'll hit the "requestPointerCapture called for a window that has no focus"
|
||||||
|
// error and it will not actually capture the cursor.
|
||||||
|
Handler h = new Handler();
|
||||||
|
h.postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
targetView.requestPointerCapture();
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean eventHasRelativeMouseAxes(MotionEvent event) {
|
public boolean eventHasRelativeMouseAxes(MotionEvent event) {
|
||||||
// SOURCE_MOUSE_RELATIVE is how SOURCE_MOUSE appears when our view has pointer capture.
|
// SOURCE_MOUSE_RELATIVE is how SOURCE_MOUSE appears when our view has pointer capture.
|
||||||
|
@ -33,4 +33,6 @@ public abstract class InputCaptureProvider {
|
|||||||
public float getRelativeAxisY(MotionEvent event) {
|
public float getRelativeAxisY(MotionEvent event) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onWindowFocusChanged(boolean focusActive) {}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user