diff options
-rw-r--r-- | core/jni/android/graphics/SurfaceTexture.cpp | 11 | ||||
-rw-r--r-- | media/jni/android_media_ImageReader.cpp | 11 |
2 files changed, 22 insertions, 0 deletions
diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp index 08d61d5..b9e48a0 100644 --- a/core/jni/android/graphics/SurfaceTexture.cpp +++ b/core/jni/android/graphics/SurfaceTexture.cpp @@ -49,6 +49,12 @@ struct fields_t { }; static fields_t fields; +// Get an ID that's unique within this process. +static int32_t createProcessUniqueId() { + static volatile int32_t globalCounter = 0; + return android_atomic_inc(&globalCounter); +} + // ---------------------------------------------------------------------------- static void SurfaceTexture_setSurfaceTexture(JNIEnv* env, jobject thiz, @@ -253,6 +259,11 @@ static void SurfaceTexture_init(JNIEnv* env, jobject thiz, jboolean isDetached, "Unable to create native SurfaceTexture"); return; } + surfaceTexture->setName(String8::format("SurfaceTexture-%d-%d-%d", + (isDetached ? 0 : texName), + getpid(), + createProcessUniqueId())); + SurfaceTexture_setSurfaceTexture(env, thiz, surfaceTexture); SurfaceTexture_setProducer(env, thiz, producer); diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp index 49614bd..635fa11 100644 --- a/media/jni/android_media_ImageReader.cpp +++ b/media/jni/android_media_ImageReader.cpp @@ -72,6 +72,12 @@ static struct { jmethodID ctor; } gSurfacePlaneClassInfo; +// Get an ID that's unique within this process. +static int32_t createProcessUniqueId() { + static volatile int32_t globalCounter = 0; + return android_atomic_inc(&globalCounter); +} + // ---------------------------------------------------------------------------- class JNIImageReaderContext : public ConsumerBase::FrameAvailableListener @@ -808,6 +814,9 @@ static void ImageReader_init(JNIEnv* env, jobject thiz, jobject weakThiz, sp<ConsumerBase> consumer; sp<CpuConsumer> cpuConsumer; sp<BufferItemConsumer> opaqueConsumer; + String8 consumerName = String8::format("ImageReader-%dx%df%xm%d-%d-%d", + width, height, format, maxImages, getpid(), + createProcessUniqueId()); if (isFormatOpaque(nativeFormat)) { // Use the SW_READ_NEVER usage to tell producer that this format is not for preview or video // encoding. The only possibility will be ZSL output. @@ -819,6 +828,7 @@ static void ImageReader_init(JNIEnv* env, jobject thiz, jobject weakThiz, return; } ctx->setOpaqueConsumer(opaqueConsumer); + opaqueConsumer->setName(consumerName); consumer = opaqueConsumer; } else { cpuConsumer = new CpuConsumer(gbConsumer, maxImages, /*controlledByApp*/true); @@ -828,6 +838,7 @@ static void ImageReader_init(JNIEnv* env, jobject thiz, jobject weakThiz, return; } ctx->setCpuConsumer(cpuConsumer); + cpuConsumer->setName(consumerName); consumer = cpuConsumer; } |