{"id":15285,"url":"https://patchwork.libcamera.org/api/covers/15285/?format=json","web_url":"https://patchwork.libcamera.org/cover/15285/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20220119001717.2503111-1-kieran.bingham@ideasonboard.com>","date":"2022-01-19T00:17:15","name":"[libcamera-devel,v2,0/2] libcamera: pipeline_handler: Register requests","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/15285/mbox/","series":[{"id":2897,"url":"https://patchwork.libcamera.org/api/series/2897/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=2897","date":"2022-01-19T00:17:15","name":"libcamera: pipeline_handler: Register requests","version":2,"mbox":"https://patchwork.libcamera.org/series/2897/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/15285/comments/","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 7FF58BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 19 Jan 2022 00:17:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B068760868;\n\tWed, 19 Jan 2022 01:17:22 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3DCAE6017D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Jan 2022 01:17:21 +0100 (CET)","from Monstersaurus.local\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id C298B464;\n\tWed, 19 Jan 2022 01:17:20 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"bhUsf0U3\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1642551440;\n\tbh=E8kDkG7IokCRjTkOv2FeeuZL66XhuR4WDFZARQ0kjkU=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=bhUsf0U3R/B7HSX9NHrXhlw7RcmpYPPJ8ibD4oKWR62nClUkfv0VXQ0JfQt/fB+Gg\n\tSgqPDvJxYljn6xcknY/WxbZAb6kKdb8vLo5RgZmcQxgVloFZy9NxkEh8p8VtZhVCHh\n\tFUtdIvBJrQx8NhYHm5V62QWkODLhY02l54kip/n8=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Date":"Wed, 19 Jan 2022 00:17:15 +0000","Message-Id":"<20220119001717.2503111-1-kieran.bingham@ideasonboard.com>","X-Mailer":"git-send-email 2.32.0","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v2 0/2] libcamera: pipeline_handler:\n\tRegister requests","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Provide a new call on pipeline handlers allowing the Camera to register\na request with the pipeline handler after it is constructed.\n\nThis allows us to perform one-time operations such as connecting\nrelevant signals on the request to the pipeline handler.\n\nUse this new call to move the prepared signal connection away from\nqueueRequest where it was repeatedly connecting the signal, leading to\nbugs which exhibited excessively long shutdown times when any\nsubstantial number of frames had been processed. This is reported to\nhave taken more than 10 minutes to close down the pipeline after a 2\nhour capture run.\n\nFinally remove support for the same signal being connected to an object\nmultiple times and add an assertion to the object class to ensure that\nwe catch and prevent this from happening again.\n\nThis underlying bug was identified from :\n https://github.com/raspberrypi/libcamera-apps/issues/217\n\nAnd should resolve the issue there.\n\nKieran Bingham (2):\n  libcamera: pipeline_handler: Register requests\n  libcamera: base: object: Prevent the same signal being connected more\n    than once\n\n include/libcamera/internal/pipeline_handler.h |  1 +\n src/libcamera/base/object.cpp                 |  6 ++++++\n src/libcamera/camera.cpp                      | 14 +++++++++++---\n src/libcamera/pipeline_handler.cpp            | 19 ++++++++++++++++---\n test/signal.cpp                               |  8 ++------\n 5 files changed, 36 insertions(+), 12 deletions(-)"}