From b85c933d850286874005f97a9764c9b22e49a597 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Thu, 8 Mar 2012 17:06:56 -0800 Subject: 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 --- core/java/android/view/Surface.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'core/java/android/view/Surface.java') diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java index edaa262..eb80290d 100644 --- a/core/java/android/view/Surface.java +++ b/core/java/android/view/Surface.java @@ -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(); } -- cgit v1.1