am 0e4a2b5f: Merge "Check for setting to already set" into mnc-dev

* commit '0e4a2b5ff0ee061c46bfe3b1f15a7067308e0da8':
  Check for setting to already set
This commit is contained in:
John Reck
2015-05-14 23:45:44 +00:00
committed by Android Git Automerger
3 changed files with 24 additions and 0 deletions

View File

@@ -717,6 +717,14 @@ public class TextureView extends View {
if (surfaceTexture == null) {
throw new NullPointerException("surfaceTexture must not be null");
}
if (surfaceTexture == mSurface) {
throw new IllegalArgumentException("Trying to setSurfaceTexture to " +
"the same SurfaceTexture that's already set.");
}
if (surfaceTexture.isReleased()) {
throw new IllegalArgumentException("Cannot setSurfaceTexture to a " +
"released SurfaceTexture");
}
if (mSurface != null) {
mSurface.release();
}

View File

@@ -341,6 +341,12 @@ static void SurfaceTexture_release(JNIEnv* env, jobject thiz)
surfaceTexture->abandon();
}
static jboolean SurfaceTexture_isReleased(JNIEnv* env, jobject thiz)
{
sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
return surfaceTexture->isAbandoned();
}
// ----------------------------------------------------------------------------
static JNINativeMethod gSurfaceTextureMethods[] = {
@@ -355,6 +361,7 @@ static JNINativeMethod gSurfaceTextureMethods[] = {
{"nativeGetTransformMatrix", "([F)V", (void*)SurfaceTexture_getTransformMatrix },
{"nativeGetTimestamp", "()J", (void*)SurfaceTexture_getTimestamp },
{"nativeRelease", "()V", (void*)SurfaceTexture_release },
{"nativeIsReleased", "()Z", (void*)SurfaceTexture_isReleased },
};
int register_android_graphics_SurfaceTexture(JNIEnv* env)

View File

@@ -347,6 +347,14 @@ public class SurfaceTexture {
nativeRelease();
}
/**
* Returns true if the SurfaceTexture was released
* @hide
*/
public boolean isReleased() {
return nativeIsReleased();
}
@Override
protected void finalize() throws Throwable {
try {
@@ -383,6 +391,7 @@ public class SurfaceTexture {
private native int nativeAttachToGLContext(int texName);
private native int nativeGetQueuedCount();
private native void nativeRelease();
private native boolean nativeIsReleased();
/*
* We use a class initializer to allow the native code to cache some