Merge "Clear ref to animation after drag & drop animation completes" into ub-launcher3-edmonton
diff --git a/quickstep/src/com/android/launcher3/LauncherAnimationRunner.java b/quickstep/src/com/android/launcher3/LauncherAnimationRunner.java
index 29399142..e346310 100644
--- a/quickstep/src/com/android/launcher3/LauncherAnimationRunner.java
+++ b/quickstep/src/com/android/launcher3/LauncherAnimationRunner.java
@@ -118,6 +118,7 @@
finish();
} else if (mFinished) {
// Animation callback was already finished, skip the animation.
+ mAnimator.start();
mAnimator.end();
} else {
// Start the animation
diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index 2028501..c146246 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -275,8 +275,10 @@
}
private AnimatorSet createWindowAnimation(RemoteAnimationTargetCompat[] targetCompats) {
- LatencyTrackerCompat.logToggleRecents(
- (int) (SystemClock.uptimeMillis() - mToggleClickedTime));
+ if (LatencyTrackerCompat.isEnabled(mContext)) {
+ LatencyTrackerCompat.logToggleRecents(
+ (int) (SystemClock.uptimeMillis() - mToggleClickedTime));
+ }
if (mListener != null) {
mListener.unregister();
diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java
index 20ecde9..b472d61 100644
--- a/quickstep/src/com/android/quickstep/RecentsActivity.java
+++ b/quickstep/src/com/android/quickstep/RecentsActivity.java
@@ -59,6 +59,9 @@
import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
/**
* A simple activity to show the recently launched tasks
*/
@@ -271,4 +274,11 @@
.addCategory(Intent.CATEGORY_HOME)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
+
+ @Override
+ public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
+ super.dump(prefix, fd, writer, args);
+ writer.println(prefix + "Misc:");
+ dumpMisc(writer);
+ }
}
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index f29cc22..911a602 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -435,9 +435,8 @@
mLayoutListener.setHandler(this);
buildAnimationController();
- final long transitionDelay = mLauncherFrameDrawnTime - mTouchTimeMs;
if (LatencyTrackerCompat.isEnabled(mContext)) {
- LatencyTrackerCompat.logToggleRecents((int) transitionDelay);
+ LatencyTrackerCompat.logToggleRecents((int) (mLauncherFrameDrawnTime - mTouchTimeMs));
}
}
diff --git a/quickstep/src/com/android/quickstep/views/ShelfScrimView.java b/quickstep/src/com/android/quickstep/views/ShelfScrimView.java
index b47af2d..69b77b4 100644
--- a/quickstep/src/com/android/quickstep/views/ShelfScrimView.java
+++ b/quickstep/src/com/android/quickstep/views/ShelfScrimView.java
@@ -47,6 +47,7 @@
private static final int THRESHOLD_ALPHA_DARK = 102;
private static final int THRESHOLD_ALPHA_LIGHT = 46;
+ private static final int THRESHOLD_ALPHA_SUPER_LIGHT = 128;
// In transposed layout, we simply draw a flat color.
private boolean mDrawingFlatColor;
@@ -76,8 +77,13 @@
mMaxScrimAlpha = OVERVIEW.getWorkspaceScrimAlpha(mLauncher);
mEndAlpha = Color.alpha(mEndScrim);
- mThresholdAlpha = Themes.getAttrBoolean(mLauncher, R.attr.isMainColorDark)
- ? THRESHOLD_ALPHA_DARK : THRESHOLD_ALPHA_LIGHT;
+ if (Themes.getAttrBoolean(mLauncher, R.attr.isMainColorDark)) {
+ mThresholdAlpha = THRESHOLD_ALPHA_DARK;
+ } else if (Themes.getAttrBoolean(mLauncher, R.attr.isWorkspaceDarkText)) {
+ mThresholdAlpha = THRESHOLD_ALPHA_SUPER_LIGHT;
+ } else {
+ mThresholdAlpha = THRESHOLD_ALPHA_LIGHT;
+ }
mRadius = mLauncher.getResources().getDimension(R.dimen.shelf_surface_radius);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
diff --git a/src/com/android/launcher3/BaseActivity.java b/src/com/android/launcher3/BaseActivity.java
index 1f70cfa..3e4589d 100644
--- a/src/com/android/launcher3/BaseActivity.java
+++ b/src/com/android/launcher3/BaseActivity.java
@@ -17,6 +17,7 @@
package com.android.launcher3;
import static com.android.launcher3.util.SystemUiController.UI_STATE_OVERVIEW;
+
import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.app.Activity;
@@ -24,15 +25,14 @@
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.res.Configuration;
-import android.graphics.Point;
import android.support.annotation.IntDef;
-import android.view.Display;
import android.view.View.AccessibilityDelegate;
import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
import com.android.launcher3.logging.UserEventDispatcher;
import com.android.launcher3.util.SystemUiController;
+import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.util.ArrayList;
@@ -223,4 +223,12 @@
public interface MultiWindowModeChangedListener {
void onMultiWindowModeChanged(boolean isInMultiWindowMode);
}
+
+ protected void dumpMisc(PrintWriter writer) {
+ writer.println(" deviceProfile isTransposed=" + getDeviceProfile().isVerticalBarLayout());
+ writer.println(" orientation=" + getResources().getConfiguration().orientation);
+ writer.println(" mSystemUiController: " + mSystemUiController);
+ writer.println(" mActivityFlags: " + mActivityFlags);
+ writer.println(" mForceInvisible: " + mForceInvisible);
+ }
}
diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java
index 168bd08..8d79737 100644
--- a/src/com/android/launcher3/IconCache.java
+++ b/src/com/android/launcher3/IconCache.java
@@ -107,6 +107,8 @@
private final BitmapFactory.Options mLowResOptions;
private final BitmapFactory.Options mHighResOptions;
+ private int mPendingIconRequestCount = 0;
+
public IconCache(Context context, InvariantDeviceProfile inv) {
mContext = context;
mPackageManager = context.getPackageManager();
@@ -411,8 +413,13 @@
*/
public IconLoadRequest updateIconInBackground(final ItemInfoUpdateReceiver caller,
final ItemInfoWithIcon info) {
- Runnable request = new Runnable() {
+ Preconditions.assertUIThread();
+ if (mPendingIconRequestCount <= 0) {
+ LauncherModel.setWorkerPriority(Process.THREAD_PRIORITY_FOREGROUND);
+ }
+ mPendingIconRequestCount ++;
+ IconLoadRequest request = new IconLoadRequest(mWorkerHandler, this::onIconRequestEnd) {
@Override
public void run() {
if (info instanceof AppInfo || info instanceof ShortcutInfo) {
@@ -420,17 +427,21 @@
} else if (info instanceof PackageItemInfo) {
getTitleAndIconForApp((PackageItemInfo) info, false);
}
- mMainThreadExecutor.execute(new Runnable() {
-
- @Override
- public void run() {
- caller.reapplyItemInfo(info);
- }
+ mMainThreadExecutor.execute(() -> {
+ caller.reapplyItemInfo(info);
+ onEnd();
});
}
};
- mWorkerHandler.post(request);
- return new IconLoadRequest(request, mWorkerHandler);
+ Utilities.postAsyncCallback(mWorkerHandler, request);
+ return request;
+ }
+
+ private void onIconRequestEnd() {
+ mPendingIconRequestCount --;
+ if (mPendingIconRequestCount <= 0) {
+ LauncherModel.setWorkerPriority(Process.THREAD_PRIORITY_BACKGROUND);
+ }
}
/**
@@ -707,17 +718,27 @@
return false;
}
- public static class IconLoadRequest {
- private final Runnable mRunnable;
+ public static abstract class IconLoadRequest implements Runnable {
private final Handler mHandler;
+ private final Runnable mEndRunnable;
- IconLoadRequest(Runnable runnable, Handler handler) {
- mRunnable = runnable;
+ private boolean mEnded = false;
+
+ IconLoadRequest(Handler handler, Runnable endRunnable) {
mHandler = handler;
+ mEndRunnable = endRunnable;
}
public void cancel() {
- mHandler.removeCallbacks(mRunnable);
+ mHandler.removeCallbacks(this);
+ onEnd();
+ }
+
+ public void onEnd() {
+ if (!mEnded) {
+ mEnded = true;
+ mEndRunnable.run();
+ }
}
}
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 12d29a8..bf73149 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2279,8 +2279,8 @@
writer.print(prefix + "\tmWorkspaceLoading=" + mWorkspaceLoading);
writer.print(" mPendingRequestArgs=" + mPendingRequestArgs);
writer.println(" mPendingActivityResult=" + mPendingActivityResult);
- writer.println(" deviceProfile isTransposed=" + getDeviceProfile().isVerticalBarLayout());
- writer.println(" orientation=" + getResources().getConfiguration().orientation);
+ writer.println(" mRotationHelper: " + mRotationHelper);
+ dumpMisc(writer);
try {
FileLog.flushAll(writer);
diff --git a/src/com/android/launcher3/qsb/QsbWidgetHostView.java b/src/com/android/launcher3/qsb/QsbWidgetHostView.java
index a8a41f6..7d8a4db 100644
--- a/src/com/android/launcher3/qsb/QsbWidgetHostView.java
+++ b/src/com/android/launcher3/qsb/QsbWidgetHostView.java
@@ -73,6 +73,18 @@
return getDefaultView(this);
}
+ @Override
+ protected View getDefaultView() {
+ View v = super.getDefaultView();
+ v.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Launcher.getLauncher(getContext()).startSearch("", false, null, true);
+ }
+ });
+ return v;
+ }
+
public static View getDefaultView(ViewGroup parent) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.qsb_default_view, parent, false);
diff --git a/src/com/android/launcher3/states/RotationHelper.java b/src/com/android/launcher3/states/RotationHelper.java
index 0036bb9..e866445 100644
--- a/src/com/android/launcher3/states/RotationHelper.java
+++ b/src/com/android/launcher3/states/RotationHelper.java
@@ -150,4 +150,12 @@
mActivity.setRequestedOrientation(activityFlags);
}
}
+
+ @Override
+ public String toString() {
+ return String.format("[mStateHandlerRequest=%d, mCurrentStateRequest=%d,"
+ + " mLastActivityFlags=%d, mIgnoreAutoRotateSettings=%b, mAutoRotateEnabled=%b]",
+ mStateHandlerRequest, mCurrentStateRequest, mLastActivityFlags,
+ mIgnoreAutoRotateSettings, mAutoRotateEnabled);
+ }
}
diff --git a/src/com/android/launcher3/util/SystemUiController.java b/src/com/android/launcher3/util/SystemUiController.java
index 7ef53a9..86995b7 100644
--- a/src/com/android/launcher3/util/SystemUiController.java
+++ b/src/com/android/launcher3/util/SystemUiController.java
@@ -16,11 +16,14 @@
package com.android.launcher3.util;
+import android.text.TextUtils;
import android.view.View;
import android.view.Window;
import com.android.launcher3.Utilities;
+import java.util.Arrays;
+
/**
* Utility class to manage various window flags to control system UI.
*/
@@ -78,4 +81,9 @@
mWindow.getDecorView().setSystemUiVisibility(newFlags);
}
}
+
+ @Override
+ public String toString() {
+ return "mStates=" + Arrays.toString(mStates);
+ }
}