[{"id":4435,"web_url":"https://patchwork.libcamera.org/comment/4435/","msgid":"<20200413213637.GG4875@pendragon.ideasonboard.com>","date":"2020-04-13T21:36:37","subject":"Re: [libcamera-devel] [PATCH v4 4/8] libcamera: pipeline: rkisp1:\n\tAdd clear() to RkISP1Frames","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nThank you for the patch.\n\nOn Mon, Apr 13, 2020 at 11:26:56PM +0200, Niklas Söderlund wrote:\n> When the camera is stopping the helper that keeps track of which buffers\n> are associated with a request is not cleared. Add a clear operation and\n> call it when the camera is stopped.\n> \n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> ---\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 18 ++++++++++++++++++\n>  1 file changed, 18 insertions(+)\n> \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index de90615edf217cca..c4e46bea1cc9a47f 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -64,6 +64,7 @@ public:\n>  \n>  \tRkISP1FrameInfo *create(unsigned int frame, Request *request, Stream *stream);\n>  \tint destroy(unsigned int frame);\n> +\tvoid clear();\n>  \n>  \tRkISP1FrameInfo *find(unsigned int frame);\n>  \tRkISP1FrameInfo *find(FrameBuffer *buffer);\n> @@ -279,6 +280,21 @@ int RkISP1Frames::destroy(unsigned int frame)\n>  \treturn 0;\n>  }\n>  \n> +void RkISP1Frames::clear()\n> +{\n> +\tauto it = frameInfo_.cbegin();\n> +\twhile (it != frameInfo_.cend()) {\n> +\t\tRkISP1FrameInfo *info = it->second;\n> +\n> +\t\tpipe_->availableParamBuffers_.push(info->paramBuffer);\n> +\t\tpipe_->availableStatBuffers_.push(info->statBuffer);\n> +\n> +\t\tit = frameInfo_.erase(it);\n> +\n> +\t\tdelete info;\n> +\t}\n\nI think you can simplify this:\n\n\tfor (const auto &entry : frameInfo_) {\n\t\tRkISP1FrameInfo *info = entry.second;\n\n\t\tpipe_->availableParamBuffers_.push(info->paramBuffer);\n\t\tpipe_->availableStatBuffers_.push(info->statBuffer);\n\n\t\tdelete info;\n\t}\n\n\tframeInfo_.clear();\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +}\n> +\n>  RkISP1FrameInfo *RkISP1Frames::find(unsigned int frame)\n>  {\n>  \tauto itInfo = frameInfo_.find(frame);\n> @@ -832,6 +848,8 @@ void PipelineHandlerRkISP1::stop(Camera *camera)\n>  \n>  \tdata->timeline_.reset();\n>  \n> +\tdata->frameInfo_.clear();\n> +\n>  \tfreeBuffers(camera);\n>  \n>  \tactiveCamera_ = nullptr;","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2E3AF6279B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Apr 2020 23:36:49 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9F18024B;\n\tMon, 13 Apr 2020 23:36:48 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"ZyJKuXGC\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1586813808;\n\tbh=0uPBJGyRErMPEuOTkiRzunHXqE+b/Wbd6K47WP0TOAA=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=ZyJKuXGC9h2wVT3SQQKur3Po7URILTGWPZgswYzapViV4anegi1ptFTuTZrT5UqR4\n\tGExCCRLw7y0h/1I+5klCKvalUrIALsBihVIEZdjmBryZcuYLYt1SU96Gcf3QNv8D37\n\t8k88phV4NEq1RHI1b8k1FYkmMwibE+Gta8ObkNjE=","Date":"Tue, 14 Apr 2020 00:36:37 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20200413213637.GG4875@pendragon.ideasonboard.com>","References":"<20200413212700.1373247-1-niklas.soderlund@ragnatech.se>\n\t<20200413212700.1373247-5-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20200413212700.1373247-5-niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH v4 4/8] libcamera: pipeline: rkisp1:\n\tAdd clear() to RkISP1Frames","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Mon, 13 Apr 2020 21:36:49 -0000"}}]