From 4e8e74c716437f3fe486ecc861971937a0f291df Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Thu, 7 Jul 2022 11:37:36 +0200 Subject: [PATCH] Fix dynamic setting of auto-focus --- device/libcamera/buffer.cc | 2 ++ device/libcamera/buffer_list.cc | 2 ++ 2 files changed, 4 insertions(+) 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);