From patchwork Thu Dec 19 10:31:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Milan Zamazal X-Patchwork-Id: 22405 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 63BE7C3272 for ; Thu, 19 Dec 2024 10:31:20 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id B105468463; Thu, 19 Dec 2024 11:31:19 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.b="IFQV8YHn"; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 006E467FA7 for ; Thu, 19 Dec 2024 11:31:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734604276; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mrKt7eQvSmAJWLa2CpZgVm5pU/2d+dDaZc4oIG8IDJI=; b=IFQV8YHnLZBeFvmDZcZ559hvG27soRJBTnXahPbMSpXd8EV7Kp42ZHqJYsq7dJzSGrRT2u cIOjf103MjvaNXSW6ypx7TOoaZ2Eh/gA3aCIE74agSgwH48fe96obvseanFsYhyRf0n5BQ Bh4hIbhSoxZyzGLL5CqSyvVBbYBQqmM= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-445-aFBcZdudMCGTDW_uYHHWbg-1; Thu, 19 Dec 2024 05:31:15 -0500 X-MC-Unique: aFBcZdudMCGTDW_uYHHWbg-1 X-Mimecast-MFC-AGG-ID: aFBcZdudMCGTDW_uYHHWbg Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0C4F91955E7F; Thu, 19 Dec 2024 10:31:14 +0000 (UTC) Received: from nuthatch.brq.redhat.com (unknown [10.43.17.31]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 75EEC30044C1; Thu, 19 Dec 2024 10:31:12 +0000 (UTC) From: Milan Zamazal To: libcamera-devel@lists.libcamera.org Cc: Milan Zamazal , Laurent Pinchart , Stanislaw Gruszka Subject: [PATCH] libcamera: software_isp: Handle signals in the proper thread Date: Thu, 19 Dec 2024 11:31:08 +0100 Message-ID: <20241219103108.244243-1-mzamazal@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ifCQApr5dglpNLti6FN4SfApl1rzAbJTIKakeXb0EPk_1734604274 X-Mimecast-Originator: redhat.com content-type: text/plain; charset="US-ASCII"; x-default=true 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" inputBufferReady ready signal in the simple pipeline is handled in the pipeline handler thread. Similarly, outputBufferReady and ispStatsReady signals should be handled there too, everything should be called from the right thread and not block the callers. Signed-off-by: Milan Zamazal --- src/libcamera/pipeline/simple/simple.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index 8ac24e6e..280112f4 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -548,12 +548,17 @@ int SimpleCameraData::init() * bound explicitly to the pipe, which is bound to the pipeline * handler thread. The function then simply forwards the call to * conversionInputDone(). + * Similarly for outputBufferReady and ispStatsReady signals. */ swIsp_->inputBufferReady.connect(pipe, [this](FrameBuffer *buffer) { this->conversionInputDone(buffer); }); - swIsp_->outputBufferReady.connect(this, &SimpleCameraData::conversionOutputDone); - swIsp_->ispStatsReady.connect(this, &SimpleCameraData::ispStatsReady); + swIsp_->outputBufferReady.connect(this, [this](FrameBuffer *buffer) { + this->conversionOutputDone(buffer); + }); + swIsp_->ispStatsReady.connect(this, [this](uint32_t frame, uint32_t bufferId) { + this->ispStatsReady(frame, bufferId); + }); swIsp_->setSensorControls.connect(this, &SimpleCameraData::setSensorControls); } }