Loading core/java/android/hardware/display/DisplayManagerInternal.java +0 −6 Original line number Diff line number Diff line Loading @@ -266,12 +266,6 @@ public abstract class DisplayManagerInternal { */ public abstract void ignoreProximitySensorUntilChanged(); /** * Sets the folded state of the device. * TODO: b/168208522 - Remove in favor of DisplayStatePolicy when that is available. */ public abstract void setDeviceFolded(boolean isFolded); /** * Describes the requested power state of the display. * Loading services/core/java/com/android/server/display/DisplayManagerService.java +23 −7 Original line number Diff line number Diff line Loading @@ -91,6 +91,7 @@ import android.util.SparseArray; import android.util.Spline; import android.view.Display; import android.view.DisplayInfo; import android.view.IDisplayFoldListener; import android.view.Surface; import android.view.SurfaceControl; Loading @@ -103,6 +104,7 @@ 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; Loading Loading @@ -312,6 +314,9 @@ 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; public DisplayManagerService(Context context) { this(context, new Injector()); } Loading Loading @@ -429,6 +434,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); scheduleTraversalLocked(false); } } Loading Loading @@ -2563,13 +2573,6 @@ public final class DisplayManagerService extends SystemService { public void ignoreProximitySensorUntilChanged() { mDisplayPowerController.ignoreProximitySensorUntilChanged(); } @Override public void setDeviceFolded(boolean isFolded) { synchronized (mSyncRoot) { mLogicalDisplayMapper.setDeviceFoldedLocked(isFolded); } } } class DesiredDisplayModeSpecsObserver Loading Loading @@ -2606,4 +2609,17 @@ public final class DisplayManagerService extends SystemService { } } } class DisplayFoldListener extends IDisplayFoldListener.Stub { @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) { synchronized (mSyncRoot) { mLogicalDisplayMapper.setDeviceFoldedLocked(folded); } } } }; } services/core/java/com/android/server/display/LogicalDisplayMapper.java +25 −25 Original line number Diff line number Diff line Loading @@ -167,7 +167,31 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { } } public void setDeviceFoldedLocked(boolean isFolded) { public void dumpLocked(PrintWriter pw) { pw.println("LogicalDisplayMapper:"); IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); ipw.increaseIndent(); ipw.println("mSingleDisplayDemoMode=" + mSingleDisplayDemoMode); ipw.println("mNextNonDefaultDisplayId=" + mNextNonDefaultDisplayId); final int logicalDisplayCount = mLogicalDisplays.size(); ipw.println(); ipw.println("Logical Displays: size=" + logicalDisplayCount); for (int i = 0; i < logicalDisplayCount; i++) { int displayId = mLogicalDisplays.keyAt(i); LogicalDisplay display = mLogicalDisplays.valueAt(i); ipw.println("Display " + displayId + ":"); ipw.increaseIndent(); display.dumpLocked(ipw); ipw.decreaseIndent(); ipw.println(); } } void setDeviceFoldedLocked(boolean isFolded) { mIsFolded = isFolded; if (mIsFoldedOverride != null) { isFolded = mIsFoldedOverride.booleanValue(); Loading Loading @@ -237,30 +261,6 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { } } public void dumpLocked(PrintWriter pw) { pw.println("LogicalDisplayMapper:"); IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); ipw.increaseIndent(); ipw.println("mSingleDisplayDemoMode=" + mSingleDisplayDemoMode); ipw.println("mNextNonDefaultDisplayId=" + mNextNonDefaultDisplayId); final int logicalDisplayCount = mLogicalDisplays.size(); ipw.println(); ipw.println("Logical Displays: size=" + logicalDisplayCount); for (int i = 0; i < logicalDisplayCount; i++) { int displayId = mLogicalDisplays.keyAt(i); LogicalDisplay display = mLogicalDisplays.valueAt(i); ipw.println("Display " + displayId + ":"); ipw.increaseIndent(); display.dumpLocked(ipw); ipw.decreaseIndent(); ipw.println(); } } void setFoldOverrideLocked(Boolean isFolded) { if (!Objects.equals(isFolded, mIsFoldedOverride)) { mIsFoldedOverride = isFolded; Loading services/core/java/com/android/server/policy/DisplayFoldController.java +30 −25 Original line number Diff line number Diff line Loading @@ -80,22 +80,25 @@ class DisplayFoldController { } void setDeviceFolded(boolean folded) { mDisplayManagerInternal.setDeviceFolded(folded); if (mFolded != null && mFolded == folded) { return; } if (folded) { Rect foldedArea; final Rect foldedArea; if (!mOverrideFoldedArea.isEmpty()) { foldedArea = mOverrideFoldedArea; } else if (!mFoldedArea.isEmpty()) { foldedArea = mFoldedArea; } else { return; foldedArea = null; } mDisplayManagerInternal.getNonOverrideDisplayInfo(mDisplayId, mNonOverrideDisplayInfo); // Only do display scaling/cropping if it has been configured to do so if (foldedArea != null) { if (folded) { mDisplayManagerInternal.getNonOverrideDisplayInfo( mDisplayId, mNonOverrideDisplayInfo); final int dx = (mNonOverrideDisplayInfo.logicalWidth - foldedArea.width()) / 2 - foldedArea.left; final int dy = (mNonOverrideDisplayInfo.logicalHeight - foldedArea.height()) / 2 Loading @@ -111,6 +114,8 @@ class DisplayFoldController { mWindowManagerInternal.clearForcedDisplaySize(mDisplayId); mDisplayManagerInternal.setDisplayOffsets(mDisplayId, 0, 0); } } mDurationLogger.setDeviceFolded(folded); mDurationLogger.logFocusedAppWithFoldState(folded, mFocusedApp); mFolded = folded; Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +0 −5 Original line number Diff line number Diff line Loading @@ -471,7 +471,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mLidKeyboardAccessibility; int mLidNavigationAccessibility; private boolean mLidControlsDisplayFold; private boolean mShouldSwapDisplaysOnLidSwitch; int mShortPressOnPowerBehavior; int mLongPressOnPowerBehavior; int mVeryLongPressOnPowerBehavior; Loading Loading @@ -1849,8 +1848,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { com.android.internal.R.integer.config_lidNavigationAccessibility); mLidControlsDisplayFold = mContext.getResources().getBoolean( com.android.internal.R.bool.config_lidControlsDisplayFold); mShouldSwapDisplaysOnLidSwitch = mContext.getResources().getStringArray( com.android.internal.R.array.config_internalFoldedPhysicalDisplayIds).length == 2; mAllowTheaterModeWakeFromKey = mContext.getResources().getBoolean( com.android.internal.R.bool.config_allowTheaterModeWakeFromKey); Loading Loading @@ -5041,8 +5038,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { final int lidState = mDefaultDisplayPolicy.getLidState(); if (mLidControlsDisplayFold && mDisplayFoldController != null) { mDisplayFoldController.requestDeviceFolded(lidState == LID_CLOSED); } else if (mShouldSwapDisplaysOnLidSwitch) { mDisplayManagerInternal.setDeviceFolded(lidState == LID_CLOSED); } else if (lidState == LID_CLOSED) { int lidBehavior = getLidBehavior(); switch (lidBehavior) { Loading Loading
core/java/android/hardware/display/DisplayManagerInternal.java +0 −6 Original line number Diff line number Diff line Loading @@ -266,12 +266,6 @@ public abstract class DisplayManagerInternal { */ public abstract void ignoreProximitySensorUntilChanged(); /** * Sets the folded state of the device. * TODO: b/168208522 - Remove in favor of DisplayStatePolicy when that is available. */ public abstract void setDeviceFolded(boolean isFolded); /** * Describes the requested power state of the display. * Loading
services/core/java/com/android/server/display/DisplayManagerService.java +23 −7 Original line number Diff line number Diff line Loading @@ -91,6 +91,7 @@ import android.util.SparseArray; import android.util.Spline; import android.view.Display; import android.view.DisplayInfo; import android.view.IDisplayFoldListener; import android.view.Surface; import android.view.SurfaceControl; Loading @@ -103,6 +104,7 @@ 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; Loading Loading @@ -312,6 +314,9 @@ 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; public DisplayManagerService(Context context) { this(context, new Injector()); } Loading Loading @@ -429,6 +434,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); scheduleTraversalLocked(false); } } Loading Loading @@ -2563,13 +2573,6 @@ public final class DisplayManagerService extends SystemService { public void ignoreProximitySensorUntilChanged() { mDisplayPowerController.ignoreProximitySensorUntilChanged(); } @Override public void setDeviceFolded(boolean isFolded) { synchronized (mSyncRoot) { mLogicalDisplayMapper.setDeviceFoldedLocked(isFolded); } } } class DesiredDisplayModeSpecsObserver Loading Loading @@ -2606,4 +2609,17 @@ public final class DisplayManagerService extends SystemService { } } } class DisplayFoldListener extends IDisplayFoldListener.Stub { @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) { synchronized (mSyncRoot) { mLogicalDisplayMapper.setDeviceFoldedLocked(folded); } } } }; }
services/core/java/com/android/server/display/LogicalDisplayMapper.java +25 −25 Original line number Diff line number Diff line Loading @@ -167,7 +167,31 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { } } public void setDeviceFoldedLocked(boolean isFolded) { public void dumpLocked(PrintWriter pw) { pw.println("LogicalDisplayMapper:"); IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); ipw.increaseIndent(); ipw.println("mSingleDisplayDemoMode=" + mSingleDisplayDemoMode); ipw.println("mNextNonDefaultDisplayId=" + mNextNonDefaultDisplayId); final int logicalDisplayCount = mLogicalDisplays.size(); ipw.println(); ipw.println("Logical Displays: size=" + logicalDisplayCount); for (int i = 0; i < logicalDisplayCount; i++) { int displayId = mLogicalDisplays.keyAt(i); LogicalDisplay display = mLogicalDisplays.valueAt(i); ipw.println("Display " + displayId + ":"); ipw.increaseIndent(); display.dumpLocked(ipw); ipw.decreaseIndent(); ipw.println(); } } void setDeviceFoldedLocked(boolean isFolded) { mIsFolded = isFolded; if (mIsFoldedOverride != null) { isFolded = mIsFoldedOverride.booleanValue(); Loading Loading @@ -237,30 +261,6 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { } } public void dumpLocked(PrintWriter pw) { pw.println("LogicalDisplayMapper:"); IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); ipw.increaseIndent(); ipw.println("mSingleDisplayDemoMode=" + mSingleDisplayDemoMode); ipw.println("mNextNonDefaultDisplayId=" + mNextNonDefaultDisplayId); final int logicalDisplayCount = mLogicalDisplays.size(); ipw.println(); ipw.println("Logical Displays: size=" + logicalDisplayCount); for (int i = 0; i < logicalDisplayCount; i++) { int displayId = mLogicalDisplays.keyAt(i); LogicalDisplay display = mLogicalDisplays.valueAt(i); ipw.println("Display " + displayId + ":"); ipw.increaseIndent(); display.dumpLocked(ipw); ipw.decreaseIndent(); ipw.println(); } } void setFoldOverrideLocked(Boolean isFolded) { if (!Objects.equals(isFolded, mIsFoldedOverride)) { mIsFoldedOverride = isFolded; Loading
services/core/java/com/android/server/policy/DisplayFoldController.java +30 −25 Original line number Diff line number Diff line Loading @@ -80,22 +80,25 @@ class DisplayFoldController { } void setDeviceFolded(boolean folded) { mDisplayManagerInternal.setDeviceFolded(folded); if (mFolded != null && mFolded == folded) { return; } if (folded) { Rect foldedArea; final Rect foldedArea; if (!mOverrideFoldedArea.isEmpty()) { foldedArea = mOverrideFoldedArea; } else if (!mFoldedArea.isEmpty()) { foldedArea = mFoldedArea; } else { return; foldedArea = null; } mDisplayManagerInternal.getNonOverrideDisplayInfo(mDisplayId, mNonOverrideDisplayInfo); // Only do display scaling/cropping if it has been configured to do so if (foldedArea != null) { if (folded) { mDisplayManagerInternal.getNonOverrideDisplayInfo( mDisplayId, mNonOverrideDisplayInfo); final int dx = (mNonOverrideDisplayInfo.logicalWidth - foldedArea.width()) / 2 - foldedArea.left; final int dy = (mNonOverrideDisplayInfo.logicalHeight - foldedArea.height()) / 2 Loading @@ -111,6 +114,8 @@ class DisplayFoldController { mWindowManagerInternal.clearForcedDisplaySize(mDisplayId); mDisplayManagerInternal.setDisplayOffsets(mDisplayId, 0, 0); } } mDurationLogger.setDeviceFolded(folded); mDurationLogger.logFocusedAppWithFoldState(folded, mFocusedApp); mFolded = folded; Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +0 −5 Original line number Diff line number Diff line Loading @@ -471,7 +471,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mLidKeyboardAccessibility; int mLidNavigationAccessibility; private boolean mLidControlsDisplayFold; private boolean mShouldSwapDisplaysOnLidSwitch; int mShortPressOnPowerBehavior; int mLongPressOnPowerBehavior; int mVeryLongPressOnPowerBehavior; Loading Loading @@ -1849,8 +1848,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { com.android.internal.R.integer.config_lidNavigationAccessibility); mLidControlsDisplayFold = mContext.getResources().getBoolean( com.android.internal.R.bool.config_lidControlsDisplayFold); mShouldSwapDisplaysOnLidSwitch = mContext.getResources().getStringArray( com.android.internal.R.array.config_internalFoldedPhysicalDisplayIds).length == 2; mAllowTheaterModeWakeFromKey = mContext.getResources().getBoolean( com.android.internal.R.bool.config_allowTheaterModeWakeFromKey); Loading Loading @@ -5041,8 +5038,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { final int lidState = mDefaultDisplayPolicy.getLidState(); if (mLidControlsDisplayFold && mDisplayFoldController != null) { mDisplayFoldController.requestDeviceFolded(lidState == LID_CLOSED); } else if (mShouldSwapDisplaysOnLidSwitch) { mDisplayManagerInternal.setDeviceFolded(lidState == LID_CLOSED); } else if (lidState == LID_CLOSED) { int lidBehavior = getLidBehavior(); switch (lidBehavior) { Loading