Created
April 15, 2018 13:50
-
-
Save zacharee/888871bc36e82451a713f8518c64740f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java | |
index bc40849a47b..a3f394289ff 100644 | |
--- a/core/java/android/view/DisplayInfo.java | |
+++ b/core/java/android/view/DisplayInfo.java | |
@@ -237,6 +237,11 @@ public final class DisplayInfo implements Parcelable { | |
* </p> | |
*/ | |
public String ownerPackageName; | |
+ | |
+ /** | |
+ * Height for second screen, if default display | |
+ */ | |
+ public int signBoardHeight; | |
public static final Creator<DisplayInfo> CREATOR = new Creator<DisplayInfo>() { | |
@Override | |
@@ -298,6 +303,7 @@ public final class DisplayInfo implements Parcelable { | |
&& presentationDeadlineNanos == other.presentationDeadlineNanos | |
&& state == other.state | |
&& ownerUid == other.ownerUid | |
+ && signBoardHeight == other.signBoardHeight | |
&& Objects.equal(ownerPackageName, other.ownerPackageName); | |
} | |
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java | |
index fdcad428c52..b7583b05852 100644 | |
--- a/core/java/android/view/WindowManager.java | |
+++ b/core/java/android/view/WindowManager.java | |
@@ -663,6 +663,21 @@ public interface WindowManager extends ViewManager { | |
* End of types of system windows. | |
*/ | |
public static final int LAST_SYSTEM_WINDOW = 2999; | |
+ | |
+ /** | |
+ * Begin SignBoard Windows | |
+ */ | |
+ public static final int FIRST_SIGNBOARD_WINDOW = 3000; | |
+ | |
+ /** | |
+ * Normal SignBoard Window object | |
+ */ | |
+ public static final int TYPE_SIGNBOARD_NORMAL = FIRST_SIGNBOARD_WINDOW + 1; | |
+ | |
+ /** | |
+ * End SignBoard Windows | |
+ */ | |
+ public static final int LAST_SIGNBOARD_WINDOW = 3999; | |
/** | |
* Return true if the window type is an alert window. | |
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java | |
index 9c762cce7e0..68fd956eb41 100644 | |
--- a/services/core/java/com/android/server/display/DisplayManagerService.java | |
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java | |
@@ -257,7 +257,7 @@ public final class DisplayManagerService extends SystemService { | |
true /*allowIsolated*/); | |
publishLocalService(DisplayManagerInternal.class, new LocalService()); | |
publishLocalService(DisplayTransformManager.class, new DisplayTransformManager()); | |
- } | |
+ } | |
@Override | |
public void onBootPhase(int phase) { | |
diff --git a/services/core/java/com/android/server/display/LogicalDisplay.java b/services/core/java/com/android/server/display/LogicalDisplay.java | |
index 287a25aa9b3..0b980d57154 100644 | |
--- a/services/core/java/com/android/server/display/LogicalDisplay.java | |
+++ b/services/core/java/com/android/server/display/LogicalDisplay.java | |
@@ -136,6 +136,7 @@ final class LogicalDisplay { | |
mInfo.logicalDensityDpi = mOverrideDisplayInfo.logicalDensityDpi; | |
mInfo.physicalXDpi = mOverrideDisplayInfo.physicalXDpi; | |
mInfo.physicalYDpi = mOverrideDisplayInfo.physicalYDpi; | |
+ mInfo.signBoardHeight = mOverrideDisplayInfo.signBoardHeight; | |
} | |
} | |
return mInfo; | |
@@ -340,8 +341,48 @@ final class LogicalDisplay { | |
displayRectWidth = displayInfo.logicalWidth * physHeight / displayInfo.logicalHeight; | |
displayRectHeight = physHeight; | |
} | |
+ | |
int displayRectTop = (physHeight - displayRectHeight) / 2; | |
int displayRectLeft = (physWidth - displayRectWidth) / 2; | |
+ | |
+ if (displayInfo.signBoardHeight > 0 && (displayDeviceInfo.flags & 1) != 0) { | |
+ if (orientation == Surface.ROTATION_0 || orientation == Surface.ROTATION_180) { | |
+ if (physHeight == displayInfo.logicalHeight) { | |
+ displayRectWidth = (displayInfo.logicalWidth * physHeight) / (displayInfo.logicalHeight + displayInfo.signBoardHeight); | |
+ } | |
+ } else if (physWidth == displayInfo.logicalWidth) { | |
+ int mTmpWidth = displayInfo.logicalWidth + displayInfo.signBoardHeight; | |
+ int i = displayInfo.logicalHeight; | |
+ displayRectHeight = (displayInfo.logicalHeight * physWidth) / mTmpWidth; | |
+ } | |
+ if (orientation == Surface.ROTATION_0) { | |
+ displayRectTop = displayInfo.signBoardHeight; | |
+ if (physHeight == displayInfo.logicalHeight) { | |
+ displayRectLeft = (physWidth - displayRectWidth) / 2; | |
+ displayRectHeight -= displayInfo.signBoardHeight; | |
+ } | |
+ } else if (orientation == Surface.ROTATION_180) { | |
+ displayRectTop = 0; | |
+ if (physHeight == displayInfo.logicalHeight) { | |
+ displayRectLeft = (physWidth - displayRectWidth) / 2; | |
+ displayRectHeight -= displayInfo.signBoardHeight; | |
+ } | |
+ } else if (orientation == Surface.ROTATION_90) { | |
+ displayRectLeft = displayInfo.signBoardHeight; | |
+ if (physWidth == displayInfo.logicalWidth) { | |
+ displayRectTop = (physHeight - displayRectHeight) / 2; | |
+ displayRectWidth -= displayInfo.signBoardHeight; | |
+ } | |
+ } else if (physWidth == displayInfo.logicalWidth) { | |
+ displayRectTop = (physHeight - displayRectHeight) / 2; | |
+ displayRectLeft = (physWidth - displayRectWidth) / 2; | |
+ displayRectWidth -= displayInfo.signBoardHeight; | |
+ } else { | |
+ displayRectTop = 0; | |
+ displayRectLeft = 0; | |
+ } | |
+ } | |
+ | |
mTempDisplayRect.set(displayRectLeft, displayRectTop, | |
displayRectLeft + displayRectWidth, displayRectTop + displayRectHeight); | |
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java | |
index be564d95b59..69030b904c1 100644 | |
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java | |
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java | |
@@ -189,12 +189,14 @@ import dalvik.system.PathClassLoader; | |
* of both of those when held. | |
*/ | |
public class PhoneWindowManager implements WindowManagerPolicy { | |
+ static final int OFFSET = 160; | |
+ | |
static final String TAG = "WindowManager"; | |
static final boolean DEBUG = false; | |
static final boolean localLOGV = false; | |
static final boolean DEBUG_INPUT = false; | |
static final boolean DEBUG_KEYGUARD = false; | |
- static final boolean DEBUG_LAYOUT = false; | |
+ static final boolean DEBUG_LAYOUT = true; | |
static final boolean DEBUG_STARTING_WINDOW = false; | |
static final boolean DEBUG_WAKEUP = false; | |
static final boolean SHOW_STARTING_ANIMATIONS = true; | |
@@ -443,6 +445,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
int[] mNavigationBarHeightForRotationInCarMode = new int[4]; | |
int[] mNavigationBarWidthForRotationInCarMode = new int[4]; | |
+ WindowState mSignBoard = null; | |
+ private final Rect[] mSecondScreenFrame = new Rect[4]; | |
+ | |
private LongSparseArray<IShortcutService> mShortcutKeyServices = new LongSparseArray<>(); | |
// Whether to allow dock apps with METADATA_DOCK_HOME to temporarily take over the Home key. | |
@@ -2437,6 +2442,15 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
// $ adb shell setprop config.override_forced_orient true | |
// $ adb shell wm size reset | |
!"true".equals(SystemProperties.get("config.override_forced_orient")); | |
+ | |
+ mSecondScreenFrame[0] = new Rect(); | |
+ mSecondScreenFrame[1] = new Rect(); | |
+ mSecondScreenFrame[2] = new Rect(); | |
+ mSecondScreenFrame[3] = new Rect(); | |
+ mSecondScreenFrame[0].set(0, -OFFSET, width, 0); | |
+ mSecondScreenFrame[1].set(-OFFSET, 0, 0, width); | |
+ mSecondScreenFrame[2].set(0, height - OFFSET, width, height); | |
+ mSecondScreenFrame[3].set(height - OFFSET, 0, height, width); | |
} | |
/** | |
@@ -2829,6 +2843,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
// remove the wallpaper and keyguard flag so that any change in-flight after setting | |
// the keyguard as occluded wouldn't set these flags again. | |
// See {@link #processKeyguardSetHiddenResultLw}. | |
+ | |
if (mKeyguardHidden) { | |
attrs.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; | |
attrs.privateFlags &= ~WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; | |
@@ -3060,6 +3075,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
case TYPE_POINTER: | |
// the (mouse) pointer layer | |
return 31; | |
+ case TYPE_SIGNBOARD_NORMAL: | |
+ return 32; | |
} | |
Log.e(TAG, "Unknown window type: " + type); | |
return 2; | |
@@ -3105,7 +3122,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
// For a basic navigation bar, when we are in landscape mode we place | |
// the navigation bar to the side. | |
if (mNavigationBarCanMove && fullWidth > fullHeight) { | |
- return fullWidth - getNavigationBarWidth(rotation, uiMode); | |
+ return fullWidth - getNavigationBarWidth(rotation, uiMode) - OFFSET; | |
} | |
} | |
return fullWidth; | |
@@ -3126,7 +3143,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
// For a basic navigation bar, when we are in portrait mode we place | |
// the navigation bar to the bottom. | |
if (!mNavigationBarCanMove || fullWidth < fullHeight) { | |
- return fullHeight - getNavigationBarHeight(rotation, uiMode); | |
+ return fullHeight - getNavigationBarHeight(rotation, uiMode) - OFFSET; | |
} | |
} | |
return fullHeight; | |
@@ -3371,6 +3388,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
mNavigationBarController.setWindow(win); | |
if (DEBUG_LAYOUT) Slog.i(TAG, "NAVIGATION BAR: " + mNavigationBar); | |
break; | |
+ case TYPE_SIGNBOARD_NORMAL: | |
+ mSignBoard = win; | |
+ break; | |
case TYPE_NAVIGATION_BAR_PANEL: | |
case TYPE_STATUS_BAR_PANEL: | |
case TYPE_STATUS_BAR_SUB_PANEL: | |
@@ -4732,6 +4752,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
@Override | |
public void beginLayoutLw(boolean isDefaultDisplay, int displayWidth, int displayHeight, | |
int displayRotation, int uiMode) { | |
+ | |
mDisplayRotation = displayRotation; | |
final int overscanLeft, overscanTop, overscanRight, overscanBottom; | |
if (isDefaultDisplay) { | |
@@ -4767,6 +4788,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
overscanRight = 0; | |
overscanBottom = 0; | |
} | |
+ | |
mOverscanScreenLeft = mRestrictedOverscanScreenLeft = 0; | |
mOverscanScreenTop = mRestrictedOverscanScreenTop = 0; | |
mOverscanScreenWidth = mRestrictedOverscanScreenWidth = displayWidth; | |
@@ -4861,6 +4883,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
boolean isKeyguardShowing) { | |
// decide where the status bar goes ahead of time | |
if (mStatusBar != null) { | |
+ | |
// apply any navigation bar insets | |
pf.left = df.left = of.left = mUnrestrictedScreenLeft; | |
pf.top = df.top = of.top = mUnrestrictedScreenTop; | |
@@ -5195,11 +5218,22 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
/** {@inheritDoc} */ | |
@Override | |
public void layoutWindowLw(WindowState win, WindowState attached) { | |
+ final Rect pf = mTmpParentFrame; | |
+ final Rect df = mTmpDisplayFrame; | |
+ final Rect of = mTmpOverscanFrame; | |
+ final Rect cf = mTmpContentFrame; | |
+ final Rect vf = mTmpVisibleFrame; | |
+ final Rect dcf = mTmpDecorFrame; | |
+ final Rect sf = mTmpStableFrame; | |
+ | |
+ Rect osf = null; | |
+ | |
// We've already done the navigation bar and status bar. If the status bar can receive | |
// input, we need to layout it again to accomodate for the IME window. | |
if ((win == mStatusBar && !canReceiveInput(win)) || win == mNavigationBar) { | |
return; | |
} | |
+ | |
final WindowManager.LayoutParams attrs = win.getAttrs(); | |
final boolean isDefaultDisplay = win.isDefaultDisplay(); | |
final boolean needsToOffsetInputMethodTarget = isDefaultDisplay && | |
@@ -5214,18 +5248,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
final int sim = attrs.softInputMode; | |
final int sysUiFl = WindowManagerPolicyControl.getSystemUiVisibility(win, null); | |
- final Rect pf = mTmpParentFrame; | |
- final Rect df = mTmpDisplayFrame; | |
- final Rect of = mTmpOverscanFrame; | |
- final Rect cf = mTmpContentFrame; | |
- final Rect vf = mTmpVisibleFrame; | |
- final Rect dcf = mTmpDecorFrame; | |
- final Rect sf = mTmpStableFrame; | |
- Rect osf = null; | |
dcf.setEmpty(); | |
- | |
+ | |
final boolean hasNavBar = (isDefaultDisplay && mHasNavigationBar | |
- && mNavigationBar != null && mNavigationBar.isVisibleLw()); | |
+ && mNavigationBar != null && mNavigationBar.isVisibleLw()); | |
final int adjust = sim & SOFT_INPUT_MASK_ADJUST; | |
@@ -5294,7 +5320,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
vf.set(cf); | |
} | |
} else if (attrs.type == TYPE_WALLPAPER) { | |
- layoutWallpaper(win, pf, df, of, cf); | |
+ layoutWallpaper(win, pf, df, of, cf); | |
} else if (win == mStatusBar) { | |
pf.left = df.left = of.left = mUnrestrictedScreenLeft; | |
pf.top = df.top = of.top = mUnrestrictedScreenTop; | |
@@ -5487,8 +5513,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
? mRestrictedScreenLeft+mRestrictedScreenWidth | |
: mUnrestrictedScreenLeft + mUnrestrictedScreenWidth; | |
pf.bottom = df.bottom = of.bottom = cf.bottom = hasNavBar | |
- ? mRestrictedScreenTop+mRestrictedScreenHeight | |
- : mUnrestrictedScreenTop + mUnrestrictedScreenHeight; | |
+ ? mRestrictedScreenTop+mRestrictedScreenHeight | |
+ : mUnrestrictedScreenTop + mUnrestrictedScreenHeight; | |
if (DEBUG_LAYOUT) Slog.v(TAG, String.format( | |
"Laying out IN_SCREEN status bar window: (%d,%d - %d,%d)", | |
pf.left, pf.top, pf.right, pf.bottom)); | |
@@ -5705,8 +5731,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
+ " sf=" + sf.toShortString() | |
+ " osf=" + (osf == null ? "null" : osf.toShortString())); | |
- win.computeFrameLw(pf, df, of, cf, vf, dcf, sf, osf); | |
- | |
+ if (!layoutWindowLwCustom(win, attached)) win.computeFrameLw(pf, df, of, cf, vf, dcf, sf, osf); | |
+ | |
// Dock windows carve out the bottom of the screen, so normal windows | |
// can't appear underneath them. | |
if (attrs.type == TYPE_INPUT_METHOD && win.isVisibleOrBehindKeyguardLw() | |
@@ -5720,6 +5746,15 @@ public class PhoneWindowManager implements WindowManagerPolicy { | |
} | |
} | |
+ private boolean layoutWindowLwCustom(WindowState win, WindowState attached) { | |
+ if (win == mSignBoard) { | |
+ Rect rect = mSecondScreenFrame[mDisplayRotation]; | |
+ win.computeFrameLw(rect, rect, rect, rect, rect, rect, rect, rect); | |
+ return true; | |
+ } | |
+ return false; | |
+ } | |
+ | |
private void layoutWallpaper(WindowState win, Rect pf, Rect df, Rect of, Rect cf) { | |
// The wallpaper also has Real Ultimate Power, but we want to tell | |
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java | |
index 1015a20687c..e82ae4d1c16 100644 | |
--- a/services/core/java/com/android/server/wm/DisplayContent.java | |
+++ b/services/core/java/com/android/server/wm/DisplayContent.java | |
@@ -239,6 +239,14 @@ class DisplayContent { | |
int left = (physWidth - width) / 2; | |
int height = mDisplayInfo.logicalHeight; | |
int top = (physHeight - height) / 2; | |
+ | |
+ if (mDisplayInfo.signBoardHeight > 0) { | |
+ left = 0; | |
+ top = 0; | |
+ } | |
+ | |
+ Slog.e(TAG_WM, "Logical Rect: " + out.toString()); | |
+ | |
out.set(left, top, left + width, top + height); | |
} | |
diff --git a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java | |
index f11281e7692..036961c8238 100644 | |
--- a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java | |
+++ b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java | |
@@ -33,46 +33,46 @@ public class WindowManagerDebugConfig { | |
// Default log tag for the window manager package. | |
static final String TAG_WM = "WindowManager"; | |
- static final boolean DEBUG_RESIZE = false; | |
- static final boolean DEBUG = false; | |
- static final boolean DEBUG_ADD_REMOVE = false; | |
- static final boolean DEBUG_FOCUS = false; | |
- static final boolean DEBUG_FOCUS_LIGHT = DEBUG_FOCUS || false; | |
- static final boolean DEBUG_ANIM = false; | |
- static final boolean DEBUG_KEYGUARD = false; | |
- static final boolean DEBUG_LAYOUT = false; | |
- static final boolean DEBUG_LAYERS = false; | |
- static final boolean DEBUG_INPUT = false; | |
- static final boolean DEBUG_INPUT_METHOD = false; | |
- static final boolean DEBUG_VISIBILITY = false; | |
- static final boolean DEBUG_WINDOW_MOVEMENT = false; | |
- static final boolean DEBUG_TOKEN_MOVEMENT = false; | |
- static final boolean DEBUG_ORIENTATION = false; | |
- static final boolean DEBUG_APP_ORIENTATION = false; | |
- static final boolean DEBUG_CONFIGURATION = false; | |
- static final boolean DEBUG_APP_TRANSITIONS = false; | |
- static final boolean DEBUG_STARTING_WINDOW = false; | |
- static final boolean DEBUG_WALLPAPER = false; | |
- static final boolean DEBUG_WALLPAPER_LIGHT = false || DEBUG_WALLPAPER; | |
- static final boolean DEBUG_DRAG = false; | |
- static final boolean DEBUG_SCREEN_ON = false; | |
- static final boolean DEBUG_SCREENSHOT = false; | |
- static final boolean DEBUG_BOOT = false; | |
- static final boolean DEBUG_LAYOUT_REPEATS = false; | |
- static final boolean DEBUG_SURFACE_TRACE = false; | |
- static final boolean DEBUG_WINDOW_TRACE = false; | |
- static final boolean DEBUG_TASK_MOVEMENT = false; | |
- static final boolean DEBUG_TASK_POSITIONING = false; | |
- static final boolean DEBUG_STACK = false; | |
- static final boolean DEBUG_DISPLAY = false; | |
- static final boolean DEBUG_POWER = false; | |
- static final boolean DEBUG_DIM_LAYER = false; | |
- static final boolean SHOW_SURFACE_ALLOC = false; | |
- static final boolean SHOW_TRANSACTIONS = false; | |
- static final boolean SHOW_VERBOSE_TRANSACTIONS = false && SHOW_TRANSACTIONS; | |
- static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS; | |
- static final boolean SHOW_STACK_CRAWLS = false; | |
- static final boolean DEBUG_WINDOW_CROP = false; | |
+ static final boolean DEBUG_RESIZE = true; | |
+ static final boolean DEBUG = true; | |
+ static final boolean DEBUG_ADD_REMOVE = true; | |
+ static final boolean DEBUG_FOCUS = true; | |
+ static final boolean DEBUG_FOCUS_LIGHT = DEBUG_FOCUS || true; | |
+ static final boolean DEBUG_ANIM = true; | |
+ static final boolean DEBUG_KEYGUARD = true; | |
+ static final boolean DEBUG_LAYOUT = true; | |
+ static final boolean DEBUG_LAYERS = true; | |
+ static final boolean DEBUG_INPUT = true; | |
+ static final boolean DEBUG_INPUT_METHOD = true; | |
+ static final boolean DEBUG_VISIBILITY = true; | |
+ static final boolean DEBUG_WINDOW_MOVEMENT = true; | |
+ static final boolean DEBUG_TOKEN_MOVEMENT = true; | |
+ static final boolean DEBUG_ORIENTATION = true; | |
+ static final boolean DEBUG_APP_ORIENTATION = true; | |
+ static final boolean DEBUG_CONFIGURATION = true; | |
+ static final boolean DEBUG_APP_TRANSITIONS = true; | |
+ static final boolean DEBUG_STARTING_WINDOW = true; | |
+ static final boolean DEBUG_WALLPAPER = true; | |
+ static final boolean DEBUG_WALLPAPER_LIGHT = true || DEBUG_WALLPAPER; | |
+ static final boolean DEBUG_DRAG = true; | |
+ static final boolean DEBUG_SCREEN_ON = true; | |
+ static final boolean DEBUG_SCREENSHOT = true; | |
+ static final boolean DEBUG_BOOT = true; | |
+ static final boolean DEBUG_LAYOUT_REPEATS = true; | |
+ static final boolean DEBUG_SURFACE_TRACE = true; | |
+ static final boolean DEBUG_WINDOW_TRACE = true; | |
+ static final boolean DEBUG_TASK_MOVEMENT = true; | |
+ static final boolean DEBUG_TASK_POSITIONING = true; | |
+ static final boolean DEBUG_STACK = true; | |
+ static final boolean DEBUG_DISPLAY = true; | |
+ static final boolean DEBUG_POWER = true; | |
+ static final boolean DEBUG_DIM_LAYER = true; | |
+ static final boolean SHOW_SURFACE_ALLOC = true; | |
+ static final boolean SHOW_TRANSACTIONS = true; | |
+ static final boolean SHOW_VERBOSE_TRANSACTIONS = true && SHOW_TRANSACTIONS; | |
+ static final boolean SHOW_LIGHT_TRANSACTIONS = true || SHOW_TRANSACTIONS; | |
+ static final boolean SHOW_STACK_CRAWLS = true; | |
+ static final boolean DEBUG_WINDOW_CROP = true; | |
static final String TAG_KEEP_SCREEN_ON = "DebugKeepScreenOn"; | |
static final boolean DEBUG_KEEP_SCREEN_ON = false; | |
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java | |
index 0aeb78b86f4..08d9a676265 100644 | |
--- a/services/core/java/com/android/server/wm/WindowManagerService.java | |
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java | |
@@ -7696,6 +7696,13 @@ public class WindowManagerService extends IWindowManager.Stub | |
displayInfo.logicalDensityDpi = displayContent.mBaseDisplayDensity; | |
displayInfo.appWidth = appWidth; | |
displayInfo.appHeight = appHeight; | |
+ | |
+ if (mRotation == Surface.ROTATION_0 || mRotation == Surface.ROTATION_180) { | |
+ displayInfo.logicalHeight -= displayInfo.signBoardHeight; | |
+ } else { | |
+ displayInfo.logicalWidth -= displayInfo.signBoardHeight; | |
+ } | |
+ | |
displayInfo.getLogicalMetrics(mRealDisplayMetrics, | |
CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null); | |
displayInfo.getAppMetrics(mDisplayMetrics); | |
@@ -7709,7 +7716,7 @@ public class WindowManagerService extends IWindowManager.Stub | |
displayContent.getDisplayId(), displayInfo); | |
displayContent.mBaseDisplayRect.set(0, 0, dw, dh); | |
- if (false) { | |
+ if (true) { | |
Slog.i(TAG_WM, "Set app display size: " + appWidth + " x " + appHeight); | |
} | |
@@ -11113,6 +11120,13 @@ public class WindowManagerService extends IWindowManager.Stub | |
displayInfo.overscanTop = rect.top; | |
displayInfo.overscanRight = rect.right; | |
displayInfo.overscanBottom = rect.bottom; | |
+ | |
+ if (displayId == Display.DEFAULT_DISPLAY) { | |
+ displayInfo.signBoardHeight = 160; | |
+ } else { | |
+ displayInfo.signBoardHeight = 0; | |
+ } | |
+ | |
mDisplayManagerInternal.setDisplayInfoOverrideFromWindowManager(displayId, displayInfo); | |
configureDisplayPolicyLocked(displayContent); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment