diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-05-22 00:45:35 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-05-22 00:45:35 +0000 |
commit | d886a60ddc4781d144497a2a4290300b19248e15 (patch) | |
tree | b898de6fa112c9b2340d46c4836f56afcd72a81b /devices | |
parent | 6a266d0f9b2dec275299fbad119650a4019935f2 (diff) | |
parent | 8fad6bfe388a753e82c7cc3fcb7ecc5dd6e7f05e (diff) | |
download | camera-d886a60ddc4781d144497a2a4290300b19248e15.tar.gz |
Merge "EmulatedCamera: Do not send ERROR_BUFFER in case of ERROR_REQUEST" into rvc-dev
Diffstat (limited to 'devices')
-rw-r--r-- | devices/EmulatedCamera/hwl/Base.h | 4 | ||||
-rw-r--r-- | devices/EmulatedCamera/hwl/EmulatedRequestProcessor.cpp | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/devices/EmulatedCamera/hwl/Base.h b/devices/EmulatedCamera/hwl/Base.h index f0701de..543f73f 100644 --- a/devices/EmulatedCamera/hwl/Base.h +++ b/devices/EmulatedCamera/hwl/Base.h @@ -57,6 +57,7 @@ struct SensorBuffer { HwlPipelineCallback callback; int acquire_fence_fd; bool is_input; + bool is_failed_request; union Plane { SinglePlane img; @@ -73,6 +74,7 @@ struct SensorBuffer { dataSpace(HAL_DATASPACE_UNKNOWN), acquire_fence_fd(-1), is_input(false), + is_failed_request(false), plane{} { } @@ -104,7 +106,7 @@ struct std::default_delete<android::SensorBuffer> { } if ((buffer->stream_buffer.status != BufferStatus::kOk) && - (buffer->callback.notify != nullptr)) { + (buffer->callback.notify != nullptr) && (!buffer->is_failed_request)) { NotifyMessage msg = { .type = MessageType::kError, .message.error = {.frame_number = buffer->frame_number, diff --git a/devices/EmulatedCamera/hwl/EmulatedRequestProcessor.cpp b/devices/EmulatedCamera/hwl/EmulatedRequestProcessor.cpp index 09bf94d..3fe9009 100644 --- a/devices/EmulatedCamera/hwl/EmulatedRequestProcessor.cpp +++ b/devices/EmulatedCamera/hwl/EmulatedRequestProcessor.cpp @@ -120,6 +120,12 @@ std::unique_ptr<Buffers> EmulatedRequestProcessor::CreateSensorBuffers( void EmulatedRequestProcessor::NotifyFailedRequest(const PendingRequest& request) { if (request.output_buffers->at(0)->callback.notify != nullptr) { + // Mark all output buffers for this request in order not to send + // ERROR_BUFFER for them. + for (auto& output_buffer : *(request.output_buffers)) { + output_buffer->is_failed_request = true; + } + auto output_buffer = std::move(request.output_buffers->at(0)); NotifyMessage msg = { .type = MessageType::kError, |