From patchwork Thu Nov 30 15:43:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jaslo Ziska X-Patchwork-Id: 19258 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 5FEE7BDE6B for ; Thu, 30 Nov 2023 15:54:41 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 16B3A629D2; Thu, 30 Nov 2023 16:54:41 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1701359681; bh=1HZaUVHwFT/CmpGGSepQsclpDntj8ie64ONJ4vpQrGE=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=SADluEfhT1lHyp5wSr2cF95+LcglC+9T/b1inawDTIocAizXqPNhgxCGppFr8FfDx AtxmC0oELtd555fRJW8lxiFT01zJzj3Wm0+Y2Vfkt+KSdHNoRgZwYgQc6eV+d8BHME 8jpjZK6EF1JLzfnhlJCXKLPxqT0E0rFr5LeU720mCAkOZx88RKqYrafscLCSZddwpr cK6Pv1A+HG+6oyK9Jp/YrqhPD7M25m0dl8tGxz7CTXw4Fukbqk0heB5QH7YmQ4V2qW QJQeIgqJtUlZJ/rGlrNYr690BvXgvUJbjv0WPgC/0r0DHThWg9beTXVJrTUwQFFfdU 232BjKGRRKHtw== Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [85.215.255.21]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 373D6629C2 for ; Thu, 30 Nov 2023 16:54:40 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=ziska.de header.i=@ziska.de header.b="Fn0Uf66n"; dkim=permerror (0-bit key) header.d=ziska.de header.i=@ziska.de header.b="UR3PWXVP"; dkim-atps=neutral ARC-Seal: i=1; a=rsa-sha256; t=1701359679; cv=none; d=strato.com; s=strato-dkim-0002; b=TE1VDV0D/L0F/vjDmMzITu5VtdO1IrLln4RIK8IAZJlDn9uMVHjmh6bGqRHUTG0Dzd dQTf/3SuUyWL5d93exUlei7e0FZqnePVfr7k5Sv/UU4OaO7C8K/HR1KTmtp7WlWlAKgk 6d8Juvgmpyw28x4qPJdrxH+J11+YNzh9W9pPYy1QBmPzloE1+HJ9OnquywSwFJyU8ItR +gtVWfPuipWPCq0b5Ij2UbbDNfmE7Obo5BR31az744dg7oU86UmIvLewQlze1W04HP7N CDhyCebYciDE2/7TdzN/OU8mYICZ1c80LgvJRnvfiWseLd43UXyBAtcbTXFc9wBKxTtW DniA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1701359679; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=D892LkJsjJS9MKLBSKREEFYt7G0gICXHM6Cbxck3a9M=; b=bO2FkWWYCsQiTSVujU+AV7r4rfdsHvk+yfm2L+LrTgsTEBDM7wFru3M9EI9nzKliH1 RCPXBR/Pk4s/VTpEcz7Zp8YnqErBghcFlq2P0BWRlWQXibXiE6u1r1WR9urwnHKZzobV HMoq830YGXh+5bQjuxtkxp1bmncerexhuGJi4QjCxf/+Kn5gsxsZrwGZxPGBy2w/RN88 RE2gUpyvLHEHa6Ss8o80N5ZlxPni46f29tmx4eVxOs4YAMOZwZti3b2lY+YqwDaritKw DVDTeqt3mmk9pkLpc4XRHUH6Bs1dGrfsZuqgQhM6dSfY4CtbYdZKHKoJzQyehQgQCLUS 9niQ== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1701359679; s=strato-dkim-0002; d=ziska.de; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=D892LkJsjJS9MKLBSKREEFYt7G0gICXHM6Cbxck3a9M=; b=Fn0Uf66n2P9iDnzyJOCIFVgpSs30SwO6Iv18iZJ3wtHZ3f1UyfcIUJHtoEgcT44BpH MRAbrMgq25jnnjcprwhlV8JV/sNK6WY6xc1odWl90aqRAUYg07Gj6Nwx3FIHqFKdTK+J 9T1K9QbvgMxHUbeYGKzwlo2eNlCbphmY6+o7d5ox7oJbdLIDC7Q2Uj9fKp1vY59fEIi6 4zoNeK3VP9zJedp2ZHH82YTf8kMwXDtKQHWovwa94jdBdvl2lndVeFiJu21O3fuOqAov KqP7fY7BFr+kMy91kiO8u6Ui0DyM+LlFCIpkOZY0faIVnhYL5+Jvdz7rdQ1djXXDOWQy AiZA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1701359679; s=strato-dkim-0003; d=ziska.de; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=D892LkJsjJS9MKLBSKREEFYt7G0gICXHM6Cbxck3a9M=; b=UR3PWXVPitQUBRUOb2w3S2azeCMCP9pYfZE+2O3+TS1utHGv0ITb5ijUl5ncN9ycE2 KTfLhNTxaG/9Y6EE0vDw== X-RZG-AUTH: ":Jm0XeU+IYfb0x77LHmrjN5Wlb7TBwusDqIM6Hizy8VdfzvKi4yoFC9cH04q6BfJa07bS3ov6I8QOM/V5x+uTrCUtBrk=" Received: from archlinux.fritz.box by smtp.strato.de (RZmta 49.9.7 AUTH) with ESMTPSA id n54b84zAUFsd0SC (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Thu, 30 Nov 2023 16:54:39 +0100 (CET) To: libcamera-devel@lists.libcamera.org Date: Thu, 30 Nov 2023 16:43:09 +0100 Message-ID: <20231130155323.13259-3-jaslo@ziska.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231130155323.13259-1-jaslo@ziska.de> References: <20231130155323.13259-1-jaslo@ziska.de> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 2/3] gstreamer: Add GstLibcameraSrcState::clearRequests method 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: Jaslo Ziska via libcamera-devel From: Jaslo Ziska Reply-To: Jaslo Ziska Cc: Jaslo Ziska Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Add a clearRequests method to GstLibcameraSrcState which clears the GstLibcameraSrcState::completedRequests_ queue. Use this new method in gst_libcamera_src_task_leave instead of doing it manually. Signed-off-by: Jaslo Ziska Reviewed-by: Nicolas Dufresne Reviewed-by: Laurent Pinchart --- src/gstreamer/gstlibcamerasrc.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp index e57ba52f..d448a750 100644 --- a/src/gstreamer/gstlibcamerasrc.cpp +++ b/src/gstreamer/gstlibcamerasrc.cpp @@ -133,6 +133,7 @@ struct GstLibcameraSrcState { int queueRequest(); void requestCompleted(Request *request); int processRequest(); + void clearRequests(); }; struct _GstLibcameraSrc { @@ -318,6 +319,12 @@ int GstLibcameraSrcState::processRequest() return err; } +void GstLibcameraSrcState::clearRequests() +{ + GLibLocker locker(&lock_); + completedRequests_ = {}; +} + static bool gst_libcamera_src_open(GstLibcameraSrc *self) { @@ -629,11 +636,7 @@ gst_libcamera_src_task_leave([[maybe_unused]] GstTask *task, GST_DEBUG_OBJECT(self, "Streaming thread is about to stop"); state->cam_->stop(); - - { - GLibLocker locker(&state->lock_); - state->completedRequests_ = {}; - } + state->clearRequests(); { GLibRecLocker locker(&self->stream_lock);