From ef9db7d81b0ce1093944b9e3d5efb6ab756f5cbc Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Tue, 9 Jun 2015 14:15:15 -0700 Subject: [PATCH] Add more specific consumer names for common buffer queue endpoints. Change-Id: I744bdcba6e60e5efd8865f725b09a9f791d76160 --- core/jni/android/graphics/SurfaceTexture.cpp | 11 +++++++++++ media/jni/android_media_ImageReader.cpp | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp index 08d61d593b0a9..b9e48a0c0cc8e 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 49614bdc76fd9..635fa11c6b443 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 consumer; sp cpuConsumer; sp 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; }