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

Commit 64fd520f authored by Prabir Pradhan's avatar Prabir Pradhan
Browse files

TouchInputMapper: Remove the concept of coverage calibration

Coverage calibration assumes the overloaded use of certain touch
protocol axes, and was added as a workaround for a specific device.
Since it is no longer being used, it can be removed.

Bug: 260869755
Test: atest inputflinger_tests
Change-Id: If7b0026a2c55672d6a3141cf29ce442e9e92dc75
parent e2e10b4a
Loading
Loading
Loading
Loading
+2 −61
Original line number Diff line number Diff line
@@ -179,18 +179,6 @@ void TouchInputMapper::populateDeviceInfo(InputDeviceInfo* info) {
    if (mCursorScrollAccumulator.haveRelativeHWheel()) {
        info->addMotionRange(AMOTION_EVENT_AXIS_HSCROLL, mSource, -1.0f, 1.0f, 0.0f, 0.0f, 0.0f);
    }
    if (mCalibration.coverageCalibration == Calibration::CoverageCalibration::BOX) {
        const InputDeviceInfo::MotionRange& x = mOrientedRanges.x;
        const InputDeviceInfo::MotionRange& y = mOrientedRanges.y;
        info->addMotionRange(AMOTION_EVENT_AXIS_GENERIC_1, mSource, x.min, x.max, x.flat, x.fuzz,
                             x.resolution);
        info->addMotionRange(AMOTION_EVENT_AXIS_GENERIC_2, mSource, y.min, y.max, y.flat, y.fuzz,
                             y.resolution);
        info->addMotionRange(AMOTION_EVENT_AXIS_GENERIC_3, mSource, x.min, x.max, x.flat, x.fuzz,
                             x.resolution);
        info->addMotionRange(AMOTION_EVENT_AXIS_GENERIC_4, mSource, y.min, y.max, y.flat, y.fuzz,
                             y.resolution);
    }
    info->setButtonUnderPad(mParameters.hasButtonUnderPad);
    info->setSupportsUsi(mParameters.supportsUsi);
}
@@ -1209,19 +1197,6 @@ void TouchInputMapper::parseCalibration() {
    if (in.tryGetProperty("touch.distance.scale", distanceScale)) {
        out.distanceScale = distanceScale;
    }

    out.coverageCalibration = Calibration::CoverageCalibration::DEFAULT;
    std::string coverageCalibrationString;
    if (in.tryGetProperty("touch.coverage.calibration", coverageCalibrationString)) {
        if (coverageCalibrationString == "none") {
            out.coverageCalibration = Calibration::CoverageCalibration::NONE;
        } else if (coverageCalibrationString == "box") {
            out.coverageCalibration = Calibration::CoverageCalibration::BOX;
        } else if (coverageCalibrationString != "default") {
            ALOGW("Invalid value for touch.coverage.calibration: '%s'",
                  coverageCalibrationString.c_str());
        }
    }
}

void TouchInputMapper::resolveCalibration() {
@@ -1260,11 +1235,6 @@ void TouchInputMapper::resolveCalibration() {
    } else {
        mCalibration.distanceCalibration = Calibration::DistanceCalibration::NONE;
    }

    // Coverage
    if (mCalibration.coverageCalibration == Calibration::CoverageCalibration::DEFAULT) {
        mCalibration.coverageCalibration = Calibration::CoverageCalibration::NONE;
    }
}

void TouchInputMapper::dumpCalibration(std::string& dump) {
@@ -1335,17 +1305,6 @@ void TouchInputMapper::dumpCalibration(std::string& dump) {
    if (mCalibration.distanceScale) {
        dump += StringPrintf(INDENT4 "touch.distance.scale: %0.3f\n", *mCalibration.distanceScale);
    }

    switch (mCalibration.coverageCalibration) {
        case Calibration::CoverageCalibration::NONE:
            dump += INDENT4 "touch.coverage.calibration: none\n";
            break;
        case Calibration::CoverageCalibration::BOX:
            dump += INDENT4 "touch.coverage.calibration: box\n";
            break;
        default:
            ALOG_ASSERT(false);
    }
}

void TouchInputMapper::dumpAffineTransformation(std::string& dump) {
@@ -2342,19 +2301,8 @@ void TouchInputMapper::cookPointerData() {
                distance = 0;
        }

        // Coverage
        Rect rawCoverage{0, 0};
        if (mCalibration.coverageCalibration == Calibration::CoverageCalibration::BOX) {
            rawCoverage.left = (in.toolMinor & 0xffff0000) >> 16;
            rawCoverage.right = in.toolMinor & 0x0000ffff;
            rawCoverage.bottom = in.toolMajor & 0x0000ffff;
            rawCoverage.top = (in.toolMajor & 0xffff0000) >> 16;
        }
        const auto coverage = mRawToDisplay.transform(rawCoverage);

        // Adjust X,Y coords for device calibration and convert to the natural display coordinates.
        vec2 transformed = {in.x, in.y};
        // TODO: Adjust coverage coords?
        mAffineTransform.applyTo(transformed.x /*byRef*/, transformed.y /*byRef*/);
        transformed = mRawToDisplay.transform(transformed);

@@ -2370,15 +2318,8 @@ void TouchInputMapper::cookPointerData() {
        out.setAxisValue(AMOTION_EVENT_AXIS_ORIENTATION, orientation);
        out.setAxisValue(AMOTION_EVENT_AXIS_TILT, tilt);
        out.setAxisValue(AMOTION_EVENT_AXIS_DISTANCE, distance);
        if (mCalibration.coverageCalibration == Calibration::CoverageCalibration::BOX) {
            out.setAxisValue(AMOTION_EVENT_AXIS_GENERIC_1, coverage.left);
            out.setAxisValue(AMOTION_EVENT_AXIS_GENERIC_2, coverage.top);
            out.setAxisValue(AMOTION_EVENT_AXIS_GENERIC_3, coverage.right);
            out.setAxisValue(AMOTION_EVENT_AXIS_GENERIC_4, coverage.bottom);
        } else {
        out.setAxisValue(AMOTION_EVENT_AXIS_TOOL_MAJOR, toolMajor);
        out.setAxisValue(AMOTION_EVENT_AXIS_TOOL_MINOR, toolMinor);
        }

        // Write output relative fields if applicable.
        uint32_t id = in.id;
+0 −8
Original line number Diff line number Diff line
@@ -291,14 +291,6 @@ protected:
        DistanceCalibration distanceCalibration;
        std::optional<float> distanceScale;

        enum class CoverageCalibration {
            DEFAULT,
            NONE,
            BOX,
        };

        CoverageCalibration coverageCalibration;

        inline void applySizeScaleAndBias(float& outSize) const {
            if (sizeScale) {
                outSize *= *sizeScale;