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>
diff --git a/media/jni/android_media_ImageWriter.cpp b/media/jni/android_media_ImageWriter.cpp
index 2c498e5..1216ae2 100644
--- a/media/jni/android_media_ImageWriter.cpp
+++ b/media/jni/android_media_ImageWriter.cpp
@@ -1023,16 +1023,19 @@
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;
}