Merge "Use previous pressure value if the current fusion data is zero." into mnc-dev

This commit is contained in:
Michael Wright 2015-05-13 16:56:05 +00:00 committed by Android (Google) Code Review
commit 4866f08718
2 changed files with 15 additions and 9 deletions

View File

@ -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;
PointerProperties& properties = cpd.editPointerPropertiesWithId(mExternalStylusId);
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 =
currentPointerData.editPointerPropertiesWithId(mExternalStylusId);
if (mExternalStylusState.toolType != AMOTION_EVENT_TOOL_TYPE_UNKNOWN) {
properties.toolType = mExternalStylusState.toolType;
}

View File

@ -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);
}
};