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

Commit bb352ef0 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:...

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

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

Change-Id: I0264709ff4310de7136e253d1c5279ef39fb88e1
parents dde7797e 0891adf2
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) {