diff --git a/include/libcamera/internal/request.h b/include/libcamera/internal/request.h index 73e9bb5c..78cb99f3 100644 --- a/include/libcamera/internal/request.h +++ b/include/libcamera/internal/request.h @@ -59,7 +59,7 @@ private: bool prepared_ = false; std::unordered_set pending_; - std::map> notifiers_; + std::map notifiers_; std::unique_ptr timer_; }; diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp index 992d476e..60565f59 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -228,15 +228,12 @@ void Request::Private::prepare(std::chrono::milliseconds timeout) if (!fence) continue; - std::unique_ptr notifier = - std::make_unique(fence->fd().get(), - EventNotifier::Read); + auto [it, inserted] = notifiers_.try_emplace(buffer, fence->fd().get(), EventNotifier::Type::Read); + ASSERT(inserted); - notifier->activated.connect(this, [this, buffer] { - notifierActivated(buffer); - }); - - notifiers_[buffer] = std::move(notifier); + it->second.activated.connect(this, [this, buffer] { + notifierActivated(buffer); + }); } if (notifiers_.empty()) {