summaryrefslogtreecommitdiffstats
path: root/core/jni/android/graphics
diff options
context:
space:
mode:
authorDan Stoza <stoza@google.com>2014-06-26 13:36:19 -0700
committerDan Stoza <stoza@google.com>2014-06-26 13:36:19 -0700
commit493f2e11909e2d5839ca81ddc66d48d538192478 (patch)
tree834d63f8d58357d12d4db60d5af21547cda71216 /core/jni/android/graphics
parentc0f09fba2314a4b9c46c872336899ac76e260fc2 (diff)
downloadframeworks_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.cpp15
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 },