Update display contents when metrics change
There are two separate overrides for display metrics in DisplayManager and WindowManager: - In DM - LogicalDisplay#mOverrideDisplayInfo, in most cases not null. - In WM - DisplayContent#mBaseDisplayWidth/Height/Density, different from #mInitialDisplayWidth/Height/Density values when some metrics are forced. When display was resized its windows weren't updated because of two problems: old LogicaDisplay#mOverrideDisplayInfo was preventing WM from detecting the change and override (base) display metrics were never updated by resize. When display size changes: - Before this CL: DM receives DISPLAY_CHANGED event, it updates internal values and WM is notified about them with a message. In most cases there is an override obtained from WM and WM doesn't get new values from LogicalDisplay#getDisplayInfoLocked(). - With this CL: WM will requests real updated values from DM without any overrides and will decide whether to apply them or not: if there is no override in WM - it will apply values from WM, otherwise it will keep the override. Also it will always update initial display metrics if there is a real change detected. Bug: 35258051 Bug: 34164473 Bug: 36518752 Test: android.server.cts.ActivityManagerDisplayTests Test: #testDisplayResize Test: #testForceDisplayMetrics Change-Id: I2495c27797f11f9aaee4ea06648a8ccd29ac5b62
Loading
Please register or sign in to comment