diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index 0f86bc614b2bd..4a1d7e7b5c649 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -78,7 +78,7 @@ PointerController::PointerController(const sp& mLocked.pointerAlpha = 0.0f; // pointer is initially faded mLocked.pointerSprite = mSpriteController->createSprite(); mLocked.pointerIconChanged = false; - mLocked.requestedPointerShape = 0; + mLocked.requestedPointerShape = mPolicy->getDefaultPointerIconId(); mLocked.buttonState = 0; @@ -512,7 +512,7 @@ void PointerController::updatePointerLocked() { if (mLocked.pointerIconChanged || mLocked.presentationChanged) { if (mLocked.presentation == PRESENTATION_POINTER) { - if (mLocked.requestedPointerShape == 0) { + if (mLocked.requestedPointerShape == mPolicy->getDefaultPointerIconId()) { mLocked.pointerSprite->setIcon(mLocked.pointerIcon); } else { std::map::const_iterator iter = diff --git a/libs/input/PointerController.h b/libs/input/PointerController.h index 308ff12420640..24a16819384e4 100644 --- a/libs/input/PointerController.h +++ b/libs/input/PointerController.h @@ -58,7 +58,8 @@ protected: public: virtual void loadPointerResources(PointerResources* outResources) = 0; - virtual void loadAdditionalMouseResources(std::map* outResources) = 0; + virtual void loadAdditionalMouseResources(std::map* outResources) = 0; + virtual int32_t getDefaultPointerIconId() = 0; }; diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp index 8cb0a1310ec52..be190cbef47d4 100644 --- a/services/core/jni/com_android_server_input_InputManagerService.cpp +++ b/services/core/jni/com_android_server_input_InputManagerService.cpp @@ -238,7 +238,8 @@ public: /* --- PointerControllerPolicyInterface implementation --- */ virtual void loadPointerResources(PointerResources* outResources); - virtual void loadAdditionalMouseResources(std::map* outResources); + virtual void loadAdditionalMouseResources(std::map* outResources); + virtual int32_t getDefaultPointerIconId(); private: sp mInputManager; @@ -786,7 +787,7 @@ void NativeInputManager::setPointerIconShape(int32_t iconId) { sp controller = mLocked.pointerController.promote(); if (controller != NULL) { // Use 0 (the default icon) for ARROW. - controller->updatePointerShape((iconId == POINTER_ICON_STYLE_ARROW) ? 0 : iconId); + controller->updatePointerShape(iconId); } } @@ -1040,15 +1041,19 @@ void NativeInputManager::loadPointerResources(PointerResources* outResources) { &outResources->spotAnchor); } -void NativeInputManager::loadAdditionalMouseResources(std::map* outResources) { +void NativeInputManager::loadAdditionalMouseResources(std::map* outResources) { JNIEnv* env = jniEnv(); for (int iconId = POINTER_ICON_STYLE_CONTEXT_MENU; iconId <= POINTER_ICON_STYLE_GRABBING; ++iconId) { loadSystemIconAsSprite(env, mContextObj, iconId, &((*outResources)[iconId])); } + loadSystemIconAsSprite(env, mContextObj, POINTER_ICON_STYLE_NULL, &((*outResources)[POINTER_ICON_STYLE_NULL])); } +int32_t NativeInputManager::getDefaultPointerIconId() { + return POINTER_ICON_STYLE_ARROW; +} // ----------------------------------------------------------------------------