<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>