summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2022-03-18 08:15:41 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-03-18 08:15:41 +0000
commit81102a32c194477e61350ee29c29a6225666cdeb (patch)
tree5afffe6dc5d5d080c09f2027815dd8bce23fb301
parent6a2958fa8f13ef2a5a7dcf8f57aa6864f33e0d75 (diff)
parent0c938e3f89fa095a4869585ef48d26c401140fc4 (diff)
Merge changes from topic "presubmit-am-1243466f3d904d3d812e413e70d976ef" into sc-v2-dev-plus-aosp
* changes: [automerge] audio: SpatializerHelper: fix exceptions when head tracking is not supported 2p: 511336f1b9 audio: SpatializerHelper: fix exceptions when head tracking is not supported
-rw-r--r--services/core/java/com/android/server/audio/SpatializerHelper.java21
1 files changed, 10 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/audio/SpatializerHelper.java b/services/core/java/com/android/server/audio/SpatializerHelper.java
index 399ca0326313..d4dc288fbece 100644
--- a/services/core/java/com/android/server/audio/SpatializerHelper.java
+++ b/services/core/java/com/android/server/audio/SpatializerHelper.java
@@ -90,6 +90,7 @@ public class SpatializerHelper {
private @Nullable SpatializerCallback mSpatCallback;
private @Nullable SpatializerHeadTrackingCallback mSpatHeadTrackingCallback;
private @Nullable HelperDynamicSensorCallback mDynSensorCallback;
+ private boolean mIsHeadTrackingSupported = false;
// default attributes and format that determine basic availability of spatialization
private static final AudioAttributes DEFAULT_ATTRIBUTES = new AudioAttributes.Builder()
@@ -497,8 +498,9 @@ public class SpatializerHelper {
mSpat = AudioSystem.getSpatializer(mSpatCallback);
try {
mSpat.setLevel((byte) Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL);
+ mIsHeadTrackingSupported = mSpat.isHeadTrackingSupported();
//TODO: register heatracking callback only when sensors are registered
- if (mSpat.isHeadTrackingSupported()) {
+ if (mIsHeadTrackingSupported) {
mSpat.registerHeadTrackingCallback(mSpatHeadTrackingCallback);
}
} catch (RemoteException e) {
@@ -516,11 +518,14 @@ public class SpatializerHelper {
if (mSpat != null) {
mSpatCallback = null;
try {
- mSpat.registerHeadTrackingCallback(null);
+ if (mIsHeadTrackingSupported) {
+ mSpat.registerHeadTrackingCallback(null);
+ }
mSpat.release();
} catch (RemoteException e) {
Log.e(TAG, "Can't set release spatializer cleanly", e);
}
+ mIsHeadTrackingSupported = false;
mSpat = null;
}
}
@@ -687,7 +692,6 @@ public class SpatializerHelper {
mDesiredHeadTrackingMode = mode;
dispatchDesiredHeadTrackingMode(mode);
}
-
} catch (RemoteException e) {
Log.e(TAG, "Error calling setDesiredHeadTrackingMode", e);
}
@@ -708,7 +712,7 @@ public class SpatializerHelper {
}
break;
}
- return true;
+ return mIsHeadTrackingSupported;
}
private void dispatchActualHeadTrackingMode(int newMode) {
@@ -882,13 +886,8 @@ public class SpatializerHelper {
Log.e(TAG, "not " + action + " sensors, null spatializer");
return;
}
- try {
- if (!mSpat.isHeadTrackingSupported()) {
- Log.e(TAG, "not " + action + " sensors, spatializer doesn't support headtracking");
- return;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "not " + action + " sensors, error querying headtracking", e);
+ if (!mIsHeadTrackingSupported) {
+ Log.e(TAG, "not " + action + " sensors, spatializer doesn't support headtracking");
return;
}
int headHandle = -1;