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

Commit 298dc5da authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Use isolated display context to get display info" into rvc-dev am: 7f5a670c

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/11969858

Change-Id: I8c7173acceb3e3470b8200ad77753f5949dd318e
parents a69fd5a7 7f5a670c
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -49,20 +49,25 @@ public class DefaultDisplay implements DisplayListener {

    public static final int CHANGE_ALL = CHANGE_SIZE | CHANGE_ROTATION | CHANGE_FRAME_DELAY;

    private final Context mContext;
    private final Context mDisplayContext;
    private final int mId;
    private final ArrayList<DisplayInfoChangeListener> mListeners = new ArrayList<>();
    private final Handler mChangeHandler;
    private Info mInfo;

    private DefaultDisplay(Context context) {
        mContext = context;
        mInfo = new Info(context);
        DisplayManager dm = context.getSystemService(DisplayManager.class);
        // Use application context to create display context so that it can have its own Resources.
        mDisplayContext = context.getApplicationContext().createDisplayContext(
                dm.getDisplay(DEFAULT_DISPLAY));
        // Note that the Display object must be obtained from DisplayManager which is associated to
        // the display context, so the Display is isolated from Activity and Application to provide
        // the actual state of device that excludes the additional adjustment and override.
        mInfo = new Info(mDisplayContext);
        mId = mInfo.id;
        mChangeHandler = new Handler(this::onChange);

        context.getSystemService(DisplayManager.class)
                .registerDisplayListener(this, UI_HELPER_EXECUTOR.getHandler());
        dm.registerDisplayListener(this, UI_HELPER_EXECUTOR.getHandler());
    }

    @Override
@@ -78,7 +83,7 @@ public class DefaultDisplay implements DisplayListener {
        }

        Info oldInfo = mInfo;
        Info info = new Info(mContext);
        Info info = new Info(mDisplayContext);

        int change = 0;
        if (info.hasDifferentSize(oldInfo)) {
@@ -162,8 +167,7 @@ public class DefaultDisplay implements DisplayListener {
            display.getRealSize(realSize);
            display.getCurrentSizeRange(smallestSize, largestSize);

            Context defaultDisplayContext = context.createDisplayContext(display);
            metrics = defaultDisplayContext.getResources().getDisplayMetrics();
            metrics = context.getResources().getDisplayMetrics();
        }

        private boolean hasDifferentSize(Info info) {