diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-07-01 11:04:09 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-07-01 11:04:09 +0000 |
commit | 57b3d43492c4a32f320d2512bd8b08b92af1f2da (patch) | |
tree | fcaaebcca2c9340e1259e7bae64098886a4b1abc | |
parent | ce8dc8cc0ba4dd8472d57d0466b2324d94c85213 (diff) | |
parent | 571ae5f732c6dfcbee0eff5a52f4f3f39e444b86 (diff) | |
download | native-57b3d43492c4a32f320d2512bd8b08b92af1f2da.tar.gz |
Merge cherrypicks of [15172584, 15172286, 15172594, 15172385, 15172631, 15172632, 15172633, 15172634, 15171221, 15171222, 15171223, 15171541, 15171542, 15171668, 15172342, 15170823, 15170824, 15170825, 15170826, 15170827, 15170828, 15170829, 15172650, 15172651, 15172652, 15172653, 15172654, 15172655, 15172656, 15172657, 15172658, 15172659, 15172660, 15172661, 15172386, 15172387, 15172388, 15172389, 15172670, 15172553, 15172589, 15172343, 15172617, 15172618, 15172619, 15172620, 15172690, 15172691, 15172692, 15172693, 15172694, 15172695, 15172696, 15172697, 15171708, 15171709, 15172554, 15172555, 15172710, 15172621, 15172635, 15172636, 15172698, 15172699, 15172700, 15171543, 15172701, 15172702, 15172703, 15172704, 15171669, 15172622] into rvc-d2-releaseandroid-11.0.0_r48android-11.0.0_r47android-11.0.0_r45android-11.0.0_r44android11-d2-release
Change-Id: I3864288b825852f9b9a5844a3489936dc31a75f8
-rw-r--r-- | services/inputflinger/reader/mapper/TouchInputMapper.cpp | 75 | ||||
-rw-r--r-- | services/inputflinger/reader/mapper/TouchInputMapper.h | 2 |
2 files changed, 39 insertions, 38 deletions
diff --git a/services/inputflinger/reader/mapper/TouchInputMapper.cpp b/services/inputflinger/reader/mapper/TouchInputMapper.cpp index 99a572a5fd..decbea4c3e 100644 --- a/services/inputflinger/reader/mapper/TouchInputMapper.cpp +++ b/services/inputflinger/reader/mapper/TouchInputMapper.cpp @@ -1413,27 +1413,28 @@ void TouchInputMapper::process(const RawEvent* rawEvent) { } void TouchInputMapper::sync(nsecs_t when) { - const RawState* last = - mRawStatesPending.empty() ? &mCurrentRawState : &mRawStatesPending.back(); - // Push a new state. mRawStatesPending.emplace_back(); - RawState* next = &mRawStatesPending.back(); - next->clear(); - next->when = when; + RawState& next = mRawStatesPending.back(); + next.clear(); + next.when = when; // Sync button state. - next->buttonState = + next.buttonState = mTouchButtonAccumulator.getButtonState() | mCursorButtonAccumulator.getButtonState(); // Sync scroll - next->rawVScroll = mCursorScrollAccumulator.getRelativeVWheel(); - next->rawHScroll = mCursorScrollAccumulator.getRelativeHWheel(); + next.rawVScroll = mCursorScrollAccumulator.getRelativeVWheel(); + next.rawHScroll = mCursorScrollAccumulator.getRelativeHWheel(); mCursorScrollAccumulator.finishSync(); // Sync touch - syncTouch(when, next); + syncTouch(when, &next); + + // The last RawState is the actually second to last, since we just added a new state + const RawState& last = + mRawStatesPending.size() == 1 ? mCurrentRawState : mRawStatesPending.rbegin()[1]; // Assign pointer ids. if (!mHavePointerIds) { @@ -1443,9 +1444,9 @@ void TouchInputMapper::sync(nsecs_t when) { #if DEBUG_RAW_EVENTS ALOGD("syncTouch: pointerCount %d -> %d, touching ids 0x%08x -> 0x%08x, " "hovering ids 0x%08x -> 0x%08x", - last->rawPointerData.pointerCount, next->rawPointerData.pointerCount, - last->rawPointerData.touchingIdBits.value, next->rawPointerData.touchingIdBits.value, - last->rawPointerData.hoveringIdBits.value, next->rawPointerData.hoveringIdBits.value); + last.rawPointerData.pointerCount, next.rawPointerData.pointerCount, + last.rawPointerData.touchingIdBits.value, next.rawPointerData.touchingIdBits.value, + last.rawPointerData.hoveringIdBits.value, next.rawPointerData.hoveringIdBits.value); #endif processRawTouches(false /*timeout*/); @@ -3679,11 +3680,11 @@ const TouchInputMapper::VirtualKey* TouchInputMapper::findVirtualKeyHit(int32_t return nullptr; } -void TouchInputMapper::assignPointerIds(const RawState* last, RawState* current) { - uint32_t currentPointerCount = current->rawPointerData.pointerCount; - uint32_t lastPointerCount = last->rawPointerData.pointerCount; +void TouchInputMapper::assignPointerIds(const RawState& last, RawState& current) { + uint32_t currentPointerCount = current.rawPointerData.pointerCount; + uint32_t lastPointerCount = last.rawPointerData.pointerCount; - current->rawPointerData.clearIdBits(); + current.rawPointerData.clearIdBits(); if (currentPointerCount == 0) { // No pointers to assign. @@ -3694,20 +3695,20 @@ void TouchInputMapper::assignPointerIds(const RawState* last, RawState* current) // All pointers are new. for (uint32_t i = 0; i < currentPointerCount; i++) { uint32_t id = i; - current->rawPointerData.pointers[i].id = id; - current->rawPointerData.idToIndex[id] = i; - current->rawPointerData.markIdBit(id, current->rawPointerData.isHovering(i)); + current.rawPointerData.pointers[i].id = id; + current.rawPointerData.idToIndex[id] = i; + current.rawPointerData.markIdBit(id, current.rawPointerData.isHovering(i)); } return; } if (currentPointerCount == 1 && lastPointerCount == 1 && - current->rawPointerData.pointers[0].toolType == last->rawPointerData.pointers[0].toolType) { + current.rawPointerData.pointers[0].toolType == last.rawPointerData.pointers[0].toolType) { // Only one pointer and no change in count so it must have the same id as before. - uint32_t id = last->rawPointerData.pointers[0].id; - current->rawPointerData.pointers[0].id = id; - current->rawPointerData.idToIndex[id] = 0; - current->rawPointerData.markIdBit(id, current->rawPointerData.isHovering(0)); + uint32_t id = last.rawPointerData.pointers[0].id; + current.rawPointerData.pointers[0].id = id; + current.rawPointerData.idToIndex[id] = 0; + current.rawPointerData.markIdBit(id, current.rawPointerData.isHovering(0)); return; } @@ -3725,9 +3726,9 @@ void TouchInputMapper::assignPointerIds(const RawState* last, RawState* current) for (uint32_t lastPointerIndex = 0; lastPointerIndex < lastPointerCount; lastPointerIndex++) { const RawPointerData::Pointer& currentPointer = - current->rawPointerData.pointers[currentPointerIndex]; + current.rawPointerData.pointers[currentPointerIndex]; const RawPointerData::Pointer& lastPointer = - last->rawPointerData.pointers[lastPointerIndex]; + last.rawPointerData.pointers[lastPointerIndex]; if (currentPointer.toolType == lastPointer.toolType) { int64_t deltaX = currentPointer.x - lastPointer.x; int64_t deltaY = currentPointer.y - lastPointer.y; @@ -3831,12 +3832,12 @@ void TouchInputMapper::assignPointerIds(const RawState* last, RawState* current) matchedCurrentBits.markBit(currentPointerIndex); matchedLastBits.markBit(lastPointerIndex); - uint32_t id = last->rawPointerData.pointers[lastPointerIndex].id; - current->rawPointerData.pointers[currentPointerIndex].id = id; - current->rawPointerData.idToIndex[id] = currentPointerIndex; - current->rawPointerData.markIdBit(id, - current->rawPointerData.isHovering( - currentPointerIndex)); + uint32_t id = last.rawPointerData.pointers[lastPointerIndex].id; + current.rawPointerData.pointers[currentPointerIndex].id = id; + current.rawPointerData.idToIndex[id] = currentPointerIndex; + current.rawPointerData.markIdBit(id, + current.rawPointerData.isHovering( + currentPointerIndex)); usedIdBits.markBit(id); #if DEBUG_POINTER_ASSIGNMENT @@ -3853,10 +3854,10 @@ void TouchInputMapper::assignPointerIds(const RawState* last, RawState* current) uint32_t currentPointerIndex = matchedCurrentBits.markFirstUnmarkedBit(); uint32_t id = usedIdBits.markFirstUnmarkedBit(); - current->rawPointerData.pointers[currentPointerIndex].id = id; - current->rawPointerData.idToIndex[id] = currentPointerIndex; - current->rawPointerData.markIdBit(id, - current->rawPointerData.isHovering(currentPointerIndex)); + current.rawPointerData.pointers[currentPointerIndex].id = id; + current.rawPointerData.idToIndex[id] = currentPointerIndex; + current.rawPointerData.markIdBit(id, + current.rawPointerData.isHovering(currentPointerIndex)); #if DEBUG_POINTER_ASSIGNMENT ALOGD("assignPointerIds - assigned: cur=%" PRIu32 ", id=%" PRIu32, currentPointerIndex, id); diff --git a/services/inputflinger/reader/mapper/TouchInputMapper.h b/services/inputflinger/reader/mapper/TouchInputMapper.h index 58bfc5c596..1c2cc18f91 100644 --- a/services/inputflinger/reader/mapper/TouchInputMapper.h +++ b/services/inputflinger/reader/mapper/TouchInputMapper.h @@ -758,7 +758,7 @@ private: bool isPointInsideSurface(int32_t x, int32_t y); const VirtualKey* findVirtualKeyHit(int32_t x, int32_t y); - static void assignPointerIds(const RawState* last, RawState* current); + static void assignPointerIds(const RawState& last, RawState& current); const char* modeToString(DeviceMode deviceMode); void rotateAndScale(float& x, float& y); |