<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 10, 2022 at 2:23 AM Utkarsh Tiwari <<a href="mailto:utkarsh02t@gmail.com">utkarsh02t@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Currently to request a frame, we operate the camera directly.<br>
This approach is also scattered in two places,<br>
MainWindow::startCapture() and MainWindow::queueRequest().<br>
This makes it difficult to account for requests.<br>
<br>
Centralize all the queuing to a single function queueRequest()<br>
<br>
Rename the current queueRequest() to renderComplete().<br>
This makes more sense as this slot is triggered when<br>
the render is complete and we want to queue another<br>
request.<br>
<br>
Signed-off-by: Utkarsh Tiwari <utkarsh02t at <a href="http://gmail.com" rel="noreferrer" target="_blank">gmail.com</a>><br>
Reviewed-by: Kieran Bingham <kieran.bingham at <a href="http://ideasonboard.com" rel="noreferrer" target="_blank">ideasonboard.com</a>><br>
Reviewed-by: Umang Jain <umang.jain at <a href="http://ideasonboard.com" rel="noreferrer" target="_blank">ideasonboard.com</a>><br>
Reviewed-by: Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com" target="_blank">laurent.pinchart@ideasonboard.com</a>><br></blockquote><div>Fix mail id here: <br></div><div>Reviewed-by: Kieran Bingham <kieran.bingham@ <a href="http://ideasonboard.com" rel="noreferrer" target="_blank">ideasonboard.com</a>><br>
Reviewed-by: Umang Jain <umang.jain@<a href="http://ideasonboard.com" rel="noreferrer" target="_blank">ideasonboard.com</a>></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
---<br>
src/qcam/main_window.cpp | 14 +++++++++-----<br>
src/qcam/main_window.h | 3 ++-<br>
2 files changed, 11 insertions(+), 6 deletions(-)<br>
<br>
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp<br>
index 15b150ec..3feabcff 100644<br>
--- a/src/qcam/main_window.cpp<br>
+++ b/src/qcam/main_window.cpp<br>
@@ -120,14 +120,14 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options)<br>
if (renderType == "qt") {<br>
ViewFinderQt *viewfinder = new ViewFinderQt(this);<br>
connect(viewfinder, &ViewFinderQt::renderComplete,<br>
- this, &MainWindow::queueRequest);<br>
+ this, &MainWindow::renderComplete);<br>
viewfinder_ = viewfinder;<br>
setCentralWidget(viewfinder);<br>
#ifndef QT_NO_OPENGL<br>
} else if (renderType == "gles") {<br>
ViewFinderGL *viewfinder = new ViewFinderGL(this);<br>
connect(viewfinder, &ViewFinderGL::renderComplete,<br>
- this, &MainWindow::queueRequest);<br>
+ this, &MainWindow::renderComplete);<br>
viewfinder_ = viewfinder;<br>
setCentralWidget(viewfinder);<br>
#endif<br>
@@ -513,7 +513,7 @@ int MainWindow::startCapture()<br>
<br>
/* Queue all requests. */<br>
for (std::unique_ptr<Request> &request : requests_) {<br>
- ret = camera_->queueRequest(request.get());<br>
+ ret = queueRequest(request.get());<br>
if (ret < 0) {<br>
qWarning() << "Can't queue request";<br>
goto error_disconnect;<br>
@@ -745,7 +745,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer)<br>
viewfinder_->render(buffer, mappedBuffers_[buffer].get());<br>
}<br>
<br>
-void MainWindow::queueRequest(FrameBuffer *buffer)<br>
+void MainWindow::renderComplete(FrameBuffer *buffer)<br>
{<br>
Request *request;<br>
{<br>
@@ -774,6 +774,10 @@ void MainWindow::queueRequest(FrameBuffer *buffer)<br>
qWarning() << "No free buffer available for RAW capture";<br>
}<br>
}<br>
+ queueRequest(request);<br>
+}<br>
<br>
- camera_->queueRequest(request);<br>
+int MainWindow::queueRequest(Request *request)<br>
+{<br>
+ return camera_->queueRequest(request);<br>
}<br>
diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h<br>
index bbdbb21c..bd6f0172 100644<br>
--- a/src/qcam/main_window.h<br>
+++ b/src/qcam/main_window.h<br>
@@ -70,7 +70,7 @@ private Q_SLOTS:<br>
void processRaw(libcamera::FrameBuffer *buffer,<br>
const libcamera::ControlList &metadata);<br>
<br>
- void queueRequest(libcamera::FrameBuffer *buffer);<br>
+ void renderComplete(libcamera::FrameBuffer *buffer);<br>
<br>
private:<br>
int createToolbars();<br>
@@ -84,6 +84,7 @@ private:<br>
void addCamera(std::shared_ptr<libcamera::Camera> camera);<br>
void removeCamera(std::shared_ptr<libcamera::Camera> camera);<br>
<br>
+ int queueRequest(libcamera::Request *request);<br>
void requestComplete(libcamera::Request *request);<br>
void processCapture();<br>
void processHotplug(HotplugEvent *e);<br>
-- <br>
2.25.1<br>
<br>
</blockquote></div></div>