Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 722ba4c7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update display contents when metrics change"

parents 2d9a5ce0 d7f8f942
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -261,6 +261,7 @@ final class LogicalDisplay {


            mPrimaryDisplayDeviceInfo = deviceInfo;
            mPrimaryDisplayDeviceInfo = deviceInfo;
            mInfo = null;
            mInfo = null;
            mOverrideDisplayInfo = null;
        }
        }
    }
    }


+30 −4
Original line number Original line Diff line number Diff line
@@ -919,6 +919,10 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
    void updateDisplayInfo() {
    void updateDisplayInfo() {
        mDisplay.getDisplayInfo(mDisplayInfo);
        mDisplay.getDisplayInfo(mDisplayInfo);
        mDisplay.getMetrics(mDisplayMetrics);
        mDisplay.getMetrics(mDisplayMetrics);

        // Check if display metrics changed and update base values if needed.
        updateBaseDisplayMetricsIfNeeded();

        for (int i = mTaskStackContainers.size() - 1; i >= 0; --i) {
        for (int i = mTaskStackContainers.size() - 1; i >= 0; --i) {
            mTaskStackContainers.get(i).updateDisplayInfo(null);
            mTaskStackContainers.get(i).updateDisplayInfo(null);
        }
        }
@@ -934,10 +938,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
            }
            }
        }
        }


        mBaseDisplayWidth = mInitialDisplayWidth = mDisplayInfo.logicalWidth;
        updateBaseDisplayMetrics(mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight,
        mBaseDisplayHeight = mInitialDisplayHeight = mDisplayInfo.logicalHeight;
                mDisplayInfo.logicalDensityDpi);
        mBaseDisplayDensity = mInitialDisplayDensity = mDisplayInfo.logicalDensityDpi;
        mBaseDisplayRect.set(0, 0, mBaseDisplayWidth, mBaseDisplayHeight);
    }
    }


    void getLogicalDisplayRect(Rect out) {
    void getLogicalDisplayRect(Rect out) {
@@ -967,6 +969,30 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
        }
        }
    }
    }


    /** If display metrics changed and it's not just a rotation - update base values. */
    private void updateBaseDisplayMetricsIfNeeded() {
        final int orientation = mDisplayInfo.rotation;
        final boolean rotated = (orientation == ROTATION_90 || orientation == ROTATION_270);
        final int newWidth = rotated ? mDisplayInfo.logicalHeight : mDisplayInfo.logicalWidth;
        final int newHeight = rotated ? mDisplayInfo.logicalWidth : mDisplayInfo.logicalHeight;

        boolean displayMetricsChanged
                = mBaseDisplayWidth != newWidth || mBaseDisplayHeight != newHeight;
        displayMetricsChanged |= mBaseDisplayDensity != mDisplayInfo.logicalDensityDpi;

        if (displayMetricsChanged) {
            updateBaseDisplayMetrics(newWidth, newHeight, mDisplayInfo.logicalDensityDpi);
            mService.reconfigureDisplayLocked(this);
        }
    }

    void updateBaseDisplayMetrics(int baseWidth, int baseHeight, int baseDensity) {
        mBaseDisplayWidth = mInitialDisplayWidth = baseWidth;
        mBaseDisplayHeight = mInitialDisplayHeight = baseHeight;
        mBaseDisplayDensity = mInitialDisplayDensity = baseDensity;
        mBaseDisplayRect.set(0, 0, mBaseDisplayWidth, mBaseDisplayHeight);
    }

    void getContentRect(Rect out) {
    void getContentRect(Rect out) {
        out.set(mContentRect);
        out.set(mContentRect);
    }
    }
+3 −4
Original line number Original line Diff line number Diff line
@@ -5932,8 +5932,8 @@ public class WindowManagerService extends IWindowManager.Stub
                    if (displayContent.mBaseDisplayWidth != width
                    if (displayContent.mBaseDisplayWidth != width
                            || displayContent.mBaseDisplayHeight != height) {
                            || displayContent.mBaseDisplayHeight != height) {
                        Slog.i(TAG_WM, "FORCED DISPLAY SIZE: " + width + "x" + height);
                        Slog.i(TAG_WM, "FORCED DISPLAY SIZE: " + width + "x" + height);
                        displayContent.mBaseDisplayWidth = width;
                        displayContent.updateBaseDisplayMetrics(width, height,
                        displayContent.mBaseDisplayHeight = height;
                                displayContent.mBaseDisplayDensity);
                    }
                    }
                } catch (NumberFormatException ex) {
                } catch (NumberFormatException ex) {
                }
                }
@@ -5958,8 +5958,7 @@ public class WindowManagerService extends IWindowManager.Stub
    // displayContent must not be null
    // displayContent must not be null
    private void setForcedDisplaySizeLocked(DisplayContent displayContent, int width, int height) {
    private void setForcedDisplaySizeLocked(DisplayContent displayContent, int width, int height) {
        Slog.i(TAG_WM, "Using new display size: " + width + "x" + height);
        Slog.i(TAG_WM, "Using new display size: " + width + "x" + height);
        displayContent.mBaseDisplayWidth = width;
        displayContent.updateBaseDisplayMetrics(width, height, displayContent.mBaseDisplayDensity);
        displayContent.mBaseDisplayHeight = height;
        reconfigureDisplayLocked(displayContent);
        reconfigureDisplayLocked(displayContent);
    }
    }