diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2020-08-20 16:23:10 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-08-20 16:23:10 +0000 |
commit | 5267d9227289a074aa4c4a972586d182ce4c76a5 (patch) | |
tree | f0ec76f25f4a69dd2e3dfe510c932e482ce906b5 /libs/input/PointerController.cpp | |
parent | 525ed1c275ce445093448566eb72a55a1bdf939c (diff) | |
parent | 51060f3f7a322d8b670c434a962f5f1095bdf14d (diff) |
Merge "Switch to callback animation" am: 51060f3f7a
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1399752
Change-Id: I48d71f9f156430fc62016e2cdc8fcd2498a3363b
Diffstat (limited to 'libs/input/PointerController.cpp')
-rw-r--r-- | libs/input/PointerController.cpp | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index 14c96cefd462..8f04cfb70469 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -57,7 +57,6 @@ std::shared_ptr<PointerController> PointerController::create( controller->mContext.setHandlerController(controller); controller->mContext.setCallbackController(controller); - controller->mContext.initializeDisplayEventReceiver(); return controller; } @@ -189,24 +188,6 @@ void PointerController::setCustomPointerIcon(const SpriteIcon& icon) { mCursorController.setCustomPointerIcon(icon); } -void PointerController::doAnimate(nsecs_t timestamp) { - std::scoped_lock lock(mLock); - - mContext.setAnimationPending(false); - - bool keepFading = false; - keepFading = mCursorController.doFadingAnimation(timestamp, keepFading); - - for (auto& [displayID, spotController] : mLocked.spotControllers) { - keepFading = spotController.doFadingAnimation(timestamp, keepFading); - } - - bool keepBitmapFlipping = mCursorController.doBitmapAnimation(timestamp); - if (keepFading || keepBitmapFlipping) { - mContext.startAnimation(); - } -} - void PointerController::doInactivityTimeout() { fade(Transition::GRADUAL); } @@ -221,6 +202,11 @@ void PointerController::onDisplayViewportsUpdated(std::vector<DisplayViewport>& for (auto it = mLocked.spotControllers.begin(); it != mLocked.spotControllers.end();) { int32_t displayID = it->first; if (!displayIdSet.count(displayID)) { + /* + * Ensures that an in-progress animation won't dereference + * a null pointer to TouchSpotController. + */ + mContext.removeAnimationCallback(displayID); it = mLocked.spotControllers.erase(it); } else { ++it; |