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

Commit f58ec22c 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: I1a33b6fbdfa1f30031c6122fe0b20313e5f8987b
parents f7897465 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) {