mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-28 15:56:49 +00:00
Merge "Use isolated display context to get display info" into ub-launcher3-rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a0b0d66e20
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user