summaryrefslogtreecommitdiff
path: root/libs/input/PointerController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/input/PointerController.cpp')
-rw-r--r--libs/input/PointerController.cpp24
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;