diff options
| author | 2023-11-16 15:58:37 +0000 | |
|---|---|---|
| committer | 2023-11-16 15:58:37 +0000 | |
| commit | 34a5980f5c8295c02002a2fd2ae62d77d6be1ead (patch) | |
| tree | edf8bb70352d7506e7b5a8e326a6ee98c467809a | |
| parent | a49b0b52df050ed34bf87ddef3837fd7f9d9e5df (diff) | |
| parent | 522758abd63430a11e48e5ba08ca43423530104f (diff) | |
Merge "Load simulate_stylus_with_touch on touchscreen reconfiguration" into main
| -rw-r--r-- | services/inputflinger/reader/mapper/MultiTouchInputMapper.cpp | 23 | ||||
| -rw-r--r-- | services/inputflinger/reader/mapper/MultiTouchInputMapper.h | 19 |
2 files changed, 26 insertions, 16 deletions
diff --git a/services/inputflinger/reader/mapper/MultiTouchInputMapper.cpp b/services/inputflinger/reader/mapper/MultiTouchInputMapper.cpp index 9c87c62a7c..2dd05f5c66 100644 --- a/services/inputflinger/reader/mapper/MultiTouchInputMapper.cpp +++ b/services/inputflinger/reader/mapper/MultiTouchInputMapper.cpp @@ -131,7 +131,7 @@ void MultiTouchInputMapper::syncTouch(nsecs_t when, RawState* outState) { bumpGeneration(); } } - if (shouldSimulateStylusWithTouch() && outPointer.toolType == ToolType::FINGER) { + if (mShouldSimulateStylusWithTouch && outPointer.toolType == ToolType::FINGER) { outPointer.toolType = ToolType::STYLUS; } @@ -177,6 +177,18 @@ void MultiTouchInputMapper::syncTouch(nsecs_t when, RawState* outState) { mMultiTouchMotionAccumulator.finishSync(); } +std::list<NotifyArgs> MultiTouchInputMapper::reconfigure(nsecs_t when, + const InputReaderConfiguration& config, + ConfigurationChanges changes) { + const bool simulateStylusWithTouch = + sysprop::InputProperties::simulate_stylus_with_touch().value_or(false); + if (simulateStylusWithTouch != mShouldSimulateStylusWithTouch) { + mShouldSimulateStylusWithTouch = simulateStylusWithTouch; + bumpGeneration(); + } + return TouchInputMapper::reconfigure(when, config, changes); +} + void MultiTouchInputMapper::configureRawPointerAxes() { TouchInputMapper::configureRawPointerAxes(); @@ -211,14 +223,7 @@ void MultiTouchInputMapper::configureRawPointerAxes() { bool MultiTouchInputMapper::hasStylus() const { return mStylusMtToolSeen || mTouchButtonAccumulator.hasStylus() || - shouldSimulateStylusWithTouch(); -} - -bool MultiTouchInputMapper::shouldSimulateStylusWithTouch() const { - static const bool SIMULATE_STYLUS_WITH_TOUCH = - sysprop::InputProperties::simulate_stylus_with_touch().value_or(false); - return SIMULATE_STYLUS_WITH_TOUCH && - mParameters.deviceType == Parameters::DeviceType::TOUCH_SCREEN; + mShouldSimulateStylusWithTouch; } } // namespace android diff --git a/services/inputflinger/reader/mapper/MultiTouchInputMapper.h b/services/inputflinger/reader/mapper/MultiTouchInputMapper.h index 1d788dffd4..5c173f365e 100644 --- a/services/inputflinger/reader/mapper/MultiTouchInputMapper.h +++ b/services/inputflinger/reader/mapper/MultiTouchInputMapper.h @@ -32,6 +32,9 @@ public: [[nodiscard]] std::list<NotifyArgs> reset(nsecs_t when) override; [[nodiscard]] std::list<NotifyArgs> process(const RawEvent* rawEvent) override; + [[nodiscard]] std::list<NotifyArgs> reconfigure(nsecs_t when, + const InputReaderConfiguration& config, + ConfigurationChanges changes) override; protected: void syncTouch(nsecs_t when, RawState* outState) override; @@ -41,13 +44,6 @@ protected: private: explicit MultiTouchInputMapper(InputDeviceContext& deviceContext, const InputReaderConfiguration& readerConfig); - // simulate_stylus_with_touch is a debug mode that converts all finger pointers reported by this - // mapper's touchscreen into stylus pointers, and adds SOURCE_STYLUS to the input device. - // It is used to simulate stylus events for debugging and testing on a device that does not - // support styluses. It can be enabled using - // "adb shell setprop persist.debug.input.simulate_stylus_with_touch true", - // and requires a reboot to take effect. - inline bool shouldSimulateStylusWithTouch() const; // If the slot is in use, return the bit id. Return std::nullopt otherwise. std::optional<int32_t> getActiveBitId(const MultiTouchMotionAccumulator::Slot& inSlot); @@ -58,6 +54,15 @@ private: int32_t mPointerTrackingIdMap[MAX_POINTER_ID + 1]; bool mStylusMtToolSeen{false}; + + // simulate_stylus_with_touch is a debug mode that converts all finger pointers reported by this + // mapper's touchscreen into stylus pointers, and adds SOURCE_STYLUS to the input device. + // It is used to simulate stylus events for debugging and testing on a device that does not + // support styluses. It can be enabled using + // "adb shell setprop debug.input.simulate_stylus_with_touch true". + // After enabling, the touchscreen will need to be reconfigured. A reconfiguration usually + // happens when turning the screen on/off or by rotating the device orientation. + bool mShouldSimulateStylusWithTouch{false}; }; } // namespace android |