summaryrefslogtreecommitdiff
path: root/libs/input
diff options
context:
space:
mode:
authorAndrii Kulian <akulian@google.com>2018-10-05 16:58:39 -0700
committerArthur Hung <arthurhung@google.com>2019-01-17 10:34:36 +0800
commitfd8666df526a6fe317e4f3bb98a9dc2cbca872e5 (patch)
tree79f394fbcb87208bf310d0223cff766e319ce9a1 /libs/input
parenta67e674c2270a296aa9aacfe67560103424a28a5 (diff)
Load correct resources for pointer icon on external screen
When mouse pointer changes displays, it should also reload the icon from new resources. Otherwise, if the densities of the previous and new displays are different, the size of the pointer sprite will look too small or too large. - Add getDisplayContext to get the corresponding Context by displayId. - Cache system pointer icons per display, clear if display removed. - Fix icon moved to default when not resetting out of task bound. Bug: 113559891 Test: Enable mouse pointer on default display, move to other screen Change-Id: Ic42d0ec32d9c979281e13c83b9e8b57134fd4f0d
Diffstat (limited to 'libs/input')
-rw-r--r--libs/input/PointerController.cpp8
-rw-r--r--libs/input/PointerController.h6
2 files changed, 7 insertions, 7 deletions
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp
index b4f19c99c6fe..d742cc34b57e 100644
--- a/libs/input/PointerController.cpp
+++ b/libs/input/PointerController.cpp
@@ -255,7 +255,7 @@ void PointerController::setPresentation(Presentation presentation) {
if (presentation == PRESENTATION_POINTER && mLocked.additionalMouseResources.empty()) {
mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources,
- &mLocked.animationResources);
+ &mLocked.animationResources, mLocked.viewport.displayId);
}
if (mLocked.presentation != presentation) {
@@ -727,14 +727,14 @@ void PointerController::fadeOutAndReleaseAllSpotsLocked() {
}
void PointerController::loadResourcesLocked() REQUIRES(mLock) {
- mPolicy->loadPointerResources(&mResources);
+ mPolicy->loadPointerResources(&mResources, mLocked.viewport.displayId);
if (mLocked.presentation == PRESENTATION_POINTER) {
mLocked.additionalMouseResources.clear();
mLocked.animationResources.clear();
- mPolicy->loadPointerIcon(&mLocked.pointerIcon);
+ mPolicy->loadPointerIcon(&mLocked.pointerIcon, mLocked.viewport.displayId);
mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources,
- &mLocked.animationResources);
+ &mLocked.animationResources, mLocked.viewport.displayId);
}
mLocked.pointerIconChanged = true;
diff --git a/libs/input/PointerController.h b/libs/input/PointerController.h
index a32cc42a3342..be057867890d 100644
--- a/libs/input/PointerController.h
+++ b/libs/input/PointerController.h
@@ -62,10 +62,10 @@ protected:
virtual ~PointerControllerPolicyInterface() { }
public:
- virtual void loadPointerIcon(SpriteIcon* icon) = 0;
- virtual void loadPointerResources(PointerResources* outResources) = 0;
+ virtual void loadPointerIcon(SpriteIcon* icon, int32_t displayId) = 0;
+ virtual void loadPointerResources(PointerResources* outResources, int32_t displayId) = 0;
virtual void loadAdditionalMouseResources(std::map<int32_t, SpriteIcon>* outResources,
- std::map<int32_t, PointerAnimation>* outAnimationResources) = 0;
+ std::map<int32_t, PointerAnimation>* outAnimationResources, int32_t displayId) = 0;
virtual int32_t getDefaultPointerIconId() = 0;
virtual int32_t getCustomPointerIconId() = 0;
};