diff options
author | Dan Stoza <stoza@google.com> | 2014-06-26 13:36:19 -0700 |
---|---|---|
committer | Dan Stoza <stoza@google.com> | 2014-06-26 13:36:19 -0700 |
commit | 493f2e11909e2d5839ca81ddc66d48d538192478 (patch) | |
tree | 834d63f8d58357d12d4db60d5af21547cda71216 /core/jni/android/graphics | |
parent | c0f09fba2314a4b9c46c872336899ac76e260fc2 (diff) | |
download | frameworks_base-493f2e11909e2d5839ca81ddc66d48d538192478.zip frameworks_base-493f2e11909e2d5839ca81ddc66d48d538192478.tar.gz frameworks_base-493f2e11909e2d5839ca81ddc66d48d538192478.tar.bz2 |
SurfaceTexture: Allow creation in detached mode
Adds a constructor that doesn't require a GLES texture name and sets
up the SurfaceTexture in detached mode.
Bug: 15616428
Change-Id: I375495f481bfbe43b3830ab7d124cef8f1be0ac6
Diffstat (limited to 'core/jni/android/graphics')
-rw-r--r-- | core/jni/android/graphics/SurfaceTexture.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp index 621534e..eea16f1 100644 --- a/core/jni/android/graphics/SurfaceTexture.cpp +++ b/core/jni/android/graphics/SurfaceTexture.cpp @@ -227,7 +227,7 @@ static void SurfaceTexture_classInit(JNIEnv* env, jclass clazz) } } -static void SurfaceTexture_init(JNIEnv* env, jobject thiz, +static void SurfaceTexture_init(JNIEnv* env, jobject thiz, jboolean isDetached, jint texName, jboolean singleBufferMode, jobject weakThiz) { sp<IGraphicBufferProducer> producer; @@ -239,8 +239,15 @@ static void SurfaceTexture_init(JNIEnv* env, jobject thiz, consumer->setDefaultMaxBufferCount(1); } - sp<GLConsumer> surfaceTexture(new GLConsumer(consumer, texName, - GL_TEXTURE_EXTERNAL_OES, true, true)); + sp<GLConsumer> surfaceTexture; + if (isDetached) { + surfaceTexture = new GLConsumer(consumer, GL_TEXTURE_EXTERNAL_OES, + true, true); + } else { + surfaceTexture = new GLConsumer(consumer, texName, + GL_TEXTURE_EXTERNAL_OES, true, true); + } + if (surfaceTexture == 0) { jniThrowException(env, OutOfResourcesException, "Unable to create native SurfaceTexture"); @@ -338,7 +345,7 @@ static void SurfaceTexture_release(JNIEnv* env, jobject thiz) static JNINativeMethod gSurfaceTextureMethods[] = { {"nativeClassInit", "()V", (void*)SurfaceTexture_classInit }, - {"nativeInit", "(IZLjava/lang/ref/WeakReference;)V", (void*)SurfaceTexture_init }, + {"nativeInit", "(ZIZLjava/lang/ref/WeakReference;)V", (void*)SurfaceTexture_init }, {"nativeFinalize", "()V", (void*)SurfaceTexture_finalize }, {"nativeSetDefaultBufferSize", "(II)V", (void*)SurfaceTexture_setDefaultBufferSize }, {"nativeUpdateTexImage", "()V", (void*)SurfaceTexture_updateTexImage }, |