diff options
| author | 2020-08-24 12:19:54 +0000 | |
|---|---|---|
| committer | 2020-08-24 12:19:54 +0000 | |
| commit | 3cfee31b2a4f9bea4fa4f8558394f1295ab92414 (patch) | |
| tree | 11d2910639b7b647d04b47ca379dda60c2342eb5 /libs/input/PointerController.cpp | |
| parent | 374718a2a8c35c2f2384eeea0fb2f07a1ee4c50b (diff) | |
| parent | 4d7fefcd6e1456f3b119577b9861e2a5e10d9581 (diff) | |
Merge "Switch to callback animation" am: 51060f3f7a am: 5267d92272 am: 42e412b511 am: 4d7fefcd6e
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1399752
Change-Id: Icd4b71527118abc7d70fe0fbae8347a5167d0df3
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; |