summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author guochuang <guochuang@xiaomi.com> 2024-09-24 11:32:28 +0800
committer guochuang <guochuang@xiaomi.corp-partner.google.com> 2024-09-29 14:50:10 +0800
commitbb99f50224b529b34402bc4fa4d58f4c4f7799ac (patch)
tree23f60ba5da66a9bb553d96b07fca2c58826c9be6
parentd52e734a2ec8935e4f246a7521e3b4f3f8e89701 (diff)
Improve the use of pointer
BUG: 369257140 Test: atest android.hardware.camera2.cts.ImageWriterTest Change-Id: I617ddaeb60d633e694a21b81e406e4c23094a02f Signed-off-by: guochuang <guochuang@xiaomi.corp-partner.google.com>
-rw-r--r--media/jni/android_media_ImageWriter.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/media/jni/android_media_ImageWriter.cpp b/media/jni/android_media_ImageWriter.cpp
index 2c498e5bb4ef..1216ae25a0ef 100644
--- a/media/jni/android_media_ImageWriter.cpp
+++ b/media/jni/android_media_ImageWriter.cpp
@@ -1023,16 +1023,19 @@ static void Image_getLockedImage(JNIEnv* env, jobject thiz, LockedImage *image)
return;
}
+ // Maintain a StrongPointer so that the GraphicBuffer isn't destroyed when the
+ // StrongPointer in lockImageFromBuffer goes out of scope.
+ sp<GraphicBuffer> bufferSp(buffer);
// ImageWriter doesn't use crop by itself, app sets it, use the no crop version.
- const Rect noCrop(buffer->width, buffer->height);
+ const Rect noCrop(bufferSp->width, bufferSp->height);
status_t res = lockImageFromBuffer(
- buffer, GRALLOC_USAGE_SW_WRITE_OFTEN, noCrop, fenceFd, image);
+ bufferSp, GRALLOC_USAGE_SW_WRITE_OFTEN, noCrop, fenceFd, image);
// Clear the fenceFd as it is already consumed by lock call.
Image_setFenceFd(env, thiz, /*fenceFd*/-1);
if (res != OK) {
jniThrowExceptionFmt(env, "java/lang/RuntimeException",
"lock buffer failed for format 0x%x",
- buffer->getPixelFormat());
+ bufferSp->getPixelFormat());
return;
}