summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
author ot903107 <ot_zhenhua.deng@mediatek.com> 2023-09-14 14:10:56 +0800
committer chuanghua zhao <Chuanghua.Zhao@mediatek.com> 2023-11-29 01:05:59 +0000
commit35c3af360d50355c66da913ac25440f92c16d8f6 (patch)
treed35b6c5b59b2be9998dcd5a2e33882862a5ece86 /libs
parent03bf86430d85cc61a0a5a8ce531c8a2956b7ec47 (diff)
Prevent duplicate release same transaction from TransactionPool
Sometimes split transition immediatelly abort due to app does't support multiwindow or other reasons, it may cause the fadeAnimation duplicate release same transaction with SplashScreen exit shiftUpAnimation. Bug: 295124138 Test: run auto monkey test Change-Id: I17c73b8dae9e0f32558bc3401877dcc82bc66f70
Diffstat (limited to 'libs')
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java
index d21f8a48e62a..3a230f2bca86 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java
@@ -478,18 +478,20 @@ class SplitScreenTransitions {
private void startFadeAnimation(@NonNull SurfaceControl leash, boolean show) {
final float end = show ? 1.f : 0.f;
final float start = 1.f - end;
- final SurfaceControl.Transaction transaction = mTransactionPool.acquire();
final ValueAnimator va = ValueAnimator.ofFloat(start, end);
va.setDuration(FADE_DURATION);
va.setInterpolator(show ? ALPHA_IN : ALPHA_OUT);
va.addUpdateListener(animation -> {
float fraction = animation.getAnimatedFraction();
+ final SurfaceControl.Transaction transaction = mTransactionPool.acquire();
transaction.setAlpha(leash, start * (1.f - fraction) + end * fraction);
transaction.apply();
+ mTransactionPool.release(transaction);
});
va.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
+ final SurfaceControl.Transaction transaction = mTransactionPool.acquire();
transaction.setAlpha(leash, end);
transaction.apply();
mTransactionPool.release(transaction);