Fix crash when there's no input before processCaptureRequest.
Initialize texture surface with black texture so there's always
buffer available even if the client didn't write anything to
the surface yet.
Bug: 301023410
Test: atest virtual_camera_tests
Change-Id: I626e776d6686d0ed0f62fe6d8ef5920857e45932
diff --git a/services/camera/virtualcamera/VirtualCameraRenderThread.cc b/services/camera/virtualcamera/VirtualCameraRenderThread.cc
index 582e47f..5756797 100644
--- a/services/camera/virtualcamera/VirtualCameraRenderThread.cc
+++ b/services/camera/virtualcamera/VirtualCameraRenderThread.cc
@@ -357,6 +357,11 @@
sp<Fence> fence) {
ALOGV("%s", __func__);
sp<GraphicBuffer> gBuffer = mEglSurfaceTexture->getCurrentBuffer();
+ if (gBuffer == nullptr) {
+ // Most probably nothing was yet written to input surface if we reached this.
+ ALOGE("%s: Cannot fetch most recent buffer from SurfaceTexture", __func__);
+ return cameraStatus(Status::INTERNAL_ERROR);
+ }
std::shared_ptr<AHardwareBuffer> hwBuffer =
mSessionContext.fetchHardwareBuffer(streamId, bufferId);