libcamera: pipeline_handler: Move waitingRequests_ into camera class
The waiting requests of one camera should not be able to influence queuing to another camera. Currently a request that is in the waitingQueue and waiting for preparation blocks all requests of other cameras even if they are already prepared. To fix that replace the single waitingRequests_ queue with one queue per camera. Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Umang Jain <uajain@igalia.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Tested-by: Sven Püschel <s.pueschel@pengutronix.de>
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include <atomic>
|
||||
#include <list>
|
||||
#include <memory>
|
||||
#include <queue>
|
||||
#include <set>
|
||||
#include <stdint.h>
|
||||
#include <string>
|
||||
@@ -36,6 +37,7 @@ public:
|
||||
const PipelineHandler *pipe() const { return pipe_.get(); }
|
||||
|
||||
std::list<Request *> queuedRequests_;
|
||||
std::queue<Request *> waitingRequests_;
|
||||
ControlInfoMap controlInfo_;
|
||||
ControlList properties_;
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include <sys/types.h>
|
||||
#include <vector>
|
||||
@@ -89,13 +88,11 @@ private:
|
||||
virtual void disconnect();
|
||||
|
||||
void doQueueRequest(Request *request);
|
||||
void doQueueRequests();
|
||||
void doQueueRequests(Camera *camera);
|
||||
|
||||
std::vector<std::shared_ptr<MediaDevice>> mediaDevices_;
|
||||
std::vector<std::weak_ptr<Camera>> cameras_;
|
||||
|
||||
std::queue<Request *> waitingRequests_;
|
||||
|
||||
const char *name_;
|
||||
unsigned int useCount_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user