diff --git a/device/libcamera/buffer.cc b/device/libcamera/buffer.cc index 44678c6..3a53789 100644 --- a/device/libcamera/buffer.cc +++ b/device/libcamera/buffer.cc @@ -77,10 +77,12 @@ int libcamera_buffer_enqueue(buffer_t *buf, const char *who) auto const &camera = buf->buf_list->dev->libcamera->camera; request->reuse(libcamera::Request::ReuseBuffers); + request->controls() = std::move(buf->buf_list->dev->libcamera->controls); if (camera->queueRequest(buf->libcamera->request.get()) < 0) { LOG_ERROR(buf, "Can't queue buffer."); } + buf->buf_list->dev->libcamera->controls.clear(); return 0; error: diff --git a/device/libcamera/buffer_list.cc b/device/libcamera/buffer_list.cc index d4c8edd..14b6ded 100644 --- a/device/libcamera/buffer_list.cc +++ b/device/libcamera/buffer_list.cc @@ -127,6 +127,8 @@ int libcamera_buffer_list_set_stream(buffer_list_t *buf_list, bool do_on) if (buf_list->dev->libcamera->camera->start(&buf_list->dev->libcamera->controls) < 0) { LOG_ERROR(buf_list, "Failed to start camera."); } + + buf_list->dev->libcamera->controls.clear(); } else { buf_list->dev->libcamera->camera->requestCompleted.disconnect( buf_list->libcamera, &buffer_list_libcamera_t::libcamera_buffer_list_dequeued);