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

Commit 6d8371e7 authored by John Reck's avatar John Reck
Browse files

Check for setting to already set

Bug: 20105644
Change-Id: Ia79d2ae5c725c139d2b7c423a899be625cb8f14f
parent 6e1c17a3
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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();
        }
+7 −0
Original line number Diff line number Diff line
@@ -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)
+9 −0
Original line number Diff line number Diff line
@@ -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