Fix no thumbnail animation from app to recents.
Bug: 25584190
Change-Id: Ifdb7e51f077ddeff907c1e23c925cd374ed794b0
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 68034c8..25ef8e6 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -295,6 +295,9 @@
Bitmap getAppTransitionThumbnailHeader(int taskId) {
AppTransitionAnimationSpec spec = mNextAppTransitionAnimationsSpecs.get(taskId);
+ if (spec == null) {
+ spec = mDefaultNextAppTransitionAnimationSpec;
+ }
return spec != null ? spec.bitmap : null;
}
@@ -545,6 +548,9 @@
void getNextAppTransitionStartRect(int taskId, Rect rect) {
AppTransitionAnimationSpec spec = mNextAppTransitionAnimationsSpecs.get(taskId);
+ if (spec == null) {
+ spec = mDefaultNextAppTransitionAnimationSpec;
+ }
if (spec == null || spec.rect == null) {
Slog.wtf(TAG, "Starting rect for task: " + taskId + " requested, but not available",
new Throwable());
@@ -554,9 +560,10 @@
}
}
- private void putDefaultNextAppTransitionCoordinates(int left, int top, int width, int height) {
+ private void putDefaultNextAppTransitionCoordinates(int left, int top, int width, int height,
+ Bitmap bitmap) {
mDefaultNextAppTransitionAnimationSpec = new AppTransitionAnimationSpec(-1 /* taskId */,
- null /* bitmap */, new Rect(left, top, left + width, top + height));
+ bitmap, new Rect(left, top, left + width, top + height));
}
private Animation createClipRevealAnimationLocked(int transit, boolean enter, Rect appFrame) {
@@ -1346,7 +1353,7 @@
mNextAppTransitionPackage = null;
mNextAppTransitionAnimationsSpecs.clear();
putDefaultNextAppTransitionCoordinates(startX, startY, startX + startWidth,
- startY + startHeight);
+ startY + startHeight, null);
postAnimationCallback();
mNextAppTransitionCallback = null;
mAnimationFinishedCallback = null;
@@ -1357,7 +1364,7 @@
int startWidth, int startHeight) {
if (isTransitionSet()) {
mNextAppTransitionType = NEXT_TRANSIT_TYPE_CLIP_REVEAL;
- putDefaultNextAppTransitionCoordinates(startX, startY, startWidth, startHeight);
+ putDefaultNextAppTransitionCoordinates(startX, startY, startWidth, startHeight, null);
postAnimationCallback();
mNextAppTransitionCallback = null;
mAnimationFinishedCallback = null;
@@ -1372,7 +1379,7 @@
mNextAppTransitionPackage = null;
mNextAppTransitionAnimationsSpecs.clear();
mNextAppTransitionScaleUp = scaleUp;
- putDefaultNextAppTransitionCoordinates(startX, startY, 0 ,0);
+ putDefaultNextAppTransitionCoordinates(startX, startY, 0, 0, srcThumb);
postAnimationCallback();
mNextAppTransitionCallback = startedCallback;
mAnimationFinishedCallback = null;
@@ -1389,7 +1396,8 @@
mNextAppTransitionPackage = null;
mNextAppTransitionAnimationsSpecs.clear();
mNextAppTransitionScaleUp = scaleUp;
- putDefaultNextAppTransitionCoordinates(startX, startY, targetWidth, targetHeight);
+ putDefaultNextAppTransitionCoordinates(startX, startY, targetWidth, targetHeight,
+ srcThumb);
postAnimationCallback();
mNextAppTransitionCallback = startedCallback;
mAnimationFinishedCallback = null;
@@ -1417,7 +1425,7 @@
// be set.
Rect rect = spec.rect;
putDefaultNextAppTransitionCoordinates(rect.left, rect.top, rect.width(),
- rect.height());
+ rect.height(), null);
}
}
}