summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--services/inputflinger/InputReader.cpp18
-rw-r--r--services/inputflinger/InputReader.h4
2 files changed, 14 insertions, 8 deletions
diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cpp
index ef0cd2d..b317cb6 100644
--- a/services/inputflinger/InputReader.cpp
+++ b/services/inputflinger/InputReader.cpp
@@ -4076,14 +4076,20 @@ void TouchInputMapper::applyExternalStylusButtonState(nsecs_t when) {
}
void TouchInputMapper::applyExternalStylusTouchState(nsecs_t when) {
- CookedPointerData& cpd = mCurrentCookedState.cookedPointerData;
- if (mExternalStylusId != -1 && cpd.isTouching(mExternalStylusId)) {
- if (mExternalStylusState.pressure != 0.0f) {
- PointerCoords& coords = cpd.editPointerCoordsWithId(mExternalStylusId);
- coords.setAxisValue(AMOTION_EVENT_AXIS_PRESSURE, mExternalStylusState.pressure);
+ CookedPointerData& currentPointerData = mCurrentCookedState.cookedPointerData;
+ const CookedPointerData& lastPointerData = mLastCookedState.cookedPointerData;
+
+ if (mExternalStylusId != -1 && currentPointerData.isTouching(mExternalStylusId)) {
+ float pressure = mExternalStylusState.pressure;
+ if (pressure == 0.0f && lastPointerData.isTouching(mExternalStylusId)) {
+ const PointerCoords& coords = lastPointerData.pointerCoordsForId(mExternalStylusId);
+ pressure = coords.getAxisValue(AMOTION_EVENT_AXIS_PRESSURE);
}
+ PointerCoords& coords = currentPointerData.editPointerCoordsWithId(mExternalStylusId);
+ coords.setAxisValue(AMOTION_EVENT_AXIS_PRESSURE, pressure);
- PointerProperties& properties = cpd.editPointerPropertiesWithId(mExternalStylusId);
+ PointerProperties& properties =
+ currentPointerData.editPointerPropertiesWithId(mExternalStylusId);
if (mExternalStylusState.toolType != AMOTION_EVENT_TOOL_TYPE_UNKNOWN) {
properties.toolType = mExternalStylusState.toolType;
}
diff --git a/services/inputflinger/InputReader.h b/services/inputflinger/InputReader.h
index aadc37f..ae090c1 100644
--- a/services/inputflinger/InputReader.h
+++ b/services/inputflinger/InputReader.h
@@ -881,11 +881,11 @@ struct CookedPointerData {
return pointerProperties[idToIndex[id]];
}
- inline bool isHovering(uint32_t pointerIndex) {
+ inline bool isHovering(uint32_t pointerIndex) const {
return hoveringIdBits.hasBit(pointerProperties[pointerIndex].id);
}
- inline bool isTouching(uint32_t pointerIndex) {
+ inline bool isTouching(uint32_t pointerIndex) const {
return touchingIdBits.hasBit(pointerProperties[pointerIndex].id);
}
};