diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java index 9f0b1de21b522..e5da23ad0842b 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java @@ -23,6 +23,7 @@ import android.content.Context; import android.graphics.PointF; import android.graphics.Rect; import android.os.Debug; +import android.os.Looper; import android.util.Log; import android.view.Choreographer; @@ -94,8 +95,18 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, private ThreadLocal mSfAnimationHandlerThreadLocal = ThreadLocal.withInitial(() -> { - FrameCallbackScheduler scheduler = runnable -> + final Looper initialLooper = Looper.myLooper(); + final FrameCallbackScheduler scheduler = new FrameCallbackScheduler() { + @Override + public void postFrameCallback(@androidx.annotation.NonNull Runnable runnable) { Choreographer.getSfInstance().postFrameCallback(t -> runnable.run()); + } + + @Override + public boolean isCurrentThread() { + return Looper.myLooper() == initialLooper; + } + }; AnimationHandler handler = new AnimationHandler(scheduler); return handler; });