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;
     }