Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a632def authored by gaoshang's avatar gaoshang
Browse files

redirect to call assignPointerIds if there is id < 0 case

Symptom: If assignPointerIds() is not called, the unknown value of
outPointer.id will lead to undefined things
Root Cause: mHavePointerIds be overwritten to true in last cycle
Solution: recover mHavePointerIds=false if any id < 0, to call assignPointerIds()

https://code.google.com/p/android/issues/detail?id=221273



Change-Id: I65ca0b82a6fceb495a0de17315b1f49cdab5fba0
Signed-off-by: default avatargaoshang <gaoshang@xiaomi.com>
parent 1c59b4b4
Loading
Loading
Loading
Loading
+24 −23
Original line number Diff line number Diff line
@@ -6488,6 +6488,7 @@ void MultiTouchInputMapper::syncTouch(nsecs_t when, RawState* outState) {
    size_t inCount = mMultiTouchMotionAccumulator.getSlotCount();
    size_t outCount = 0;
    BitSet32 newPointerIdBits;
    mHavePointerIds = true;

    for (size_t inIndex = 0; inIndex < inCount; inIndex++) {
        const MultiTouchMotionAccumulator::Slot* inSlot =
@@ -6532,7 +6533,7 @@ void MultiTouchInputMapper::syncTouch(nsecs_t when, RawState* outState) {
        outPointer.isHovering = isHovering;

        // Assign pointer id using tracking id if available.
        mHavePointerIds = true;
        if (mHavePointerIds) {
            int32_t trackingId = inSlot->getTrackingId();
            int32_t id = -1;
            if (trackingId >= 0) {
@@ -6558,7 +6559,7 @@ void MultiTouchInputMapper::syncTouch(nsecs_t when, RawState* outState) {
                outState->rawPointerData.markIdBit(id, isHovering);
                newPointerIdBits.markBit(id);
            }

        }
        outCount += 1;
    }