[RFC,v3,20/21] apps: lc-compliance: Make `EventLoop` a member
diff mbox series

Message ID 20250130115001.1129305-21-pobrn@protonmail.com
State New
Headers show
Series
  • apps: lc-compliance: Multi-stream tests
Related show

Commit Message

Barnabás Pőcze Jan. 30, 2025, 11:51 a.m. UTC
Instead of creating an `EventLoop` in each `run()` invocation
and setting a member pointer to the on-stack object, simply
make it a member variable.

Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
---
 src/apps/lc-compliance/helpers/capture.cpp | 11 ++++-------
 src/apps/lc-compliance/helpers/capture.h   |  2 +-
 2 files changed, 5 insertions(+), 8 deletions(-)

Comments

Jacopo Mondi Feb. 6, 2025, 5:34 p.m. UTC | #1
Hi Barnabás

On Thu, Jan 30, 2025 at 11:51:46AM +0000, Barnabás Pőcze wrote:
> Instead of creating an `EventLoop` in each `run()` invocation
> and setting a member pointer to the on-stack object, simply
> make it a member variable.
>
> Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>

I wonder if this could be merged with 16/21

Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>

Thanks
  j

> ---
>  src/apps/lc-compliance/helpers/capture.cpp | 11 ++++-------
>  src/apps/lc-compliance/helpers/capture.h   |  2 +-
>  2 files changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/src/apps/lc-compliance/helpers/capture.cpp b/src/apps/lc-compliance/helpers/capture.cpp
> index 5032470d9..13a5e3f33 100644
> --- a/src/apps/lc-compliance/helpers/capture.cpp
> +++ b/src/apps/lc-compliance/helpers/capture.cpp
> @@ -69,16 +69,13 @@ void Capture::run(unsigned int captureLimit, std::optional<unsigned int> queueLi
>
>  	captureCount_ = queueCount_ = 0;
>
> -	EventLoop loop;
> -	loop_ = &loop;
> -
>  	start();
>  	prepareRequests();
>
>  	for (const auto &request : requests_)
>  		queueRequest(request.get());
>
> -	EXPECT_EQ(loop_->exec(), 0);
> +	EXPECT_EQ(loop_.exec(), 0);
>
>  	stop();
>
> @@ -140,7 +137,7 @@ void Capture::requestComplete(Request *request)
>  {
>  	captureCount_++;
>  	if (captureCount_ >= captureLimit_) {
> -		loop_->exit(0);
> +		loop_.exit(0);
>  		return;
>  	}
>
> @@ -170,7 +167,7 @@ void Capture::start()
>  	camera_->requestCompleted.connect(this, [this](libcamera::Request *request) {
>  		/* Runs in the CameraManager thread. */
>
> -		loop_->callLater([this, request] {
> +		loop_.callLater([this, request] {
>  			/* Run handler in the context of the event loop. */
>  			requestComplete(request);
>  		}, reinterpret_cast<std::uintptr_t>(this));
> @@ -190,7 +187,7 @@ void Capture::stop()
>
>  	requests_.clear();
>
> -	loop_->cancelLater(reinterpret_cast<std::uintptr_t>(this));
> +	loop_.cancelLater(reinterpret_cast<std::uintptr_t>(this));
>
>  	for (const auto &cfg : *config_) {
>  		int ret = allocator_.free(cfg.stream());
> diff --git a/src/apps/lc-compliance/helpers/capture.h b/src/apps/lc-compliance/helpers/capture.h
> index dacce1fe2..50dc37c28 100644
> --- a/src/apps/lc-compliance/helpers/capture.h
> +++ b/src/apps/lc-compliance/helpers/capture.h
> @@ -38,7 +38,7 @@ private:
>  	std::unique_ptr<libcamera::CameraConfiguration> config_;
>  	std::vector<std::unique_ptr<libcamera::Request>> requests_;
>
> -	EventLoop *loop_ = nullptr;
> +	EventLoop loop_;
>  	unsigned int captureLimit_ = 0;
>  	std::optional<unsigned int> queueLimit_;
>  	unsigned int captureCount_ = 0;
> --
> 2.48.1
>
>

Patch
diff mbox series

diff --git a/src/apps/lc-compliance/helpers/capture.cpp b/src/apps/lc-compliance/helpers/capture.cpp
index 5032470d9..13a5e3f33 100644
--- a/src/apps/lc-compliance/helpers/capture.cpp
+++ b/src/apps/lc-compliance/helpers/capture.cpp
@@ -69,16 +69,13 @@  void Capture::run(unsigned int captureLimit, std::optional<unsigned int> queueLi
 
 	captureCount_ = queueCount_ = 0;
 
-	EventLoop loop;
-	loop_ = &loop;
-
 	start();
 	prepareRequests();
 
 	for (const auto &request : requests_)
 		queueRequest(request.get());
 
-	EXPECT_EQ(loop_->exec(), 0);
+	EXPECT_EQ(loop_.exec(), 0);
 
 	stop();
 
@@ -140,7 +137,7 @@  void Capture::requestComplete(Request *request)
 {
 	captureCount_++;
 	if (captureCount_ >= captureLimit_) {
-		loop_->exit(0);
+		loop_.exit(0);
 		return;
 	}
 
@@ -170,7 +167,7 @@  void Capture::start()
 	camera_->requestCompleted.connect(this, [this](libcamera::Request *request) {
 		/* Runs in the CameraManager thread. */
 
-		loop_->callLater([this, request] {
+		loop_.callLater([this, request] {
 			/* Run handler in the context of the event loop. */
 			requestComplete(request);
 		}, reinterpret_cast<std::uintptr_t>(this));
@@ -190,7 +187,7 @@  void Capture::stop()
 
 	requests_.clear();
 
-	loop_->cancelLater(reinterpret_cast<std::uintptr_t>(this));
+	loop_.cancelLater(reinterpret_cast<std::uintptr_t>(this));
 
 	for (const auto &cfg : *config_) {
 		int ret = allocator_.free(cfg.stream());
diff --git a/src/apps/lc-compliance/helpers/capture.h b/src/apps/lc-compliance/helpers/capture.h
index dacce1fe2..50dc37c28 100644
--- a/src/apps/lc-compliance/helpers/capture.h
+++ b/src/apps/lc-compliance/helpers/capture.h
@@ -38,7 +38,7 @@  private:
 	std::unique_ptr<libcamera::CameraConfiguration> config_;
 	std::vector<std::unique_ptr<libcamera::Request>> requests_;
 
-	EventLoop *loop_ = nullptr;
+	EventLoop loop_;
 	unsigned int captureLimit_ = 0;
 	std::optional<unsigned int> queueLimit_;
 	unsigned int captureCount_ = 0;