From patchwork Mon Jun 29 16:29:29 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 27085 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 E5F52C3261 for ; Mon, 29 Jun 2026 16:30:46 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 6D77465F36; Mon, 29 Jun 2026 18:30:32 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Cz3mBRDp"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1CC5765F29 for ; Mon, 29 Jun 2026 18:30:22 +0200 (CEST) Received: from pb-laptop.local (185.221.140.128.nat.pool.zt.hu [185.221.140.128]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E0658E91; Mon, 29 Jun 2026 18:29:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1782750579; bh=A5FPi9pi1Jad1M+o2kl0EVITvDW0V6dnaP6dvzTsv0k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Cz3mBRDpQEMHgvLZs0GsK9i7xpCAwk3nzEC2yxFNhTwX8adBmM9GjQ0pI/ABYjePa ut79Fc1lYNM+ZtDbBuY1L+Nlf+byTrQxyqVlgT5ltF8CKw7AWWfHCpjn1Ku4ekdshE LPacoEF4/lbfBwWJW2jO0gms6/BciiPbSeMh1qec= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Cc: Laurent Pinchart Subject: [RFC PATCH v1 06/54] libcamera: request: completeBuffer(): Emit `bufferCompleted` here Date: Mon, 29 Jun 2026 18:29:29 +0200 Message-ID: <20260629163017.863145-7-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260629163017.863145-1-barnabas.pocze@ideasonboard.com> References: <20260629163017.863145-1-barnabas.pocze@ideasonboard.com> MIME-Version: 1.0 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The `Request` class already manages the emission of that signal in `doCancelRequest()`, so let's move the normal emission from the pipeline handler base class while keeping the ordering of things (except the trace point since it probably makes more sense to have the trace point before user code runs). Signed-off-by: Barnabás Pőcze Reviewed-by: Laurent Pinchart --- src/libcamera/pipeline_handler.cpp | 2 -- src/libcamera/request.cpp | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index e7145c1d48..3d49f85cfa 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -562,8 +562,6 @@ void PipelineHandler::doQueueRequests(Camera *camera) */ bool PipelineHandler::completeBuffer(Request *request, FrameBuffer *buffer) { - Camera *camera = request->_d()->camera(); - camera->bufferCompleted.emit(request, buffer); return request->_d()->completeBuffer(buffer); } diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp index 5f983e0ce6..022a97f169 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -104,6 +104,9 @@ bool Request::Private::completeBuffer(FrameBuffer *buffer) { LIBCAMERA_TRACEPOINT(request_complete_buffer, this, buffer); + Request *request = LIBCAMERA_O_PTR(); + camera_->bufferCompleted.emit(request, buffer); + int ret = pending_.erase(buffer); ASSERT(ret == 1);