Spatializer: Fix spurious sensor setting
Changing number of tracks, benign routing changes, etc.
will trigger sensor settings which also will recenter
the headtracker.
Test: run simultaneous audio tracks, check recentering.
Bug: 233419102
Change-Id: I402bd2ea521864a3b8226aab5ccdbdeae7956526
diff --git a/services/audiopolicy/service/Spatializer.cpp b/services/audiopolicy/service/Spatializer.cpp
index b19d669..c199a76 100644
--- a/services/audiopolicy/service/Spatializer.cpp
+++ b/services/audiopolicy/service/Spatializer.cpp
@@ -519,9 +519,11 @@
return binderStatusFromStatusT(INVALID_OPERATION);
}
std::lock_guard lock(mLock);
- mHeadSensor = sensorHandle;
- checkPoseController_l();
- checkSensorsState_l();
+ if (mHeadSensor != sensorHandle) {
+ mHeadSensor = sensorHandle;
+ checkPoseController_l();
+ checkSensorsState_l();
+ }
return Status::ok();
}
@@ -531,8 +533,13 @@
return binderStatusFromStatusT(INVALID_OPERATION);
}
std::lock_guard lock(mLock);
- mScreenSensor = sensorHandle;
- checkSensorsState_l();
+ 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();
}