Message ID | 20250924124713.3361707-6-barnabas.pocze@ideasonboard.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
Quoting Barnabás Pőcze (2025-09-24 13:47:10) > Use `std::deque` instead of `std::queue` because an `std::queue` cannot > be iterated. > I can't imagine any specific performance impact or penalty here. This is a small list. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> > --- > include/libcamera/internal/camera.h | 2 +- > src/libcamera/pipeline_handler.cpp | 8 ++++---- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/include/libcamera/internal/camera.h b/include/libcamera/internal/camera.h > index 8a2e9ed58..0f50c14a5 100644 > --- a/include/libcamera/internal/camera.h > +++ b/include/libcamera/internal/camera.h > @@ -37,7 +37,7 @@ public: > const PipelineHandler *pipe() const { return pipe_.get(); } > > std::list<Request *> queuedRequests_; > - std::queue<Request *> waitingRequests_; > + std::deque<Request *> waitingRequests_; > ControlInfoMap controlInfo_; > ControlList properties_; > > diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp > index e5f9e55c9..d0d3fbc79 100644 > --- a/src/libcamera/pipeline_handler.cpp > +++ b/src/libcamera/pipeline_handler.cpp > @@ -370,7 +370,7 @@ void PipelineHandler::stop(Camera *camera) > * after the device to keep them in order. > */ > Camera::Private *data = camera->_d(); > - std::queue<Request *> waitingRequests; > + std::deque<Request *> waitingRequests; > waitingRequests.swap(data->waitingRequests_); > > /* Stop the pipeline handler and let the queued requests complete. */ > @@ -379,7 +379,7 @@ void PipelineHandler::stop(Camera *camera) > /* Cancel and signal as complete all waiting requests. */ > while (!waitingRequests.empty()) { > Request *request = waitingRequests.front(); > - waitingRequests.pop(); > + waitingRequests.pop_front(); > cancelRequest(request); > } > > @@ -461,7 +461,7 @@ void PipelineHandler::queueRequest(Request *request) > > Camera *camera = request->_d()->camera(); > Camera::Private *data = camera->_d(); > - data->waitingRequests_.push(request); > + data->waitingRequests_.push_back(request); > > request->_d()->prepare(300ms); > } > @@ -510,7 +510,7 @@ void PipelineHandler::doQueueRequests(Camera *camera) > * Pop the request first, in case doQueueRequests() is called > * recursively from within doQueueRequest() > */ > - data->waitingRequests_.pop(); > + data->waitingRequests_.pop_front(); > doQueueRequest(request); > } > } > -- > 2.51.0 >
2025. 10. 07. 9:50 keltezéssel, Kieran Bingham írta: > Quoting Barnabás Pőcze (2025-09-24 13:47:10) >> Use `std::deque` instead of `std::queue` because an `std::queue` cannot >> be iterated. >> > > I can't imagine any specific performance impact or penalty here. This is > a small list. `std::queue` uses `std::deque` by default as the underlying container, so there should be no difference at all. > > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > >> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> >> --- >> include/libcamera/internal/camera.h | 2 +- >> src/libcamera/pipeline_handler.cpp | 8 ++++---- >> 2 files changed, 5 insertions(+), 5 deletions(-) >> >> diff --git a/include/libcamera/internal/camera.h b/include/libcamera/internal/camera.h >> index 8a2e9ed58..0f50c14a5 100644 >> --- a/include/libcamera/internal/camera.h >> +++ b/include/libcamera/internal/camera.h >> @@ -37,7 +37,7 @@ public: >> const PipelineHandler *pipe() const { return pipe_.get(); } >> >> std::list<Request *> queuedRequests_; >> - std::queue<Request *> waitingRequests_; >> + std::deque<Request *> waitingRequests_; >> ControlInfoMap controlInfo_; >> ControlList properties_; >> >> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp >> index e5f9e55c9..d0d3fbc79 100644 >> --- a/src/libcamera/pipeline_handler.cpp >> +++ b/src/libcamera/pipeline_handler.cpp >> @@ -370,7 +370,7 @@ void PipelineHandler::stop(Camera *camera) >> * after the device to keep them in order. >> */ >> Camera::Private *data = camera->_d(); >> - std::queue<Request *> waitingRequests; >> + std::deque<Request *> waitingRequests; >> waitingRequests.swap(data->waitingRequests_); >> >> /* Stop the pipeline handler and let the queued requests complete. */ >> @@ -379,7 +379,7 @@ void PipelineHandler::stop(Camera *camera) >> /* Cancel and signal as complete all waiting requests. */ >> while (!waitingRequests.empty()) { >> Request *request = waitingRequests.front(); >> - waitingRequests.pop(); >> + waitingRequests.pop_front(); >> cancelRequest(request); >> } >> >> @@ -461,7 +461,7 @@ void PipelineHandler::queueRequest(Request *request) >> >> Camera *camera = request->_d()->camera(); >> Camera::Private *data = camera->_d(); >> - data->waitingRequests_.push(request); >> + data->waitingRequests_.push_back(request); >> >> request->_d()->prepare(300ms); >> } >> @@ -510,7 +510,7 @@ void PipelineHandler::doQueueRequests(Camera *camera) >> * Pop the request first, in case doQueueRequests() is called >> * recursively from within doQueueRequest() >> */ >> - data->waitingRequests_.pop(); >> + data->waitingRequests_.pop_front(); >> doQueueRequest(request); >> } >> } >> -- >> 2.51.0 >>
diff --git a/include/libcamera/internal/camera.h b/include/libcamera/internal/camera.h index 8a2e9ed58..0f50c14a5 100644 --- a/include/libcamera/internal/camera.h +++ b/include/libcamera/internal/camera.h @@ -37,7 +37,7 @@ public: const PipelineHandler *pipe() const { return pipe_.get(); } std::list<Request *> queuedRequests_; - std::queue<Request *> waitingRequests_; + std::deque<Request *> waitingRequests_; ControlInfoMap controlInfo_; ControlList properties_; diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index e5f9e55c9..d0d3fbc79 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -370,7 +370,7 @@ void PipelineHandler::stop(Camera *camera) * after the device to keep them in order. */ Camera::Private *data = camera->_d(); - std::queue<Request *> waitingRequests; + std::deque<Request *> waitingRequests; waitingRequests.swap(data->waitingRequests_); /* Stop the pipeline handler and let the queued requests complete. */ @@ -379,7 +379,7 @@ void PipelineHandler::stop(Camera *camera) /* Cancel and signal as complete all waiting requests. */ while (!waitingRequests.empty()) { Request *request = waitingRequests.front(); - waitingRequests.pop(); + waitingRequests.pop_front(); cancelRequest(request); } @@ -461,7 +461,7 @@ void PipelineHandler::queueRequest(Request *request) Camera *camera = request->_d()->camera(); Camera::Private *data = camera->_d(); - data->waitingRequests_.push(request); + data->waitingRequests_.push_back(request); request->_d()->prepare(300ms); } @@ -510,7 +510,7 @@ void PipelineHandler::doQueueRequests(Camera *camera) * Pop the request first, in case doQueueRequests() is called * recursively from within doQueueRequest() */ - data->waitingRequests_.pop(); + data->waitingRequests_.pop_front(); doQueueRequest(request); } }
Use `std::deque` instead of `std::queue` because an `std::queue` cannot be iterated. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> --- include/libcamera/internal/camera.h | 2 +- src/libcamera/pipeline_handler.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-)