diff options
Diffstat (limited to 'services/core/java/com/android/server/wm/WindowManagerService.java')
-rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8a4fe29..867292a 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -298,6 +298,7 @@ public class WindowManagerService extends IWindowManager.Stub private static final String SYSTEM_SECURE = "ro.secure"; private static final String SYSTEM_DEBUGGABLE = "ro.debuggable"; + private static final String PERSIST_SYS_LCD_DENSITY = "persist.sys.lcd_density"; private static final String DENSITY_OVERRIDE = "ro.config.density_override"; private static final String SIZE_OVERRIDE = "ro.config.size_override"; @@ -8589,6 +8590,9 @@ public class WindowManagerService extends IWindowManager.Stub @Override public int getInitialDisplayDensity(int displayId) { + if (displayId == Display.DEFAULT_DISPLAY) { + return DisplayMetrics.DENSITY_DEVICE_DEFAULT; + } synchronized (mWindowMap) { final DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null && displayContent.hasAccess(Binder.getCallingUid())) { @@ -8602,6 +8606,9 @@ public class WindowManagerService extends IWindowManager.Stub @Override public int getBaseDisplayDensity(int displayId) { + if (displayId == Display.DEFAULT_DISPLAY) { + return DisplayMetrics.DENSITY_PREFERRED; + } synchronized (mWindowMap) { final DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null && displayContent.hasAccess(Binder.getCallingUid())) { @@ -8629,6 +8636,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { final DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null) { + SystemProperties.set(PERSIST_SYS_LCD_DENSITY, Integer.toString(density)); setForcedDisplayDensityLocked(displayContent, density); Settings.Global.putString(mContext.getContentResolver(), Settings.Global.DISPLAY_DENSITY_FORCED, Integer.toString(density)); @@ -8637,6 +8645,10 @@ public class WindowManagerService extends IWindowManager.Stub } finally { Binder.restoreCallingIdentity(ident); } + try { + ActivityManagerNative.getDefault().restart(); + } catch (RemoteException e) { + } } // displayContent must not be null @@ -8665,6 +8677,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { final DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null) { + SystemProperties.set(PERSIST_SYS_LCD_DENSITY, null); setForcedDisplayDensityLocked(displayContent, displayContent.mInitialDisplayDensity); Settings.Global.putString(mContext.getContentResolver(), @@ -8674,6 +8687,10 @@ public class WindowManagerService extends IWindowManager.Stub } finally { Binder.restoreCallingIdentity(ident); } + try { + ActivityManagerNative.getDefault().restart(); + } catch (RemoteException e) { + } } // displayContent must not be null |