From patchwork Wed May 6 10:33:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Umang Jain X-Patchwork-Id: 3690 Return-Path: Received: from o1.f.az.sendgrid.net (o1.f.az.sendgrid.net [208.117.55.132]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4B32561698 for ; Wed, 6 May 2020 12:33:55 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=uajain.com header.i=@uajain.com header.b="Rbyg+v+M"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uajain.com; h=from:subject:in-reply-to:references:mime-version:to:cc: content-transfer-encoding:content-type; s=s1; bh=B5Jbb3/CjZ/78+Unt8jaSzv4o2LgeBkW6IhXGg6FNiM=; b=Rbyg+v+MVnjP6E26/cUJGvt6VkfTJR7q7GzmTDJklpDuWM4mtit5fKQ4zig/FENUbOhR ZFg+R06jefX8OOA98cF2wpfrZOAklCkKtIhOL5qP40OpdiGdbvjVGZzb2rkceHIDuF5mzb RT2UpUmOrrUGLZkh0yt/Qgz3D22hbUUSI= Received: by filter0081p3las1.sendgrid.net with SMTP id filter0081p3las1-3357-5EB29290-F2 2020-05-06 10:33:53.206528954 +0000 UTC m=+1773122.500703768 Received: from mail.uajain.com (unknown) by ismtpd0005p1maa1.sendgrid.net (SG) with ESMTP id IxvEqa3mSwma1nYmOmTIdA for ; Wed, 06 May 2020 10:33:52.840 +0000 (UTC) From: Umang Jain Date: Wed, 06 May 2020 10:33:53 +0000 (UTC) Message-Id: <20200506103346.3433-3-email@uajain.com> In-Reply-To: <20200506103346.3433-1-email@uajain.com> References: <20200506103346.3433-1-email@uajain.com> Mime-Version: 1.0 X-SG-EID: 1Q40EQ7YGir8a9gjSIAdTjhngY657NMk9ckeo4dbHZDiOpywc/L3L9rFqlwE4KPc8Y1sFjEEckHl5AFRmKDueraXKxp573m8sSCEK90OLFw+qYpEOzFFN3Mh07YU/WWy7V3S2jEqv8pKCFA8dL0JHiS15q++nMXIZNSnz/i8DTPT2nRhPWgM/8fcYtsFJOiZ5uB19qoUfJ+cyASB2+HIXQ/0UzG+h3YPY72YC6fu+/sqIiBWEQiA/kNHLALC+j+e To: libcamera-devel Subject: [libcamera-devel] [PATCH 2/4] libcamera: camera_manager: Introduce signals when a camera is added/removed 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-List-Received-Date: Wed, 06 May 2020 10:33:55 -0000 Emit 'cameraAdded' and 'cameraRemoved' from CameraManager to enable hotplug and hot-unplug support in appplications like QCam. Signed-off-by: Umang Jain --- include/libcamera/camera_manager.h | 4 ++++ src/libcamera/camera_manager.cpp | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/libcamera/camera_manager.h b/include/libcamera/camera_manager.h index 079f848..558bb96 100644 --- a/include/libcamera/camera_manager.h +++ b/include/libcamera/camera_manager.h @@ -13,6 +13,7 @@ #include #include +#include namespace libcamera { @@ -42,6 +43,9 @@ public: void setEventDispatcher(std::unique_ptr dispatcher); EventDispatcher *eventDispatcher(); + Signal cameraAdded; + Signal cameraRemoved; + private: static const std::string version_; static CameraManager *self_; diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp index c75979a..6438f87 100644 --- a/src/libcamera/camera_manager.cpp +++ b/src/libcamera/camera_manager.cpp @@ -391,6 +391,23 @@ std::shared_ptr CameraManager::get(dev_t devnum) return iter->second.lock(); } +/** + * \var CameraManager::cameraAdded + * \brief Signal emitted when a new camera is added in CameraManager + * + * This signal is emitted when a new camera is added by the CameraManager + * in the list of cameras it manages. A pointer to the newly-added camera + * is passed as a parameter. + */ + +/** + * \var CameraManager::cameraRemoved + * \brief Signal emitted when a camera is removed in CameraManager + * + * This signal is emitted when a camera is removed from the CameraManager. + * A pointer to the removed camera is passed as a parameter. + */ + /** * \brief Add a camera to the camera manager * \param[in] camera The camera to be added @@ -409,7 +426,9 @@ void CameraManager::addCamera(std::shared_ptr camera, dev_t devnum) { ASSERT(Thread::current() == p_.get()); + Camera *cam = camera.get(); p_->addCamera(camera, devnum); + cameraAdded.emit(cam); } /** @@ -427,6 +446,7 @@ void CameraManager::removeCamera(Camera *camera) ASSERT(Thread::current() == p_.get()); p_->removeCamera(camera); + cameraRemoved.emit(camera); } /**