Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fceb82d4 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Waiting until post draw before calling finish on the recent transition

Bug: 77695434
Change-Id: I7c3c668de7c3986760f26890fa062dee0ddb3805
parent eeb084cb
Loading
Loading
Loading
Loading
+1.44 KiB (119 KiB)

File changed.

No diff preview for this file type.

+14 −6
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.annotation.TargetApi;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Build;
@@ -73,6 +74,7 @@ import com.android.systemui.shared.system.LatencyTrackerCompat;
import com.android.systemui.shared.system.RecentsAnimationControllerCompat;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
import com.android.systemui.shared.system.TransactionCompat;
import com.android.systemui.shared.system.WindowCallbacksCompat;
import com.android.systemui.shared.system.WindowManagerWrapper;

import java.util.StringJoiner;
@@ -645,24 +647,30 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {

        synchronized (mRecentsAnimationWrapper) {
            if (mRecentsAnimationWrapper.controller != null) {
                TransactionCompat transaction = new TransactionCompat();
                for (RemoteAnimationTargetCompat app : mRecentsAnimationWrapper.targets) {
                    if (app.mode == MODE_CLOSING) {
                        // Update the screenshot of the task
                        ThumbnailData thumbnail =
                                mRecentsAnimationWrapper.controller.screenshotTask(app.taskId);
                        TaskView taskView = mRecentsView.updateThumbnail(app.taskId, thumbnail);
                        final TaskView taskView =
                                mRecentsView.updateThumbnail(app.taskId, thumbnail);
                        if (taskView != null) {
                            taskView.setAlpha(1);

                            // Defer finishing the animation until the next launcher frame with the
                            // new thumbnail
                            mActivityControlHelper.executeOnNextDraw(mActivity, taskView,
                                    finishTransitionRunnable);
                            finishTransitionPosted = true;
                            finishTransitionPosted = new WindowCallbacksCompat(taskView) {

                                @Override
                                public void onPostDraw(Canvas canvas) {
                                    finishTransitionRunnable.run();
                                    detach();
                                }
                            }.attach();
                            break;
                        }
                    }
                }
                transaction.apply();
            }
        }
        if (!finishTransitionPosted) {