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

Commit b85c933d authored by Kevin Hester's avatar Kevin Hester Committed by Mike Lockwood
Browse files

Do not allow Surface creation on machines without SurfaceFlinger

We will fail later anyways, but this change makes it much easier to track
down places where we are inadvertently doing operations that depend on the
flinger.

Change-Id: If38a1a10061a594dba5c220a86b32eec7b5ec901
parent dab20723
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.res.CompatibilityInfo.Translator;
import android.graphics.*;
import android.os.Parcelable;
import android.os.Parcel;
import android.os.SystemProperties;
import android.util.Log;

/**
@@ -35,6 +36,15 @@ public class Surface implements Parcelable {
    public static final int ROTATION_180     = 2;
    public static final int ROTATION_270     = 3;

    private static final boolean headless = "1".equals(
        SystemProperties.get("ro.config.headless", "0"));

    private static void checkHeadless() {
        if(headless) {
            throw new UnsupportedOperationException("Device is headless");
        }
    }

    /**
     * Create Surface from a {@link SurfaceTexture}.
     *
@@ -46,6 +56,8 @@ public class Surface implements Parcelable {
     * Surface.
     */
    public Surface(SurfaceTexture surfaceTexture) {
        checkHeadless();

        if (DEBUG_RELEASE) {
            mCreationStack = new Exception();
        }
@@ -244,6 +256,8 @@ public class Surface implements Parcelable {
    public Surface(SurfaceSession s,
            int pid, int display, int w, int h, int format, int flags)
        throws OutOfResourcesException {
        checkHeadless();

        if (DEBUG_RELEASE) {
            mCreationStack = new Exception();
        }
@@ -255,6 +269,8 @@ public class Surface implements Parcelable {
    public Surface(SurfaceSession s,
            int pid, String name, int display, int w, int h, int format, int flags)
        throws OutOfResourcesException {
        checkHeadless();

        if (DEBUG_RELEASE) {
            mCreationStack = new Exception();
        }
@@ -269,6 +285,8 @@ public class Surface implements Parcelable {
     * @hide
     */
    public Surface() {
        checkHeadless();

        if (DEBUG_RELEASE) {
            mCreationStack = new Exception();
        }