summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author wilsonshih <wilsonshih@google.com> 2023-03-10 02:54:06 +0000
committer wilsonshih <wilsonshih@google.com> 2023-03-14 03:17:19 +0000
commit936645000f49e9f50e29d2d6f0b9d3e0d12e14c8 (patch)
tree946083d1138acc3ea9a669dab614dd98fb744be3
parent34ab67a0a0bf0195d132a4114f10444709d13691 (diff)
Workaround to force show TaskFragment while back gesture animating.
Unlike Task and ActivityRecord, the TaskFragment won't show it's surface during animating, and the surface can be hide after close transition in Transitions#setupStartState. Bug: 271599041 Test: verify the TaskFragment can show during back gesture animation. Change-Id: I9a3d56d3e6c0cc9f735d82f99fd1fc04c329d690
-rw-r--r--services/core/java/com/android/server/wm/BackNavigationController.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/BackNavigationController.java b/services/core/java/com/android/server/wm/BackNavigationController.java
index f9f972c20ac6..b67bc62e52f1 100644
--- a/services/core/java/com/android/server/wm/BackNavigationController.java
+++ b/services/core/java/com/android/server/wm/BackNavigationController.java
@@ -862,8 +862,16 @@ class BackNavigationController {
WindowContainer target, boolean isOpen) {
final BackWindowAnimationAdaptor adaptor =
new BackWindowAnimationAdaptor(target, isOpen);
- target.startAnimation(target.getPendingTransaction(), adaptor, false /* hidden */,
- ANIMATION_TYPE_PREDICT_BACK);
+ final SurfaceControl.Transaction pt = target.getPendingTransaction();
+ target.startAnimation(pt, adaptor, false /* hidden */, ANIMATION_TYPE_PREDICT_BACK);
+ // Workaround to show TaskFragment which can be hide in Transitions and won't show
+ // during isAnimating.
+ if (isOpen && target.asActivityRecord() != null) {
+ final TaskFragment fragment = target.asActivityRecord().getTaskFragment();
+ if (fragment != null) {
+ pt.show(fragment.mSurfaceControl);
+ }
+ }
return adaptor;
}