Pointer icon refactor for stylus (base)
When PointerChoreographer is enabled, PointerChoreographer can
create multiple StylusPointerControllers for each stylus device.
A StylusPointerController is created when the corresponding stylus
sends the first hover event. It can show and hide a hover pointer
on the associated display.
Test: atest libinputservice_test
Bug: 293587049
Change-Id: I208f09f0e0f73a6396d60f5b2bd0242dddd3c66b
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp
index 246db6c..972e168 100644
--- a/libs/input/PointerController.cpp
+++ b/libs/input/PointerController.cpp
@@ -78,6 +78,10 @@
controller = std::shared_ptr<PointerController>(
new TouchPointerController(policy, looper, spriteController, enabled));
break;
+ case ControllerType::STYLUS:
+ controller = std::shared_ptr<PointerController>(
+ new StylusPointerController(policy, looper, spriteController, enabled));
+ break;
case ControllerType::LEGACY:
default:
controller = std::shared_ptr<PointerController>(
@@ -410,4 +414,13 @@
PointerController::setPresentation(Presentation::SPOT);
}
+// --- StylusPointerController ---
+
+StylusPointerController::StylusPointerController(const sp<PointerControllerPolicyInterface>& policy,
+ const sp<Looper>& looper,
+ SpriteController& spriteController, bool enabled)
+ : PointerController(policy, looper, spriteController, enabled) {
+ PointerController::setPresentation(Presentation::STYLUS_HOVER);
+}
+
} // namespace android