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

Commit 6e8db88b authored by Daniel Sandler's avatar Daniel Sandler
Browse files

Fix race condition in status bar init code.

There was a hole between the initial call to get the display
metrics and the attachment of the status bar to its window,
meaning there was an opportunity for the orientation to
change without the status bar's orientation change handler
being called. In this scenario the notification panel would
be sized for the wrong orientation until the configuration
changed again in some way.

Bug: 5509445
Change-Id: Ib1bff79c317945a61ccfccddc073cce015f34caa
parent 6e03b220
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -252,7 +252,7 @@ public class PhoneStatusBar extends StatusBar {
        mWindowManager = IWindowManager.Stub.asInterface(
                ServiceManager.getService(Context.WINDOW_SERVICE));

        super.start();
        super.start(); // calls makeStatusBarView()

        addNavigationBar();

@@ -270,12 +270,7 @@ public class PhoneStatusBar extends StatusBar {

        Resources res = context.getResources();

        mDisplay.getMetrics(mDisplayMetrics);
        if (DEBUG) {
            Slog.d(TAG, "makeStatusBarView: mDisplayMetrics=" + mDisplayMetrics);
            mDisplayMetrics = res.getDisplayMetrics();
            Slog.d(TAG, "makeStatusBarView: mDisplayMetrics2=" + mDisplayMetrics);
        }
        updateDisplaySize(); // populates mDisplayMetrics
        loadDimens();

        mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size);
@@ -1793,6 +1788,11 @@ public class PhoneStatusBar extends StatusBar {
    }

    void onBarViewAttached() {
        // The status bar has just been attached to the view hierarchy; it's possible that the
        // screen has rotated in-between when we set up the window and now, so let's double-check
        // the display metrics just in case.
        updateDisplaySize();

        WindowManager.LayoutParams lp;
        int pixelFormat;
        Drawable bg;