mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 23:39:44 +03:00
libcamera: pipeline_handler: Provide cancelRequest
Let's extract the two occurrences of canceling a request to a common helper. This is especially useful for the followup patch, which needs to cancel a request from outside. Signed-off-by: Milan Zamazal <mzamazal@redhat.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
e1d45a17f7
commit
fe68cd0d7d
2 changed files with 17 additions and 7 deletions
|
@ -60,6 +60,7 @@ public:
|
||||||
|
|
||||||
bool completeBuffer(Request *request, FrameBuffer *buffer);
|
bool completeBuffer(Request *request, FrameBuffer *buffer);
|
||||||
void completeRequest(Request *request);
|
void completeRequest(Request *request);
|
||||||
|
void cancelRequest(Request *request);
|
||||||
|
|
||||||
std::string configurationFile(const std::string &subdir,
|
std::string configurationFile(const std::string &subdir,
|
||||||
const std::string &name) const;
|
const std::string &name) const;
|
||||||
|
|
|
@ -367,9 +367,7 @@ void PipelineHandler::stop(Camera *camera)
|
||||||
while (!waitingRequests_.empty()) {
|
while (!waitingRequests_.empty()) {
|
||||||
Request *request = waitingRequests_.front();
|
Request *request = waitingRequests_.front();
|
||||||
waitingRequests_.pop();
|
waitingRequests_.pop();
|
||||||
|
cancelRequest(request);
|
||||||
request->_d()->cancel();
|
|
||||||
completeRequest(request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure no requests are pending. */
|
/* Make sure no requests are pending. */
|
||||||
|
@ -470,10 +468,8 @@ void PipelineHandler::doQueueRequest(Request *request)
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = queueRequestDevice(camera, request);
|
int ret = queueRequestDevice(camera, request);
|
||||||
if (ret) {
|
if (ret)
|
||||||
request->_d()->cancel();
|
cancelRequest(request);
|
||||||
completeRequest(request);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -568,6 +564,19 @@ void PipelineHandler::completeRequest(Request *request)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Cancel request and signal its completion
|
||||||
|
* \param[in] request The request to cancel
|
||||||
|
*
|
||||||
|
* This function cancels and completes the request. The same rules as for
|
||||||
|
* completeRequest() apply.
|
||||||
|
*/
|
||||||
|
void PipelineHandler::cancelRequest(Request *request)
|
||||||
|
{
|
||||||
|
request->_d()->cancel();
|
||||||
|
completeRequest(request);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Retrieve the absolute path to a platform configuration file
|
* \brief Retrieve the absolute path to a platform configuration file
|
||||||
* \param[in] subdir The pipeline handler specific subdirectory name
|
* \param[in] subdir The pipeline handler specific subdirectory name
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue