diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 4044c579a57fd..f388fec2cd783 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -688,8 +688,11 @@ static void nativeSetBuffer(JNIEnv* env, jclass clazz, jlong transactionObj, jlo jobject bufferObject, jlong fencePtr, jobject releaseCallback) { auto transaction = reinterpret_cast(transactionObj); SurfaceControl* const ctrl = reinterpret_cast(nativeObject); - sp graphicBuffer(GraphicBuffer::fromAHardwareBuffer( - android_hardware_HardwareBuffer_getNativeHardwareBuffer(env, bufferObject))); + sp graphicBuffer; + if (bufferObject != nullptr) { + graphicBuffer = GraphicBuffer::fromAHardwareBuffer( + android_hardware_HardwareBuffer_getNativeHardwareBuffer(env, bufferObject)); + } std::optional> optFence = std::nullopt; if (fencePtr != 0) { optFence = sp{reinterpret_cast(fencePtr)};