From patchwork Fri May 21 13:30:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?TsOtY29sYXMgRi4gUi4gQS4gUHJhZG8=?= X-Patchwork-Id: 12348 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 68E01C31FF for ; Fri, 21 May 2021 13:31:58 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 3419468921; Fri, 21 May 2021 15:31:58 +0200 (CEST) Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C2E1168911 for ; Fri, 21 May 2021 15:31:57 +0200 (CEST) Received: from localhost.localdomain (unknown [IPv6:2804:14c:1a9:2978:fc03:8702:eda1:a1f8]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: nfraprado) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 433AF1F4407F; Fri, 21 May 2021 14:31:55 +0100 (BST) From: =?utf-8?b?TsOtY29sYXMgRi4gUi4gQS4gUHJhZG8=?= To: libcamera-devel@lists.libcamera.org Date: Fri, 21 May 2021 10:30:52 -0300 Message-Id: <20210521133054.274502-4-nfraprado@collabora.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210521133054.274502-1-nfraprado@collabora.com> References: <20210521133054.274502-1-nfraprado@collabora.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v4 3/5] lc-compliance: Add Environment singleton 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: , Cc: kernel@collabora.com, =?utf-8?q?Andr=C3=A9_Almeida?= Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Add a singleton Environment class in order to make the camera available inside all tests. This is needed for the Googletest refactor, otherwise the tests, which are statically declared, won't be able to access the camera. Signed-off-by: NĂ­colas F. R. A. Prado --- Added in v4 src/lc-compliance/environment.cpp | 35 +++++++++++++++++++++++++++++++ src/lc-compliance/environment.h | 31 +++++++++++++++++++++++++++ src/lc-compliance/meson.build | 1 + 3 files changed, 67 insertions(+) create mode 100644 src/lc-compliance/environment.cpp create mode 100644 src/lc-compliance/environment.h diff --git a/src/lc-compliance/environment.cpp b/src/lc-compliance/environment.cpp new file mode 100644 index 000000000000..de7fa5bbadd1 --- /dev/null +++ b/src/lc-compliance/environment.cpp @@ -0,0 +1,35 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2021, Collabora Ltd. + * + * environment.cpp - Common environment for tests + */ + +#include "environment.h" + +Environment *Environment::instance_ = nullptr; +std::shared_ptr Environment::camera_ = nullptr; + +bool Environment::create(std::shared_ptr camera) +{ + if (instance_) + return false; + + camera_ = camera; + instance_ = new Environment; + return true; +} + +void Environment::destroy() +{ + if (!camera_) + return; + + camera_->release(); + camera_.reset(); +} + +Environment *Environment::instance() +{ + return instance_; +} diff --git a/src/lc-compliance/environment.h b/src/lc-compliance/environment.h new file mode 100644 index 000000000000..f4832d371b6c --- /dev/null +++ b/src/lc-compliance/environment.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2021, Collabora Ltd. + * + * environment.h - Common environment for tests + */ +#ifndef __LC_COMPLIANCE_ENVIRONMENT_H__ +#define __LC_COMPLIANCE_ENVIRONMENT_H__ + +#include + +using namespace libcamera; + +class Environment +{ +public: + static bool create(std::shared_ptr camera); + void destroy(); + + static Environment *instance(); + + std::shared_ptr camera() const { return camera_; } + +private: + Environment() {}; + + static Environment *instance_; + static std::shared_ptr camera_; +}; + +#endif /* __LC_COMPLIANCE_ENVIRONMENT_H__ */ diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build index a2bfcceb1259..c287017575bd 100644 --- a/src/lc-compliance/meson.build +++ b/src/lc-compliance/meson.build @@ -14,6 +14,7 @@ lc_compliance_sources = files([ '../cam/options.cpp', 'main.cpp', 'results.cpp', + 'environment.cpp', 'simple_capture.cpp', 'single_stream.cpp', ])