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

Commit a53bd0c9 authored by Eric Laurent's avatar Eric Laurent Committed by Automerger Merge Worker
Browse files

Merge "Spatializer: Fix spurious sensor setting" into tm-dev am: f31d58fd

parents 2a9df16d f31d58fd
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -519,9 +519,11 @@ Status Spatializer::setHeadSensor(int sensorHandle) {
        return binderStatusFromStatusT(INVALID_OPERATION);
    }
    std::lock_guard lock(mLock);
    if (mHeadSensor != sensorHandle) {
        mHeadSensor = sensorHandle;
        checkPoseController_l();
        checkSensorsState_l();
    }
    return Status::ok();
}

@@ -531,8 +533,13 @@ Status Spatializer::setScreenSensor(int sensorHandle) {
        return binderStatusFromStatusT(INVALID_OPERATION);
    }
    std::lock_guard lock(mLock);
    if (mScreenSensor != sensorHandle) {
        mScreenSensor = sensorHandle;
        // TODO: consider a new method setHeadAndScreenSensor()
        // because we generally set both at the same time.
        // This will avoid duplicated work and recentering.
        checkSensorsState_l();
    }
    return Status::ok();
}

+10 −2
Original line number Diff line number Diff line
@@ -149,6 +149,10 @@ SpatializerPoseController::~SpatializerPoseController() {

void SpatializerPoseController::setHeadSensor(int32_t sensor) {
    std::lock_guard lock(mMutex);
    if (sensor == mHeadSensor) return;
    ALOGV("%s: new sensor:%d  mHeadSensor:%d  mScreenSensor:%d",
            __func__, sensor, mHeadSensor, mScreenSensor);

    // Stop current sensor, if valid and different from the other sensor.
    if (mHeadSensor != INVALID_SENSOR && mHeadSensor != mScreenSensor) {
        mPoseProvider->stopSensor(mHeadSensor);
@@ -179,11 +183,15 @@ void SpatializerPoseController::setHeadSensor(int32_t sensor) {
        mHeadSensor = INVALID_SENSOR;
    }

    mProcessor->recenter(true, false);
    mProcessor->recenter(true /* recenterHead */, false /* recenterScreen */);
}

void SpatializerPoseController::setScreenSensor(int32_t sensor) {
    std::lock_guard lock(mMutex);
    if (sensor == mScreenSensor) return;
    ALOGV("%s: new sensor:%d  mHeadSensor:%d  mScreenSensor:%d",
            __func__, sensor, mHeadSensor, mScreenSensor);

    // Stop current sensor, if valid and different from the other sensor.
    if (mScreenSensor != INVALID_SENSOR && mScreenSensor != mHeadSensor) {
        mPoseProvider->stopSensor(mScreenSensor);
@@ -212,7 +220,7 @@ void SpatializerPoseController::setScreenSensor(int32_t sensor) {
        mScreenSensor = INVALID_SENSOR;
    }

    mProcessor->recenter(false, true);
    mProcessor->recenter(false /* recenterHead */, true /* recenterScreen */);
}

void SpatializerPoseController::setDesiredMode(HeadTrackingMode mode) {