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

Commit eab67c3a authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

AudioService: update display rotation monitoring

Changes in display management require switching display rotation
query: do not use WindowManager, use DisplayManagerGlobal.

Bug: 230811533
Test: play channel check on YT on device w/ stereo speakers
Change-Id: If44c9b6373fe3fdf89656516139a0c29725afb82
parent bf51ebd5
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -20,12 +20,13 @@ import android.content.Context;
import android.hardware.devicestate.DeviceStateManager;
import android.hardware.devicestate.DeviceStateManager.FoldStateListener;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManagerGlobal;
import android.media.AudioSystem;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.util.Log;
import android.view.Display;
import android.view.Surface;
import android.view.WindowManager;

/**
 * Class to handle device rotation events for AudioService, and forward device rotation
@@ -48,6 +49,8 @@ class RotationHelper {

    private static final String TAG = "AudioService.RotationHelper";

    private static final boolean DEBUG_ROTATION = false;

    private static AudioDisplayListener sDisplayListener;
    private static FoldStateListener sFoldStateListener;

@@ -98,8 +101,8 @@ class RotationHelper {
        // Even though we're responding to device orientation events,
        // use display rotation so audio stays in sync with video/dialogs
        // TODO(b/148458001): Support multi-display
        int newRotation = ((WindowManager) sContext.getSystemService(
                Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
        int newRotation = DisplayManagerGlobal.getInstance()
                .getDisplayInfo(Display.DEFAULT_DISPLAY).rotation;
        synchronized(sRotationLock) {
            if (newRotation != sDeviceRotation) {
                sDeviceRotation = newRotation;
@@ -109,7 +112,9 @@ class RotationHelper {
    }

    private static void publishRotation(int rotation) {
        Log.v(TAG, "publishing device rotation =" + rotation + " (x90deg)");
        if (DEBUG_ROTATION) {
            Log.i(TAG, "publishing device rotation =" + rotation + " (x90deg)");
        }
        switch (rotation) {
            case Surface.ROTATION_0:
                AudioSystem.setParameters("rotation=0");
@@ -159,6 +164,9 @@ class RotationHelper {

        @Override
        public void onDisplayChanged(int displayId) {
            if (DEBUG_ROTATION) {
                Log.i(TAG, "onDisplayChanged diplayId:" + displayId);
            }
            updateOrientation();
        }
    }