Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c0d00fa authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Workaround to ensure we cancel the recents animation prior to starting home" into pi-dev

parents 20c294be 703719be
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -376,6 +376,11 @@ public abstract class ActivityManagerInternal {
     */
    public abstract boolean isRecentsComponentHomeActivity(int userId);

    /**
     * Cancels any currently running recents animation.
     */
    public abstract void cancelRecentsAnimation(boolean restoreHomeStackPosition);

    /**
     * Whether an UID is active or idle.
     */
+0 −7
Original line number Diff line number Diff line
@@ -269,13 +269,6 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
                }
                if (mCode != 0) {
                    if (doIt) {
                        // If there was a pending remote recents animation, then we need to
                        // cancel the animation now before we handle the button itself. In the case
                        // where we are going home and the recents animation has already started,
                        // just cancel the recents animation, leaving the home stack in place
                        boolean isHomeKey = mCode == KEYCODE_HOME;
                        ActivityManagerWrapper.getInstance().cancelRecentsAnimation(!isHomeKey);

                        sendEvent(KeyEvent.ACTION_UP, 0);
                        sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
                    } else {
+5 −0
Original line number Diff line number Diff line
@@ -26632,6 +26632,11 @@ public class ActivityManagerService extends IActivityManager.Stub
            return getRecentTasks().isRecentsComponentHomeActivity(userId);
        }
        @Override
        public void cancelRecentsAnimation(boolean restoreHomeStackPosition) {
            ActivityManagerService.this.cancelRecentsAnimation(restoreHomeStackPosition);
        }
        @Override
        public boolean isUidActive(int uid) {
            synchronized (ActivityManagerService.this) {
+8 −0
Original line number Diff line number Diff line
@@ -6091,6 +6091,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                && (!isNavBarVirtKey || mNavBarVirtualKeyHapticFeedbackEnabled)
                && event.getRepeatCount() == 0;

        // Cancel any pending remote recents animations before handling the button itself. In the
        // case where we are going home and the recents animation has already started, just cancel
        // the recents animation, leaving the home stack in place for the pending start activity
        if (isNavBarVirtKey && !down) {
            boolean isHomeKey = keyCode == KeyEvent.KEYCODE_HOME;
            mActivityManagerInternal.cancelRecentsAnimation(!isHomeKey);
        }

        // Handle special keys.
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK: {
+1 −1
Original line number Diff line number Diff line
@@ -369,7 +369,7 @@ public class RecentsAnimationController implements DeathRecipient {
    }

    void cancelAnimation(@ReorderMode int reorderMode, String reason) {
        if (DEBUG_RECENTS_ANIMATIONS) Slog.d(TAG, "cancelAnimation()");
        if (DEBUG_RECENTS_ANIMATIONS) Slog.d(TAG, "cancelAnimation(): reason=" + reason);
        synchronized (mService.getWindowManagerLock()) {
            if (mCanceled) {
                // We've already canceled the animation
Loading