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

Commit d1727ff1 authored by Santos Cordon's avatar Santos Cordon Committed by Android (Google) Code Review
Browse files

Merge "Device State Manager drives LogicalDisplayMapper"

parents 40d2aef2 dfd8eefe
Loading
Loading
Loading
Loading
+15 −15
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.database.ContentObserver;
import android.graphics.ColorSpace;
import android.graphics.Point;
import android.hardware.SensorManager;
import android.hardware.devicestate.DeviceStateManager;
import android.hardware.display.AmbientBrightnessDayStats;
import android.hardware.display.BrightnessChangeEvent;
import android.hardware.display.BrightnessConfiguration;
@@ -71,6 +72,7 @@ import android.media.projection.IMediaProjectionManager;
import android.net.Uri;
import android.os.Binder;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.IBinder;
import android.os.IBinder.DeathRecipient;
import android.os.Looper;
@@ -100,7 +102,6 @@ import android.util.Spline;
import android.view.Display;
import android.view.DisplayEventReceiver;
import android.view.DisplayInfo;
import android.view.IDisplayFoldListener;
import android.view.Surface;
import android.view.SurfaceControl;

@@ -114,7 +115,6 @@ import com.android.server.DisplayThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.UiThread;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.wm.SurfaceAnimationThread;
import com.android.server.wm.WindowManagerInternal;

@@ -360,8 +360,8 @@ public final class DisplayManagerService extends SystemService {
    // Receives notifications about changes to Settings.
    private SettingsObserver mSettingsObserver;

    // Received notifications of the display-fold action
    private DisplayFoldListener mDisplayFoldListener;
    // Received notifications of the device-state action (such as "fold", "unfold")
    private DeviceStateManager mDeviceStateManager;

    private final boolean mAllowNonNativeRefreshRateOverride;

@@ -504,10 +504,11 @@ public final class DisplayManagerService extends SystemService {
        synchronized (mSyncRoot) {
            mWindowManagerInternal = LocalServices.getService(WindowManagerInternal.class);
            mInputManagerInternal = LocalServices.getService(InputManagerInternal.class);
            WindowManagerPolicy policy = LocalServices.getService(WindowManagerPolicy.class);

            mDisplayFoldListener = new DisplayFoldListener();
            policy.registerDisplayFoldListener(mDisplayFoldListener);
            DeviceStateManager deviceStateManager =
                    mContext.getSystemService(DeviceStateManager.class);
            deviceStateManager.registerDeviceStateListener(new DeviceStateListener(),
                    new HandlerExecutor(mHandler));

            scheduleTraversalLocked(false);
        }
@@ -2880,15 +2881,14 @@ public final class DisplayManagerService extends SystemService {
        }
    }

    class DisplayFoldListener extends IDisplayFoldListener.Stub {
    /**
     * Listens to changes in device state and reports the state to LogicalDisplayMapper.
     */
    class DeviceStateListener implements DeviceStateManager.DeviceStateListener {
        @Override
        public void onDisplayFoldChanged(int displayId, boolean folded) {
            // TODO: multi-display - IDisplayFoldListener callback only really works for the
            // Display.DEFAULT_DISPLAY.
            if (displayId == Display.DEFAULT_DISPLAY) {
        public void onDeviceStateChanged(int deviceState) {
            synchronized (mSyncRoot) {
                    mLogicalDisplayMapper.setDeviceFoldedLocked(folded);
                }
                mLogicalDisplayMapper.setDeviceStateLocked(deviceState);
            }
        }
    };
+8 −0
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {

    private final DisplayDeviceRepository mDisplayDeviceRepo;
    private final Listener mListener;
    private final int mFoldedDeviceState;

    LogicalDisplayMapper(Context context, DisplayDeviceRepository repo, Listener listener) {
        mDisplayDeviceRepo = repo;
@@ -110,6 +111,9 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
        mSingleDisplayDemoMode = SystemProperties.getBoolean("persist.demo.singledisplay", false);
        mDisplayDeviceRepo.addListener(this);

        mFoldedDeviceState = context.getResources().getInteger(
                com.android.internal.R.integer.config_foldedDeviceState);

        loadFoldedDisplayConfig(context);
    }

@@ -211,6 +215,10 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
        }
    }

    void setDeviceStateLocked(int state) {
        setDeviceFoldedLocked(state == mFoldedDeviceState);
    }

    void setDeviceFoldedLocked(boolean isFolded) {
        mIsFolded = isFolded;
        if (mIsFoldedOverride != null) {