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

Commit c479317f authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "audio: SpatializerHelper: fix exceptions when head tracking is not supported" into tm-dev

parents cc37f4e9 63300ce0
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -139,6 +139,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()
@@ -813,8 +814,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) {
@@ -832,12 +834,15 @@ public class SpatializerHelper {
        if (mSpat != null) {
            mSpatCallback = null;
            try {
                if (mIsHeadTrackingSupported) {
                    mSpat.registerHeadTrackingCallback(null);
                }
                mHeadTrackerAvailable = false;
                mSpat.release();
            } catch (RemoteException e) {
                Log.e(TAG, "Can't set release spatializer cleanly", e);
            }
            mIsHeadTrackingSupported = false;
            mSpat = null;
        }
    }
@@ -1124,7 +1129,7 @@ public class SpatializerHelper {
                }
                break;
        }
        return true;
        return mIsHeadTrackingSupported;
    }

    private void dispatchActualHeadTrackingMode(int newMode) {
@@ -1314,15 +1319,10 @@ public class SpatializerHelper {
            Log.e(TAG, "not " + action + " sensors, null spatializer");
            return;
        }
        try {
            if (!mSpat.isHeadTrackingSupported()) {
        if (!mIsHeadTrackingSupported) {
            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);
            return;
        }
        int headHandle = -1;
        int screenHandle = -1;
        if (init) {