diff options
Diffstat (limited to 'quickstep/src/com/android/quickstep/util/InputConsumerProxy.java')
-rw-r--r-- | quickstep/src/com/android/quickstep/util/InputConsumerProxy.java | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/quickstep/src/com/android/quickstep/util/InputConsumerProxy.java b/quickstep/src/com/android/quickstep/util/InputConsumerProxy.java index 91b53c7ff2..cb44a1a0d8 100644 --- a/quickstep/src/com/android/quickstep/util/InputConsumerProxy.java +++ b/quickstep/src/com/android/quickstep/util/InputConsumerProxy.java @@ -25,6 +25,8 @@ import android.view.InputEvent; import android.view.KeyEvent; import android.view.MotionEvent; +import androidx.annotation.Nullable; + import com.android.quickstep.InputConsumer; import com.android.quickstep.SimpleOrientationTouchTransformer; import com.android.systemui.shared.system.InputConsumerController; @@ -42,7 +44,10 @@ public class InputConsumerProxy { private final Context mContext; private final Supplier<Integer> mRotationSupplier; private final InputConsumerController mInputConsumerController; - private Runnable mCallback; + + /** Called if a new InputConsumer is created via touch down event. */ + private @Nullable Runnable mOnTouchDownCallback; + private Supplier<InputConsumer> mConsumerSupplier; // The consumer is created lazily on demand. @@ -54,11 +59,11 @@ public class InputConsumerProxy { public InputConsumerProxy(Context context, Supplier<Integer> rotationSupplier, InputConsumerController inputConsumerController, - Runnable callback, Supplier<InputConsumer> consumerSupplier) { + Runnable onTouchDownCallback, Supplier<InputConsumer> consumerSupplier) { mContext = context; mRotationSupplier = rotationSupplier; mInputConsumerController = inputConsumerController; - mCallback = callback; + mOnTouchDownCallback = onTouchDownCallback; mConsumerSupplier = consumerSupplier; } @@ -82,7 +87,7 @@ public class InputConsumerProxy { onInputConsumerMotionEvent(event); } } else if (ev instanceof KeyEvent) { - initInputConsumerIfNeeded(); + initInputConsumerIfNeeded(/* isFromTouchDown= */ false); mInputConsumer.onKeyEvent((KeyEvent) ev); return true; } @@ -105,7 +110,7 @@ public class InputConsumerProxy { if (action == ACTION_DOWN) { mTouchInProgress = true; - initInputConsumerIfNeeded(); + initInputConsumerIfNeeded(/* isFromTouchDown= */ true); } else if (action == ACTION_CANCEL || action == ACTION_UP) { // Finish any pending actions mTouchInProgress = false; @@ -123,7 +128,7 @@ public class InputConsumerProxy { } private void onInputConsumerHoverEvent(MotionEvent ev) { - initInputConsumerIfNeeded(); + initInputConsumerIfNeeded(/* isFromTouchDown= */ false); if (mInputConsumer != null) { SimpleOrientationTouchTransformer.INSTANCE.get(mContext).transform(ev, mRotationSupplier.get()); @@ -141,14 +146,15 @@ public class InputConsumerProxy { mInputConsumerController.setInputListener(null); } - public void unregisterCallback() { - mCallback = null; + /** Sets mOnToudhCownCallback = null. */ + public void unregisterOnTouchDownCallback() { + mOnTouchDownCallback = null; } - private void initInputConsumerIfNeeded() { + private void initInputConsumerIfNeeded(boolean isFromTouchDown) { if (mInputConsumer == null) { - if (mCallback != null) { - mCallback.run(); + if (isFromTouchDown && mOnTouchDownCallback != null) { + mOnTouchDownCallback.run(); } mInputConsumer = mConsumerSupplier.get(); mConsumerSupplier = null; |