Loading core/java/android/provider/Settings.java +9 −8 Original line number Diff line number Diff line Loading @@ -3869,7 +3869,6 @@ public final class Settings { MOVED_TO_GLOBAL.add(Settings.Global.DATA_ROAMING); MOVED_TO_GLOBAL.add(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED); MOVED_TO_GLOBAL.add(Settings.Global.DEVICE_PROVISIONED); MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_DENSITY_FORCED); MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_SIZE_FORCED); MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE); MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE); Loading Loading @@ -5103,6 +5102,15 @@ public final class Settings { public static final String DISABLED_PRINT_SERVICES = "disabled_print_services"; /** * The saved value for WindowManagerService.setForcedDisplayDensity() * formatted as a single integer representing DPI. If unset, then use * the real display density. * * @hide */ public static final String DISPLAY_DENSITY_FORCED = "display_density_forced"; /** * Setting to always use the default text-to-speech settings regardless * of the application settings. Loading Loading @@ -6534,13 +6542,6 @@ public final class Settings { */ public static final String DEVICE_PROVISIONED = "device_provisioned"; /** * The saved value for WindowManagerService.setForcedDisplayDensity(). * One integer in dpi. If unset, then use the real display density. * @hide */ public static final String DISPLAY_DENSITY_FORCED = "display_density_forced"; /** * The saved value for WindowManagerService.setForcedDisplaySize(). * Two integers separated by a comma. If unset, then use the real display size. Loading services/core/java/com/android/server/wm/WindowManagerService.java +51 −27 Original line number Diff line number Diff line Loading @@ -5364,8 +5364,18 @@ public class WindowManagerService extends IWindowManager.Stub mWindowPlacerLocked.performSurfacePlacement(); // Notify whether the docked stack exists for the current user getDefaultDisplayContentLocked().mDividerControllerLocked final DisplayContent displayContent = getDefaultDisplayContentLocked(); displayContent.mDividerControllerLocked .notifyDockedStackExistsChanged(hasDockedTasksForUser(newUserId)); // If the display is already prepared, update the density. // Otherwise, we'll update it when it's prepared. if (mDisplayReady) { final int forcedDensity = getForcedDisplayDensityForUserLocked(newUserId); final int targetDensity = forcedDensity != 0 ? forcedDensity : displayContent.mInitialDisplayDensity; setForcedDisplayDensityLocked(displayContent, targetDensity); } } } Loading Loading @@ -8361,22 +8371,10 @@ public class WindowManagerService extends IWindowManager.Stub } // Display density. String densityStr = Settings.Global.getString(mContext.getContentResolver(), Settings.Global.DISPLAY_DENSITY_FORCED); if (densityStr == null || densityStr.length() == 0) { densityStr = SystemProperties.get(DENSITY_OVERRIDE, null); } if (densityStr != null && densityStr.length() > 0) { int density; try { density = Integer.parseInt(densityStr); if (displayContent.mBaseDisplayDensity != density) { Slog.i(TAG_WM, "FORCED DISPLAY DENSITY: " + density); final int density = getForcedDisplayDensityForUserLocked(mCurrentUserId); if (density != 0) { displayContent.mBaseDisplayDensity = density; } } catch (NumberFormatException ex) { } } // Display scaling mode. int mode = Settings.Global.getInt(mContext.getContentResolver(), Loading Loading @@ -8461,8 +8459,9 @@ public class WindowManagerService extends IWindowManager.Stub final DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null) { setForcedDisplayDensityLocked(displayContent, density); Settings.Global.putString(mContext.getContentResolver(), Settings.Global.DISPLAY_DENSITY_FORCED, Integer.toString(density)); Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.DISPLAY_DENSITY_FORCED, Integer.toString(density), mCurrentUserId); } } } finally { Loading @@ -8470,13 +8469,6 @@ public class WindowManagerService extends IWindowManager.Stub } } // displayContent must not be null private void setForcedDisplayDensityLocked(DisplayContent displayContent, int density) { Slog.i(TAG_WM, "Using new display density: " + density); displayContent.mBaseDisplayDensity = density; reconfigureDisplayLocked(displayContent); } @Override public void clearForcedDisplayDensity(int displayId) { if (mContext.checkCallingOrSelfPermission( Loading @@ -8495,8 +8487,8 @@ public class WindowManagerService extends IWindowManager.Stub if (displayContent != null) { setForcedDisplayDensityLocked(displayContent, displayContent.mInitialDisplayDensity); Settings.Global.putString(mContext.getContentResolver(), Settings.Global.DISPLAY_DENSITY_FORCED, ""); Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.DISPLAY_DENSITY_FORCED, "", mCurrentUserId); } } } finally { Loading @@ -8504,6 +8496,38 @@ public class WindowManagerService extends IWindowManager.Stub } } /** * @param userId the ID of the user * @return the forced display density for the specified user, if set, or * {@code 0} if not set */ private int getForcedDisplayDensityForUserLocked(int userId) { String densityStr = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.DISPLAY_DENSITY_FORCED, userId); if (densityStr == null || densityStr.length() == 0) { densityStr = SystemProperties.get(DENSITY_OVERRIDE, null); } if (densityStr != null && densityStr.length() > 0) { try { return Integer.parseInt(densityStr); } catch (NumberFormatException ex) { } } return 0; } /** * Forces the given display to the use the specified density. * * @param displayContent the display to modify * @param density the density in DPI to use */ private void setForcedDisplayDensityLocked(@NonNull DisplayContent displayContent, int density) { displayContent.mBaseDisplayDensity = density; reconfigureDisplayLocked(displayContent); } // displayContent must not be null private void reconfigureDisplayLocked(DisplayContent displayContent) { // TODO: Multidisplay: for now only use with default display. Loading Loading
core/java/android/provider/Settings.java +9 −8 Original line number Diff line number Diff line Loading @@ -3869,7 +3869,6 @@ public final class Settings { MOVED_TO_GLOBAL.add(Settings.Global.DATA_ROAMING); MOVED_TO_GLOBAL.add(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED); MOVED_TO_GLOBAL.add(Settings.Global.DEVICE_PROVISIONED); MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_DENSITY_FORCED); MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_SIZE_FORCED); MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE); MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE); Loading Loading @@ -5103,6 +5102,15 @@ public final class Settings { public static final String DISABLED_PRINT_SERVICES = "disabled_print_services"; /** * The saved value for WindowManagerService.setForcedDisplayDensity() * formatted as a single integer representing DPI. If unset, then use * the real display density. * * @hide */ public static final String DISPLAY_DENSITY_FORCED = "display_density_forced"; /** * Setting to always use the default text-to-speech settings regardless * of the application settings. Loading Loading @@ -6534,13 +6542,6 @@ public final class Settings { */ public static final String DEVICE_PROVISIONED = "device_provisioned"; /** * The saved value for WindowManagerService.setForcedDisplayDensity(). * One integer in dpi. If unset, then use the real display density. * @hide */ public static final String DISPLAY_DENSITY_FORCED = "display_density_forced"; /** * The saved value for WindowManagerService.setForcedDisplaySize(). * Two integers separated by a comma. If unset, then use the real display size. Loading
services/core/java/com/android/server/wm/WindowManagerService.java +51 −27 Original line number Diff line number Diff line Loading @@ -5364,8 +5364,18 @@ public class WindowManagerService extends IWindowManager.Stub mWindowPlacerLocked.performSurfacePlacement(); // Notify whether the docked stack exists for the current user getDefaultDisplayContentLocked().mDividerControllerLocked final DisplayContent displayContent = getDefaultDisplayContentLocked(); displayContent.mDividerControllerLocked .notifyDockedStackExistsChanged(hasDockedTasksForUser(newUserId)); // If the display is already prepared, update the density. // Otherwise, we'll update it when it's prepared. if (mDisplayReady) { final int forcedDensity = getForcedDisplayDensityForUserLocked(newUserId); final int targetDensity = forcedDensity != 0 ? forcedDensity : displayContent.mInitialDisplayDensity; setForcedDisplayDensityLocked(displayContent, targetDensity); } } } Loading Loading @@ -8361,22 +8371,10 @@ public class WindowManagerService extends IWindowManager.Stub } // Display density. String densityStr = Settings.Global.getString(mContext.getContentResolver(), Settings.Global.DISPLAY_DENSITY_FORCED); if (densityStr == null || densityStr.length() == 0) { densityStr = SystemProperties.get(DENSITY_OVERRIDE, null); } if (densityStr != null && densityStr.length() > 0) { int density; try { density = Integer.parseInt(densityStr); if (displayContent.mBaseDisplayDensity != density) { Slog.i(TAG_WM, "FORCED DISPLAY DENSITY: " + density); final int density = getForcedDisplayDensityForUserLocked(mCurrentUserId); if (density != 0) { displayContent.mBaseDisplayDensity = density; } } catch (NumberFormatException ex) { } } // Display scaling mode. int mode = Settings.Global.getInt(mContext.getContentResolver(), Loading Loading @@ -8461,8 +8459,9 @@ public class WindowManagerService extends IWindowManager.Stub final DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null) { setForcedDisplayDensityLocked(displayContent, density); Settings.Global.putString(mContext.getContentResolver(), Settings.Global.DISPLAY_DENSITY_FORCED, Integer.toString(density)); Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.DISPLAY_DENSITY_FORCED, Integer.toString(density), mCurrentUserId); } } } finally { Loading @@ -8470,13 +8469,6 @@ public class WindowManagerService extends IWindowManager.Stub } } // displayContent must not be null private void setForcedDisplayDensityLocked(DisplayContent displayContent, int density) { Slog.i(TAG_WM, "Using new display density: " + density); displayContent.mBaseDisplayDensity = density; reconfigureDisplayLocked(displayContent); } @Override public void clearForcedDisplayDensity(int displayId) { if (mContext.checkCallingOrSelfPermission( Loading @@ -8495,8 +8487,8 @@ public class WindowManagerService extends IWindowManager.Stub if (displayContent != null) { setForcedDisplayDensityLocked(displayContent, displayContent.mInitialDisplayDensity); Settings.Global.putString(mContext.getContentResolver(), Settings.Global.DISPLAY_DENSITY_FORCED, ""); Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.DISPLAY_DENSITY_FORCED, "", mCurrentUserId); } } } finally { Loading @@ -8504,6 +8496,38 @@ public class WindowManagerService extends IWindowManager.Stub } } /** * @param userId the ID of the user * @return the forced display density for the specified user, if set, or * {@code 0} if not set */ private int getForcedDisplayDensityForUserLocked(int userId) { String densityStr = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.DISPLAY_DENSITY_FORCED, userId); if (densityStr == null || densityStr.length() == 0) { densityStr = SystemProperties.get(DENSITY_OVERRIDE, null); } if (densityStr != null && densityStr.length() > 0) { try { return Integer.parseInt(densityStr); } catch (NumberFormatException ex) { } } return 0; } /** * Forces the given display to the use the specified density. * * @param displayContent the display to modify * @param density the density in DPI to use */ private void setForcedDisplayDensityLocked(@NonNull DisplayContent displayContent, int density) { displayContent.mBaseDisplayDensity = density; reconfigureDisplayLocked(displayContent); } // displayContent must not be null private void reconfigureDisplayLocked(DisplayContent displayContent) { // TODO: Multidisplay: for now only use with default display. Loading