Message ID | 20220809205042.344923-6-utkarsh02t@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
On Wed, Aug 10, 2022 at 2:23 AM Utkarsh Tiwari <utkarsh02t@gmail.com> wrote: > Currently to request a frame, we operate the camera directly. > This approach is also scattered in two places, > MainWindow::startCapture() and MainWindow::queueRequest(). > This makes it difficult to account for requests. > > Centralize all the queuing to a single function queueRequest() > > Rename the current queueRequest() to renderComplete(). > This makes more sense as this slot is triggered when > the render is complete and we want to queue another > request. > > Signed-off-by: Utkarsh Tiwari <utkarsh02t at gmail.com> > Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com> > Reviewed-by: Umang Jain <umang.jain at ideasonboard.com> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Fix mail id here: Reviewed-by: Kieran Bingham <kieran.bingham@ ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> > --- > src/qcam/main_window.cpp | 14 +++++++++----- > src/qcam/main_window.h | 3 ++- > 2 files changed, 11 insertions(+), 6 deletions(-) > > diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp > index 15b150ec..3feabcff 100644 > --- a/src/qcam/main_window.cpp > +++ b/src/qcam/main_window.cpp > @@ -120,14 +120,14 @@ MainWindow::MainWindow(CameraManager *cm, const > OptionsParser::Options &options) > if (renderType == "qt") { > ViewFinderQt *viewfinder = new ViewFinderQt(this); > connect(viewfinder, &ViewFinderQt::renderComplete, > - this, &MainWindow::queueRequest); > + this, &MainWindow::renderComplete); > viewfinder_ = viewfinder; > setCentralWidget(viewfinder); > #ifndef QT_NO_OPENGL > } else if (renderType == "gles") { > ViewFinderGL *viewfinder = new ViewFinderGL(this); > connect(viewfinder, &ViewFinderGL::renderComplete, > - this, &MainWindow::queueRequest); > + this, &MainWindow::renderComplete); > viewfinder_ = viewfinder; > setCentralWidget(viewfinder); > #endif > @@ -513,7 +513,7 @@ int MainWindow::startCapture() > > /* Queue all requests. */ > for (std::unique_ptr<Request> &request : requests_) { > - ret = camera_->queueRequest(request.get()); > + ret = queueRequest(request.get()); > if (ret < 0) { > qWarning() << "Can't queue request"; > goto error_disconnect; > @@ -745,7 +745,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer) > viewfinder_->render(buffer, mappedBuffers_[buffer].get()); > } > > -void MainWindow::queueRequest(FrameBuffer *buffer) > +void MainWindow::renderComplete(FrameBuffer *buffer) > { > Request *request; > { > @@ -774,6 +774,10 @@ void MainWindow::queueRequest(FrameBuffer *buffer) > qWarning() << "No free buffer available for RAW > capture"; > } > } > + queueRequest(request); > +} > > - camera_->queueRequest(request); > +int MainWindow::queueRequest(Request *request) > +{ > + return camera_->queueRequest(request); > } > diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h > index bbdbb21c..bd6f0172 100644 > --- a/src/qcam/main_window.h > +++ b/src/qcam/main_window.h > @@ -70,7 +70,7 @@ private Q_SLOTS: > void processRaw(libcamera::FrameBuffer *buffer, > const libcamera::ControlList &metadata); > > - void queueRequest(libcamera::FrameBuffer *buffer); > + void renderComplete(libcamera::FrameBuffer *buffer); > > private: > int createToolbars(); > @@ -84,6 +84,7 @@ private: > void addCamera(std::shared_ptr<libcamera::Camera> camera); > void removeCamera(std::shared_ptr<libcamera::Camera> camera); > > + int queueRequest(libcamera::Request *request); > void requestComplete(libcamera::Request *request); > void processCapture(); > void processHotplug(HotplugEvent *e); > -- > 2.25.1 > >
Quoting Utkarsh Tiwari (2022-08-09 21:55:15) > On Wed, Aug 10, 2022 at 2:23 AM Utkarsh Tiwari <utkarsh02t@gmail.com> wrote: > > > Currently to request a frame, we operate the camera directly. > > This approach is also scattered in two places, > > MainWindow::startCapture() and MainWindow::queueRequest(). > > This makes it difficult to account for requests. > > > > Centralize all the queuing to a single function queueRequest() > > > > Rename the current queueRequest() to renderComplete(). > > This makes more sense as this slot is triggered when > > the render is complete and we want to queue another > > request. > > > > Signed-off-by: Utkarsh Tiwari <utkarsh02t at gmail.com> > > Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com> > > Reviewed-by: Umang Jain <umang.jain at ideasonboard.com> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > Fix mail id here: > Reviewed-by: Kieran Bingham <kieran.bingham@ ideasonboard.com> Still not quite ;-) but it's ok, it can be handled when applying. > Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> > > > --- > > src/qcam/main_window.cpp | 14 +++++++++----- > > src/qcam/main_window.h | 3 ++- > > 2 files changed, 11 insertions(+), 6 deletions(-) > > > > diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp > > index 15b150ec..3feabcff 100644 > > --- a/src/qcam/main_window.cpp > > +++ b/src/qcam/main_window.cpp > > @@ -120,14 +120,14 @@ MainWindow::MainWindow(CameraManager *cm, const > > OptionsParser::Options &options) > > if (renderType == "qt") { > > ViewFinderQt *viewfinder = new ViewFinderQt(this); > > connect(viewfinder, &ViewFinderQt::renderComplete, > > - this, &MainWindow::queueRequest); > > + this, &MainWindow::renderComplete); > > viewfinder_ = viewfinder; > > setCentralWidget(viewfinder); > > #ifndef QT_NO_OPENGL > > } else if (renderType == "gles") { > > ViewFinderGL *viewfinder = new ViewFinderGL(this); > > connect(viewfinder, &ViewFinderGL::renderComplete, > > - this, &MainWindow::queueRequest); > > + this, &MainWindow::renderComplete); > > viewfinder_ = viewfinder; > > setCentralWidget(viewfinder); > > #endif > > @@ -513,7 +513,7 @@ int MainWindow::startCapture() > > > > /* Queue all requests. */ > > for (std::unique_ptr<Request> &request : requests_) { > > - ret = camera_->queueRequest(request.get()); > > + ret = queueRequest(request.get()); > > if (ret < 0) { > > qWarning() << "Can't queue request"; > > goto error_disconnect; > > @@ -745,7 +745,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer) > > viewfinder_->render(buffer, mappedBuffers_[buffer].get()); > > } > > > > -void MainWindow::queueRequest(FrameBuffer *buffer) > > +void MainWindow::renderComplete(FrameBuffer *buffer) > > { > > Request *request; > > { > > @@ -774,6 +774,10 @@ void MainWindow::queueRequest(FrameBuffer *buffer) > > qWarning() << "No free buffer available for RAW > > capture"; > > } > > } > > + queueRequest(request); > > +} > > > > - camera_->queueRequest(request); > > +int MainWindow::queueRequest(Request *request) > > +{ > > + return camera_->queueRequest(request); > > } > > diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h > > index bbdbb21c..bd6f0172 100644 > > --- a/src/qcam/main_window.h > > +++ b/src/qcam/main_window.h > > @@ -70,7 +70,7 @@ private Q_SLOTS: > > void processRaw(libcamera::FrameBuffer *buffer, > > const libcamera::ControlList &metadata); > > > > - void queueRequest(libcamera::FrameBuffer *buffer); > > + void renderComplete(libcamera::FrameBuffer *buffer); > > > > private: > > int createToolbars(); > > @@ -84,6 +84,7 @@ private: > > void addCamera(std::shared_ptr<libcamera::Camera> camera); > > void removeCamera(std::shared_ptr<libcamera::Camera> camera); > > > > + int queueRequest(libcamera::Request *request); > > void requestComplete(libcamera::Request *request); > > void processCapture(); > > void processHotplug(HotplugEvent *e); > > -- > > 2.25.1 > > > >
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp index 15b150ec..3feabcff 100644 --- a/src/qcam/main_window.cpp +++ b/src/qcam/main_window.cpp @@ -120,14 +120,14 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options) if (renderType == "qt") { ViewFinderQt *viewfinder = new ViewFinderQt(this); connect(viewfinder, &ViewFinderQt::renderComplete, - this, &MainWindow::queueRequest); + this, &MainWindow::renderComplete); viewfinder_ = viewfinder; setCentralWidget(viewfinder); #ifndef QT_NO_OPENGL } else if (renderType == "gles") { ViewFinderGL *viewfinder = new ViewFinderGL(this); connect(viewfinder, &ViewFinderGL::renderComplete, - this, &MainWindow::queueRequest); + this, &MainWindow::renderComplete); viewfinder_ = viewfinder; setCentralWidget(viewfinder); #endif @@ -513,7 +513,7 @@ int MainWindow::startCapture() /* Queue all requests. */ for (std::unique_ptr<Request> &request : requests_) { - ret = camera_->queueRequest(request.get()); + ret = queueRequest(request.get()); if (ret < 0) { qWarning() << "Can't queue request"; goto error_disconnect; @@ -745,7 +745,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer) viewfinder_->render(buffer, mappedBuffers_[buffer].get()); } -void MainWindow::queueRequest(FrameBuffer *buffer) +void MainWindow::renderComplete(FrameBuffer *buffer) { Request *request; { @@ -774,6 +774,10 @@ void MainWindow::queueRequest(FrameBuffer *buffer) qWarning() << "No free buffer available for RAW capture"; } } + queueRequest(request); +} - camera_->queueRequest(request); +int MainWindow::queueRequest(Request *request) +{ + return camera_->queueRequest(request); } diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h index bbdbb21c..bd6f0172 100644 --- a/src/qcam/main_window.h +++ b/src/qcam/main_window.h @@ -70,7 +70,7 @@ private Q_SLOTS: void processRaw(libcamera::FrameBuffer *buffer, const libcamera::ControlList &metadata); - void queueRequest(libcamera::FrameBuffer *buffer); + void renderComplete(libcamera::FrameBuffer *buffer); private: int createToolbars(); @@ -84,6 +84,7 @@ private: void addCamera(std::shared_ptr<libcamera::Camera> camera); void removeCamera(std::shared_ptr<libcamera::Camera> camera); + int queueRequest(libcamera::Request *request); void requestComplete(libcamera::Request *request); void processCapture(); void processHotplug(HotplugEvent *e);