Merge "Fallback to default display if initial one is detached" into udc-qpr-dev

This commit is contained in:
Treehugger Robot
2023-07-04 10:24:33 +00:00
committed by Android (Google) Code Review

View File

@@ -34,6 +34,7 @@ import android.content.res.Configuration;
import android.hardware.display.DisplayManager;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.Display;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams.WindowType;
@@ -52,6 +53,8 @@ import android.view.WindowManagerImpl;
@UiContext
public abstract class WindowProviderService extends Service implements WindowProvider {
private static final String TAG = WindowProviderService.class.getSimpleName();
private final Bundle mOptions;
private final WindowTokenClient mWindowToken = new WindowTokenClient();
private final WindowContextController mController = new WindowContextController(mWindowToken);
@@ -194,8 +197,16 @@ public abstract class WindowProviderService extends Service implements WindowPro
public final Context createServiceBaseContext(ActivityThread mainThread,
LoadedApk packageInfo) {
final Context context = super.createServiceBaseContext(mainThread, packageInfo);
final Display display = context.getSystemService(DisplayManager.class)
.getDisplay(getInitialDisplayId());
final DisplayManager displayManager = context.getSystemService(DisplayManager.class);
final int initialDisplayId = getInitialDisplayId();
Display display = displayManager.getDisplay(initialDisplayId);
// Fallback to use the default display if the initial display to start WindowProviderService
// is detached.
if (display == null) {
Log.e(TAG, "Display with id " + initialDisplayId + " not found, falling back to "
+ "DEFAULT_DISPLAY");
display = displayManager.getDisplay(DEFAULT_DISPLAY);
}
return context.createTokenContext(mWindowToken, display);
}