diff options
| author | Romain Guy <romainguy@google.com> | 2013-05-29 15:54:25 -0700 |
|---|---|---|
| committer | Romain Guy <romainguy@google.com> | 2013-05-29 16:01:36 -0700 |
| commit | 80b12fcaaec458377d966803c3a61504f0897ea1 (patch) | |
| tree | eb80fcbfffdaca5506afddc0f40578136e099dda /core/java | |
| parent | 3bf4fa4b161342ac94e97844c7af0982f4a2758d (diff) | |
| download | frameworks_base-80b12fcaaec458377d966803c3a61504f0897ea1.zip frameworks_base-80b12fcaaec458377d966803c3a61504f0897ea1.tar.gz frameworks_base-80b12fcaaec458377d966803c3a61504f0897ea1.tar.bz2 | |
Disable the AssetAtlas when running under valgrind
Bug #9191438
When running under valgrind, the ppid will be different from the ppid
of the system server (which always gets forked from zygote.)
Change-Id: I42cbf99fd0084aeab76c30de9beb7c49ed1fc7d8
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/os/Process.java | 6 | ||||
| -rw-r--r-- | core/java/android/view/HardwareRenderer.java | 12 | ||||
| -rw-r--r-- | core/java/android/view/IAssetAtlas.aidl | 7 |
3 files changed, 20 insertions, 5 deletions
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index 476b4ea..93b1255 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -650,6 +650,12 @@ public class Process { public static final native int myPid(); /** + * Returns the identifier of this process' parent. + * @hide + */ + public static native int myPpid(); + + /** * Returns the identifier of the calling thread, which be used with * {@link #setThreadPriority(int, int)}. */ diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 8dada90..c07b187 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -1931,11 +1931,13 @@ public abstract class HardwareRenderer { IAssetAtlas atlas = IAssetAtlas.Stub.asInterface(binder); try { - GraphicBuffer buffer = atlas.getBuffer(); - if (buffer != null) { - int[] map = atlas.getMap(); - if (map != null) { - GLES20Canvas.initAtlas(buffer, map); + if (atlas.isCompatible(android.os.Process.myPpid())) { + GraphicBuffer buffer = atlas.getBuffer(); + if (buffer != null) { + int[] map = atlas.getMap(); + if (map != null) { + GLES20Canvas.initAtlas(buffer, map); + } } } } catch (RemoteException e) { diff --git a/core/java/android/view/IAssetAtlas.aidl b/core/java/android/view/IAssetAtlas.aidl index 2595179..5f1e238 100644 --- a/core/java/android/view/IAssetAtlas.aidl +++ b/core/java/android/view/IAssetAtlas.aidl @@ -28,6 +28,13 @@ import android.view.GraphicBuffer; */ interface IAssetAtlas { /** + * Indicates whether the atlas is compatible with the specified + * parent process id. If the atlas' ppid does not match, this + * method will return false. + */ + boolean isCompatible(int ppid); + + /** * Returns the atlas buffer (texture) or null if the atlas is * not available yet. */ |
