From patchwork Mon Jun 27 03:01:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Utkarsh Tiwari X-Patchwork-Id: 16372 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 530E5BD808 for ; Mon, 27 Jun 2022 03:02:13 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1B1FB65638; Mon, 27 Jun 2022 05:02:13 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1656298933; bh=4Aq824HZHPf2PmvNblVn/eW6i8DB/sJg0DcK4tanfZg=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=zCNdGnobwUOGAduBknwh46SpsWO6JmAsPEvDLi1ADwXltgSobeddIkiZd5yrHnKmC FFim6yZZpGqfYgB7u55XGincF1xleJPs+uUywxmflLPZIZrRbbMg9J5TPpDGudRxD3 WVQCX9eNVrcw2TbwnswM0Odf9pfv6x098E8Ok1NQdI8qBQKO5JqxIjyPNIrBLndiTl XjoN3P0PcFOPSbapBA5IHDqQYLn2kYc1ajvKjonGVcQCmD9UYfzSEshgQDnYZvqEFF K05BMsQeVq2pLyvjQ4SJfFceXiep4lMgJE7ULF3vHO3BbW0gFmHS50vLhv18zkZ4FM 2VDK7fXYPvymQ== Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C10A465633 for ; Mon, 27 Jun 2022 05:02:11 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SCEAtlGf"; dkim-atps=neutral Received: by mail-pl1-x631.google.com with SMTP id jh14so6982773plb.1 for ; Sun, 26 Jun 2022 20:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FiD29FzPLJ25vLGERZCLerCSVMUJH90zaw1E+agM5O0=; b=SCEAtlGfwk49UxN7mPHexmMdodfka2PxBvF89qwfJe5VvBVNa0H0seolnDvQ5vAC2u YW62qTkzeOkWsr0EW2v4iBysXEPTiLynjj7UviH6lCUOSA4RGSlLNoozWHcgm4EfVtgG D1u7JzCIq17IiqmAel6QK4t2HFqUoSd78rl3SgMICpPXEt9fSAsnb9U/2Oatxg8DeGyp 9EoQy4QQrnATVHiNUocJq1BGBLiqMWBzEBwxzG8afwaj0xxTUALT5rlOtbegA6H2PRfT q59/hWO93bD3mEGAo282CzeXbqIGgQ5UhV57ao/PZu7n/CwV25wa/4dqWDU7LqN5bR0V +UJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FiD29FzPLJ25vLGERZCLerCSVMUJH90zaw1E+agM5O0=; b=1kLFZ26/t278t5yuHUBpQJlcjtyVlt/AskPuN+Ar8z+bsXH4JYlFMqCgh6cUbIBO6g SHBMkmjQjegXXv7Wrlk/YvpljZWMzgQH6Oe7Iv9qx3mkSsK6kLDXr/MB1FPiWsyzWH7M mYYCi8qhwvkiSP8E17IeMW1w3hUuclEvvHyBB3B+E/AsS8V5nWr4Ws8Z1DAa4MtonJep My2P2GQ0a8tlwGE3NnFdUdr+4UZ5cu4h87KXxh9JSsJZTbnSUYojYwWJwihPAY7bjXYs LtUVpFtrCWY/Nt1ILIelZ3lIDnTU/g8+MQvbqz3O0BvyCz/IG/Wm9oMzDLZh9tvuPzYJ dHvg== X-Gm-Message-State: AJIora/qHSvxObpidI989R+roKx+5esg7KDu/PJW5tv4nDif0rxcM51o h/fMSAej2uak1uW7ZmOB7XtrTFu5fS/Fmg== X-Google-Smtp-Source: AGRyM1sUKfy7wj7H2EvAP545c3aqw+6wmob9Zpp0Z+O1eBLRYlS9l5V0thyrT99V1Gq3/vsCFlnEeg== X-Received: by 2002:a17:902:ce85:b0:16a:3db5:5966 with SMTP id f5-20020a170902ce8500b0016a3db55966mr12687542plg.79.1656298930059; Sun, 26 Jun 2022 20:02:10 -0700 (PDT) Received: from localhost.localdomain ([2406:3003:2005:1c27:cf57:31af:7925:f9e6]) by smtp.gmail.com with ESMTPSA id s7-20020aa78d47000000b0051bba89c2bcsm5899378pfe.58.2022.06.26.20.02.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jun 2022 20:02:09 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Mon, 27 Jun 2022 11:01:57 +0800 Message-Id: <20220627030159.30730-2-utkarsh02t@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220627030159.30730-1-utkarsh02t@gmail.com> References: <20220627030159.30730-1-utkarsh02t@gmail.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 1/3] qcam: Queue requests only through MainWindow::queueRequest() X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Utkarsh Tiwari via libcamera-devel From: Utkarsh Tiwari Reply-To: Utkarsh Tiwari Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" 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 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 Reviewed-by: Kieran Bingham --- 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 dd0e51f5..adeb3181 100644 --- a/src/qcam/main_window.cpp +++ b/src/qcam/main_window.cpp @@ -119,14 +119,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 @@ -521,7 +521,7 @@ int MainWindow::startCapture() /* Queue all requests. */ for (std::unique_ptr &request : requests_) { - ret = camera_->queueRequest(request.get()); + ret = queueRequest(request.get()); if (ret < 0) { qWarning() << "Can't queue request"; goto error_disconnect; @@ -755,7 +755,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer) viewfinder_->render(buffer, mappedBuffers_[buffer].get()); } -void MainWindow::queueRequest(FrameBuffer *buffer) +void MainWindow::renderComplete(FrameBuffer *buffer) { Request *request; { @@ -784,6 +784,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 3fbe872c..c3e4b665 100644 --- a/src/qcam/main_window.h +++ b/src/qcam/main_window.h @@ -66,7 +66,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(); @@ -80,6 +80,7 @@ private: void addCamera(std::shared_ptr camera); void removeCamera(std::shared_ptr camera); + int queueRequest(libcamera::Request *request); void requestComplete(libcamera::Request *request); void processCapture(); void processHotplug(HotplugEvent *e);