Loading quickstep/src/com/android/quickstep/MotionEventQueue.java +10 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,8 @@ public class MotionEventQueue { ACTION_VIRTUAL | (5 << ACTION_POINTER_INDEX_SHIFT); private static final int ACTION_DEFER_INIT = ACTION_VIRTUAL | (6 << ACTION_POINTER_INDEX_SHIFT); private static final int ACTION_SHOW_OVERVIEW_FROM_ALT_TAB = ACTION_VIRTUAL | (7 << ACTION_POINTER_INDEX_SHIFT); private final EventArray mEmptyArray = new EventArray(); private final Object mExecutionLock = new Object(); Loading Loading @@ -161,6 +163,10 @@ public class MotionEventQueue { case ACTION_DEFER_INIT: mConsumer.deferInit(); break; case ACTION_SHOW_OVERVIEW_FROM_ALT_TAB: mConsumer.onShowOverviewFromAltTab(); mConsumer.updateTouchTracking(INTERACTION_QUICK_SCRUB); break; default: Log.e(TAG, "Invalid virtual event: " + event.getAction()); } Loading Loading @@ -197,6 +203,10 @@ public class MotionEventQueue { queueVirtualAction(ACTION_QUICK_SCRUB_START, 0); } public void onOverviewShownFromAltTab() { queueVirtualAction(ACTION_SHOW_OVERVIEW_FROM_ALT_TAB, 0); } public void onQuickScrubProgress(float progress) { queueVirtualAction(ACTION_QUICK_SCRUB_PROGRESS, progress); } Loading quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java +6 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ import android.graphics.Rect; import android.os.Build; import android.os.Bundle; import android.os.Looper; import android.util.Log; import android.os.SystemClock; import android.view.Choreographer; import android.view.Display; import android.view.MotionEvent; Loading Loading @@ -106,6 +106,11 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC mIsDeferredDownTarget = Arrays.binarySearch(DEFERRED_HIT_TARGETS, downHitTarget) >= 0; } @Override public void onShowOverviewFromAltTab() { startTouchTrackingForWindowAnimation(SystemClock.uptimeMillis()); } @Override public void accept(MotionEvent ev) { if (mVelocityTracker == null) { Loading quickstep/src/com/android/quickstep/TouchConsumer.java +2 −0 Original line number Diff line number Diff line Loading @@ -72,4 +72,6 @@ public interface TouchConsumer extends Consumer<MotionEvent> { default boolean forceToLauncherConsumer() { return false; } default void onShowOverviewFromAltTab() {} } quickstep/src/com/android/quickstep/TouchInteractionService.java +13 −4 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.MotionEvent.ACTION_MOVE; import static android.view.MotionEvent.ACTION_POINTER_DOWN; import static android.view.MotionEvent.ACTION_POINTER_UP; import static android.view.MotionEvent.ACTION_UP; import static com.android.launcher3.LauncherState.FAST_OVERVIEW; import static com.android.launcher3.LauncherState.NORMAL; Loading Loading @@ -54,6 +55,8 @@ import com.android.systemui.shared.recents.ISystemUiProxy; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.NavigationBarCompat.HitTarget; import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_NONE; /** * Service connected by system-UI for handling touch interaction. */ Loading Loading @@ -85,7 +88,7 @@ public class TouchInteractionService extends Service { @Override public void onPreMotionEvent(@HitTarget int downHitTarget) throws RemoteException { TraceHelper.beginSection("SysUiBinder"); onBinderPreMotionEvent(downHitTarget); setupTouchConsumer(downHitTarget); TraceHelper.partitionSection("SysUiBinder", "Down target " + downHitTarget); } Loading Loading @@ -139,14 +142,20 @@ public class TouchInteractionService extends Service { @Override public void onOverviewShown(boolean triggeredFromAltTab) { if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) { mOverviewCommandHelper.onOverviewShown(); if (triggeredFromAltTab) { setupTouchConsumer(HIT_TARGET_NONE); mEventQueue.onOverviewShownFromAltTab(); } } } @Override public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) { mOverviewCommandHelper.onOverviewHidden(); if (triggeredFromAltTab && !triggeredFromHomeKey) { // onOverviewShownFromAltTab initiates quick scrub. Ending it here. mEventQueue.onQuickScrubEnd(); } } } Loading Loading @@ -205,7 +214,7 @@ public class TouchInteractionService extends Service { return mMyBinder; } private void onBinderPreMotionEvent(@HitTarget int downHitTarget) { private void setupTouchConsumer(@HitTarget int downHitTarget) { mEventQueue.reset(); TouchConsumer oldConsumer = mEventQueue.getConsumer(); if (oldConsumer.deferNextEventToMainThread()) { Loading Loading
quickstep/src/com/android/quickstep/MotionEventQueue.java +10 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,8 @@ public class MotionEventQueue { ACTION_VIRTUAL | (5 << ACTION_POINTER_INDEX_SHIFT); private static final int ACTION_DEFER_INIT = ACTION_VIRTUAL | (6 << ACTION_POINTER_INDEX_SHIFT); private static final int ACTION_SHOW_OVERVIEW_FROM_ALT_TAB = ACTION_VIRTUAL | (7 << ACTION_POINTER_INDEX_SHIFT); private final EventArray mEmptyArray = new EventArray(); private final Object mExecutionLock = new Object(); Loading Loading @@ -161,6 +163,10 @@ public class MotionEventQueue { case ACTION_DEFER_INIT: mConsumer.deferInit(); break; case ACTION_SHOW_OVERVIEW_FROM_ALT_TAB: mConsumer.onShowOverviewFromAltTab(); mConsumer.updateTouchTracking(INTERACTION_QUICK_SCRUB); break; default: Log.e(TAG, "Invalid virtual event: " + event.getAction()); } Loading Loading @@ -197,6 +203,10 @@ public class MotionEventQueue { queueVirtualAction(ACTION_QUICK_SCRUB_START, 0); } public void onOverviewShownFromAltTab() { queueVirtualAction(ACTION_SHOW_OVERVIEW_FROM_ALT_TAB, 0); } public void onQuickScrubProgress(float progress) { queueVirtualAction(ACTION_QUICK_SCRUB_PROGRESS, progress); } Loading
quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java +6 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ import android.graphics.Rect; import android.os.Build; import android.os.Bundle; import android.os.Looper; import android.util.Log; import android.os.SystemClock; import android.view.Choreographer; import android.view.Display; import android.view.MotionEvent; Loading Loading @@ -106,6 +106,11 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC mIsDeferredDownTarget = Arrays.binarySearch(DEFERRED_HIT_TARGETS, downHitTarget) >= 0; } @Override public void onShowOverviewFromAltTab() { startTouchTrackingForWindowAnimation(SystemClock.uptimeMillis()); } @Override public void accept(MotionEvent ev) { if (mVelocityTracker == null) { Loading
quickstep/src/com/android/quickstep/TouchConsumer.java +2 −0 Original line number Diff line number Diff line Loading @@ -72,4 +72,6 @@ public interface TouchConsumer extends Consumer<MotionEvent> { default boolean forceToLauncherConsumer() { return false; } default void onShowOverviewFromAltTab() {} }
quickstep/src/com/android/quickstep/TouchInteractionService.java +13 −4 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.MotionEvent.ACTION_MOVE; import static android.view.MotionEvent.ACTION_POINTER_DOWN; import static android.view.MotionEvent.ACTION_POINTER_UP; import static android.view.MotionEvent.ACTION_UP; import static com.android.launcher3.LauncherState.FAST_OVERVIEW; import static com.android.launcher3.LauncherState.NORMAL; Loading Loading @@ -54,6 +55,8 @@ import com.android.systemui.shared.recents.ISystemUiProxy; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.NavigationBarCompat.HitTarget; import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_NONE; /** * Service connected by system-UI for handling touch interaction. */ Loading Loading @@ -85,7 +88,7 @@ public class TouchInteractionService extends Service { @Override public void onPreMotionEvent(@HitTarget int downHitTarget) throws RemoteException { TraceHelper.beginSection("SysUiBinder"); onBinderPreMotionEvent(downHitTarget); setupTouchConsumer(downHitTarget); TraceHelper.partitionSection("SysUiBinder", "Down target " + downHitTarget); } Loading Loading @@ -139,14 +142,20 @@ public class TouchInteractionService extends Service { @Override public void onOverviewShown(boolean triggeredFromAltTab) { if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) { mOverviewCommandHelper.onOverviewShown(); if (triggeredFromAltTab) { setupTouchConsumer(HIT_TARGET_NONE); mEventQueue.onOverviewShownFromAltTab(); } } } @Override public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) { mOverviewCommandHelper.onOverviewHidden(); if (triggeredFromAltTab && !triggeredFromHomeKey) { // onOverviewShownFromAltTab initiates quick scrub. Ending it here. mEventQueue.onQuickScrubEnd(); } } } Loading Loading @@ -205,7 +214,7 @@ public class TouchInteractionService extends Service { return mMyBinder; } private void onBinderPreMotionEvent(@HitTarget int downHitTarget) { private void setupTouchConsumer(@HitTarget int downHitTarget) { mEventQueue.reset(); TouchConsumer oldConsumer = mEventQueue.getConsumer(); if (oldConsumer.deferNextEventToMainThread()) { Loading