Fallback to default display if initial one is detached
Test: presubmit Fixes: 285630617 Change-Id: I196bab294c182230edda54241f7b725f44f05570
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user