diff options
| author | 2015-12-18 23:30:10 +0000 | |
|---|---|---|
| committer | 2015-12-18 23:30:10 +0000 | |
| commit | 56cd51a70411d60fac0b3987f5c5543e6a3ea8ef (patch) | |
| tree | 00d0bcda1d09fdbe4c6acf3a78d6c099fac7020e /libs/input/PointerController.cpp | |
| parent | ea5a94669c3f9757e2cb5f813a0c01e23ba1f20f (diff) | |
| parent | 347e5d498f4c216d588e98776a386d8bdf93d05c (diff) | |
Merge "Introduce pointer capture API."
Diffstat (limited to 'libs/input/PointerController.cpp')
| -rw-r--r-- | libs/input/PointerController.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index 529849e99fb6..212c6a0d2c3c 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -90,6 +90,7 @@ PointerController::PointerController(const sp<PointerControllerPolicyInterface>& mLocked.lastFrameUpdatedTime = 0; mLocked.buttonState = 0; + mLocked.iconDetached = false; mPolicy->loadPointerIcon(&mLocked.pointerIcon); @@ -184,6 +185,10 @@ void PointerController::setPosition(float x, float y) { } void PointerController::setPositionLocked(float x, float y) { + if (mLocked.iconDetached) { + return; + } + float minX, minY, maxX, maxY; if (getBoundsLocked(&minX, &minY, &maxX, &maxY)) { if (x <= minX) { @@ -217,6 +222,10 @@ void PointerController::fade(Transition transition) { // Remove the inactivity timeout, since we are fading now. removeInactivityTimeoutLocked(); + if (mLocked.iconDetached) { + return; + } + // Start fading. if (transition == TRANSITION_IMMEDIATE) { mLocked.pointerFadeDirection = 0; @@ -234,6 +243,10 @@ void PointerController::unfade(Transition transition) { // Always reset the inactivity timer. resetInactivityTimeoutLocked(); + if (mLocked.iconDetached) { + return; + } + // Start unfading. if (transition == TRANSITION_IMMEDIATE) { mLocked.pointerFadeDirection = 0; @@ -349,6 +362,22 @@ void PointerController::reloadPointerResources() { updatePointerLocked(); } +void PointerController::detachPointerIcon(bool detached) { + AutoMutex _l(mLock); + + if (mLocked.iconDetached == detached) { + return; + } + + mLocked.iconDetached = detached; + if (detached) { + mLocked.pointerFadeDirection = -1; + } else { + mLocked.pointerFadeDirection = 1; + } + startAnimationLocked(); +} + void PointerController::setDisplayViewport(int32_t width, int32_t height, int32_t orientation) { AutoMutex _l(mLock); |