mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-03 09:26:51 +00:00
Merge "Revert "Invalidate when switching to new consumer"" into sc-dev
This commit is contained in:
@@ -63,7 +63,6 @@ import android.graphics.Matrix;
|
||||
import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.SystemClock;
|
||||
import android.view.MotionEvent;
|
||||
@@ -136,7 +135,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
protected final BaseActivityInterface<S, T> mActivityInterface;
|
||||
protected final InputConsumerProxy mInputConsumerProxy;
|
||||
protected final ActivityInitListener mActivityInitListener;
|
||||
private final Handler mHandler = new Handler();
|
||||
// Callbacks to be made once the recents animation starts
|
||||
private final ArrayList<Runnable> mRecentsAnimationStartCallbacks = new ArrayList<>();
|
||||
private final OnScrollChangedListener mOnRecentsScrollListener = this::onRecentsViewScroll;
|
||||
@@ -148,9 +146,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
protected Runnable mGestureEndCallback;
|
||||
protected MultiStateCallback mStateCallback;
|
||||
protected boolean mCanceled;
|
||||
// One time flag set when onConsumerAboutToBeSwitched() is called, indicating that certain
|
||||
// shared animations should not be canceled when this handler is invalidated
|
||||
private boolean mConsumerIsSwitching;
|
||||
private boolean mRecentsViewScrollLinked = false;
|
||||
|
||||
private static int getFlagForIndex(int index, String name) {
|
||||
@@ -1007,14 +1002,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
animateToProgress(startShift, endShift, duration, interpolator, endTarget, velocity);
|
||||
}
|
||||
|
||||
private int getLogGestureTaskIndex(@Nullable TaskView targetTask) {
|
||||
return mRecentsView == null || targetTask == null
|
||||
? LOG_NO_OP_PAGE_INDEX
|
||||
: mRecentsView.indexOfChild(targetTask);
|
||||
}
|
||||
|
||||
private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask,
|
||||
int pageIndex) {
|
||||
private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask) {
|
||||
StatsLogManager.EventEnum event;
|
||||
switch (endTarget) {
|
||||
case HOME:
|
||||
@@ -1043,6 +1031,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
// We probably never received an animation controller, skip logging.
|
||||
return;
|
||||
}
|
||||
int pageIndex = endTarget == LAST_TASK
|
||||
? LOG_NO_OP_PAGE_INDEX
|
||||
: mRecentsView.getNextPage();
|
||||
// TODO: set correct container using the pageIndex
|
||||
logger.log(event);
|
||||
}
|
||||
@@ -1294,18 +1285,18 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
}
|
||||
|
||||
public void onConsumerAboutToBeSwitched() {
|
||||
mConsumerIsSwitching = true;
|
||||
if (mActivity != null) {
|
||||
// In the off chance that the gesture ends before Launcher is started, we should clear
|
||||
// the callback here so that it doesn't update with the wrong state
|
||||
mActivity.clearRunOnceOnStartCallback();
|
||||
resetLauncherListeners();
|
||||
}
|
||||
if (mGestureState.getEndTarget() != null && !mGestureState.isRunningAnimationToLauncher()) {
|
||||
cancelCurrentAnimation();
|
||||
} else {
|
||||
mStateCallback.setStateOnUiThread(STATE_FINISH_WITH_NO_END);
|
||||
reset();
|
||||
}
|
||||
reset();
|
||||
}
|
||||
|
||||
public boolean isCanceled() {
|
||||
@@ -1316,14 +1307,13 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
private void resumeLastTask() {
|
||||
mRecentsAnimationController.finish(false /* toRecents */, null);
|
||||
ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false);
|
||||
doLogGesture(LAST_TASK, null, getLogGestureTaskIndex(null));
|
||||
doLogGesture(LAST_TASK, null);
|
||||
reset();
|
||||
}
|
||||
|
||||
@UiThread
|
||||
private void startNewTask() {
|
||||
TaskView taskToLaunch = mRecentsView == null ? null : mRecentsView.getNextPageTaskView();
|
||||
int taskPageIndex = getLogGestureTaskIndex(taskToLaunch);
|
||||
startNewTask(success -> {
|
||||
if (!success) {
|
||||
reset();
|
||||
@@ -1332,7 +1322,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
endLauncherTransitionController();
|
||||
updateSysUiFlags(1 /* windowProgress == overview */);
|
||||
}
|
||||
doLogGesture(NEW_TASK, taskToLaunch, taskPageIndex);
|
||||
doLogGesture(NEW_TASK, taskToLaunch);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1366,39 +1356,29 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
}
|
||||
|
||||
private void invalidateHandler() {
|
||||
if (!mConsumerIsSwitching) {
|
||||
if (!LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode()
|
||||
|| mGestureState.getEndTarget() != RECENTS) {
|
||||
mInputConsumerProxy.destroy();
|
||||
mTaskAnimationManager.setLiveTileCleanUpHandler(null);
|
||||
}
|
||||
endRunningWindowAnim(false /* cancel */);
|
||||
if (!LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode()
|
||||
|| mGestureState.getEndTarget() != RECENTS) {
|
||||
mInputConsumerProxy.destroy();
|
||||
mTaskAnimationManager.setLiveTileCleanUpHandler(null);
|
||||
}
|
||||
mInputConsumerProxy.unregisterCallback();
|
||||
endRunningWindowAnim(false /* cancel */);
|
||||
|
||||
if (mGestureEndCallback != null) {
|
||||
mGestureEndCallback.run();
|
||||
}
|
||||
if (mGestureEndCallback != null) {
|
||||
mGestureEndCallback.run();
|
||||
}
|
||||
|
||||
mInputConsumerProxy.unregisterCallback();
|
||||
mActivityInitListener.unregister();
|
||||
ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mActivityRestartListener);
|
||||
mTaskSnapshot = null;
|
||||
}
|
||||
|
||||
private void invalidateHandlerWithLauncher() {
|
||||
if (!mConsumerIsSwitching) {
|
||||
endLauncherTransitionController();
|
||||
mRecentsView.onGestureAnimationEnd();
|
||||
}
|
||||
endLauncherTransitionController();
|
||||
|
||||
mRecentsView.removeOnScrollChangedListener(mOnRecentsScrollListener);
|
||||
mRecentsView.onGestureAnimationEnd();
|
||||
resetLauncherListeners();
|
||||
|
||||
mHandler.post(() -> {
|
||||
// Defer clearing the activity since invalidation can happen over multiple callbacks.
|
||||
mActivity = null;
|
||||
mRecentsView = null;
|
||||
});
|
||||
}
|
||||
|
||||
private void endLauncherTransitionController() {
|
||||
@@ -1516,8 +1496,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
() -> mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED));
|
||||
}
|
||||
ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", true);
|
||||
TaskView taskToLaunch = mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView();
|
||||
doLogGesture(HOME, taskToLaunch, getLogGestureTaskIndex(taskToLaunch));
|
||||
doLogGesture(HOME, mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1548,8 +1527,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
}
|
||||
|
||||
SystemUiProxy.INSTANCE.get(mContext).onOverviewShown(false, TAG);
|
||||
TaskView taskToLaunch = mRecentsView.getCurrentPageTaskView();
|
||||
doLogGesture(RECENTS, taskToLaunch, getLogGestureTaskIndex(taskToLaunch));
|
||||
doLogGesture(RECENTS, mRecentsView.getCurrentPageTaskView());
|
||||
reset();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user