* commit 'b1e5a9aef72788d3b0408782f5d7e6adcdcdbefa': Check for setting to already set
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user