Skip to content

Instantly share code, notes, and snippets.

@zacharee
Created April 15, 2018 13:50
Show Gist options
  • Save zacharee/888871bc36e82451a713f8518c64740f to your computer and use it in GitHub Desktop.
Save zacharee/888871bc36e82451a713f8518c64740f to your computer and use it in GitHub Desktop.
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