From c6c603078b9a32f00b205b23919faea47343f54d Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 7 Jan 2021 15:45:27 -0800 Subject: [PATCH] Make Pip usage of FrameCallbackScheduler an actual class Bug: 175330528 Test: Builds with new dynamic-animation library Change-Id: I1632bd87a0f02940317a38a87b074d303f80b8c7 --- .../android/wm/shell/pip/phone/PipMotionHelper.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java index e32d3b955081c..df7c75332675d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java @@ -83,8 +83,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; });