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

Commit 4770073b authored by Charles Chen's avatar Charles Chen Committed by Android Build Coastguard Worker
Browse files

Fallback to default display if initial one is detached

Test: atest WindowContextTests
Fixes: 285630617
(cherry picked from commit 7d860098)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:01bd9ec4ceb5da65235d0840c723d9b422168850)
Merged-In: I196bab294c182230edda54241f7b725f44f05570
Change-Id: I196bab294c182230edda54241f7b725f44f05570
parent b091aa67
Loading
Loading
Loading
Loading
+13 −2
Original line number Original line Diff line number Diff line
@@ -34,6 +34,7 @@ import android.content.res.Configuration;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManager;
import android.os.Bundle;
import android.os.Bundle;
import android.os.IBinder;
import android.os.IBinder;
import android.util.Log;
import android.view.Display;
import android.view.Display;
import android.view.WindowManager;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams.WindowType;
import android.view.WindowManager.LayoutParams.WindowType;
@@ -52,6 +53,8 @@ import android.view.WindowManagerImpl;
@UiContext
@UiContext
public abstract class WindowProviderService extends Service implements WindowProvider {
public abstract class WindowProviderService extends Service implements WindowProvider {


    private static final String TAG = WindowProviderService.class.getSimpleName();

    private final Bundle mOptions;
    private final Bundle mOptions;
    private final WindowTokenClient mWindowToken = new WindowTokenClient();
    private final WindowTokenClient mWindowToken = new WindowTokenClient();
    private final WindowContextController mController = new WindowContextController(mWindowToken);
    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,
    public final Context createServiceBaseContext(ActivityThread mainThread,
            LoadedApk packageInfo) {
            LoadedApk packageInfo) {
        final Context context = super.createServiceBaseContext(mainThread, packageInfo);
        final Context context = super.createServiceBaseContext(mainThread, packageInfo);
        final Display display = context.getSystemService(DisplayManager.class)
        final DisplayManager displayManager = context.getSystemService(DisplayManager.class);
                .getDisplay(getInitialDisplayId());
        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);
        return context.createTokenContext(mWindowToken, display);
    }
    }