diff options
| author | 2020-05-29 19:23:45 +0000 | |
|---|---|---|
| committer | 2020-05-29 19:23:45 +0000 | |
| commit | ed6b129e163ac3fa455218fdfce825e956526a1c (patch) | |
| tree | 72e03d920b9eb3d30ec765bcb54b81e6f497d21a /libs/input/PointerController.cpp | |
| parent | c3aafb85ff6de30b0795d03226b6628253e5b4a9 (diff) | |
| parent | ca7d72347ec2890ffa4f6efda514b66334b7ac66 (diff) | |
Merge changes from topics "cursor_type_hotspot", "set_viewport_in_input_reader"
* changes:
PointerController: Add guards to ensure display is valid
Move setDisplayViewport to InputReader.
Stop loading animation for addtional cursor type.
Add cursor type and hotspot to surface metadata.
Diffstat (limited to 'libs/input/PointerController.cpp')
| -rw-r--r-- | libs/input/PointerController.cpp | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index abf083789c23..5c2ef15cbd1e 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -257,19 +257,24 @@ void PointerController::unfade(Transition transition) { void PointerController::setPresentation(Presentation presentation) { AutoMutex _l(mLock); - if (presentation == PRESENTATION_POINTER && mLocked.additionalMouseResources.empty()) { - mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources, - &mLocked.animationResources, mLocked.viewport.displayId); + if (mLocked.presentation == presentation) { + return; } - if (mLocked.presentation != presentation) { - mLocked.presentation = presentation; - mLocked.presentationChanged = true; + mLocked.presentation = presentation; + mLocked.presentationChanged = true; - if (presentation != PRESENTATION_SPOT) { - fadeOutAndReleaseAllSpotsLocked(); - } + if (!mLocked.viewport.isValid()) { + return; + } + if (presentation == PRESENTATION_POINTER) { + if (mLocked.additionalMouseResources.empty()) { + mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources, + &mLocked.animationResources, + mLocked.viewport.displayId); + } + fadeOutAndReleaseAllSpotsLocked(); updatePointerLocked(); } } @@ -291,6 +296,9 @@ void PointerController::setSpots(const PointerCoords* spotCoords, #endif AutoMutex _l(mLock); + if (!mLocked.viewport.isValid()) { + return; + } std::vector<Spot*> newSpots; std::map<int32_t, std::vector<Spot*>>::const_iterator iter = @@ -337,6 +345,9 @@ void PointerController::clearSpots() { #endif AutoMutex _l(mLock); + if (!mLocked.viewport.isValid()) { + return; + } fadeOutAndReleaseAllSpotsLocked(); } @@ -758,6 +769,10 @@ void PointerController::fadeOutAndReleaseAllSpotsLocked() { } void PointerController::loadResourcesLocked() REQUIRES(mLock) { + if (!mLocked.viewport.isValid()) { + return; + } + mPolicy->loadPointerResources(&mResources, mLocked.viewport.displayId); mPolicy->loadPointerIcon(&mLocked.pointerIcon, mLocked.viewport.displayId); |