Fix few issues in virtual camera service:

  * Fix incorrect flush implementation (do not try to fetch element from
    empty queue).
  * Gracefully handle flush call even if render thread is not running.
  * Make sure thread is terminated when close is called on session.
  * Remove metadata from CaptureResult send when processing flush
    request.
  * Set streamId to -1 in ErrorRequest NotifyMsg (required, otherwise
    it NotifyMsg fails validation in framework).

Bug: 301023410
Test: atest virtual_camera_tests
Test: OpenCamera
Change-Id: I899a9eaed0b69eed93945391c2d0a25120136267
diff --git a/services/camera/virtualcamera/tests/VirtualCameraRenderThreadTest.cc b/services/camera/virtualcamera/tests/VirtualCameraRenderThreadTest.cc
index 2e40d16..5f899b8 100644
--- a/services/camera/virtualcamera/tests/VirtualCameraRenderThreadTest.cc
+++ b/services/camera/virtualcamera/tests/VirtualCameraRenderThreadTest.cc
@@ -46,6 +46,7 @@
 using ::aidl::android::hardware::camera::device::BufferRequestStatus;
 using ::aidl::android::hardware::camera::device::BufferStatus;
 using ::aidl::android::hardware::camera::device::CaptureResult;
+using ::aidl::android::hardware::camera::device::ErrorCode;
 using ::aidl::android::hardware::camera::device::ErrorMsg;
 using ::aidl::android::hardware::camera::device::NotifyMsg;
 using ::aidl::android::hardware::camera::device::StreamBuffer;
@@ -73,7 +74,11 @@
 Matcher<NotifyMsg> IsRequestErrorNotifyMsg(const int frameId) {
   return AllOf(Property(&NotifyMsg::getTag, Eq(NotifyMsg::error)),
                Property(&NotifyMsg::get<NotifyMsg::error>,
-                        Field(&ErrorMsg::frameNumber, Eq(frameId))));
+                        Field(&ErrorMsg::frameNumber, Eq(frameId))),
+               Property(&NotifyMsg::get<NotifyMsg::error>,
+                        Field(&ErrorMsg::errorStreamId, Eq(-1))),
+               Property(&NotifyMsg::get<NotifyMsg::error>,
+                        Field(&ErrorMsg::errorCode, Eq(ErrorCode::ERROR_REQUEST))));
 }
 
 class MockCameraDeviceCallback : public BnCameraDeviceCallback {
@@ -143,4 +148,4 @@
 }  // namespace
 }  // namespace virtualcamera
 }  // namespace companion
-}  // namespace android
\ No newline at end of file
+}  // namespace android