[libcamera-devel] [PATCH v1 1/6] libcamera: Use simpler Signal::disconnect() function

Umang Jain umang.jain at ideasonboard.com
Mon Aug 30 13:30:23 CEST 2021


Hi Laurent,

On 8/27/21 8:08 AM, Laurent Pinchart wrote:
> When disconnecting a signal from a receiver, it is usually not necessary
> to specify the receiver's slot function explicitly, as the signal is
> often connected to a single slot for a given receiver. We can thus use a
> simpler version of Signal::disconnect() that takes a pointer to the
> receiver object only. This reduces code size, as the disconnect()
> function is a template function.


Ah, interesting, I was ignorant about this particular existence of 
disconnect()

>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>


Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>

> ---
>   src/lc-compliance/simple_capture.cpp | 2 +-
>   src/libcamera/camera_manager.cpp     | 2 +-
>   src/qcam/main_window.cpp             | 4 ++--
>   test/camera/camera_reconfigure.cpp   | 2 +-
>   4 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/src/lc-compliance/simple_capture.cpp b/src/lc-compliance/simple_capture.cpp
> index 25097f28a603..ab5cb35c11f2 100644
> --- a/src/lc-compliance/simple_capture.cpp
> +++ b/src/lc-compliance/simple_capture.cpp
> @@ -62,7 +62,7 @@ void SimpleCapture::stop()
>   
>   	camera_->stop();
>   
> -	camera_->requestCompleted.disconnect(this, &SimpleCapture::requestComplete);
> +	camera_->requestCompleted.disconnect(this);
>   
>   	Stream *stream = config_->at(0).stream();
>   	allocator_->free(stream);
> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
> index fe80a46f5d20..08457030b6f7 100644
> --- a/src/libcamera/camera_manager.cpp
> +++ b/src/libcamera/camera_manager.cpp
> @@ -170,7 +170,7 @@ void CameraManager::Private::createPipelineHandlers()
>   
>   void CameraManager::Private::cleanup()
>   {
> -	enumerator_->devicesAdded.disconnect(this, &Private::createPipelineHandlers);
> +	enumerator_->devicesAdded.disconnect(this);
>   
>   	/*
>   	 * Release all references to cameras to ensure they all get destroyed
> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
> index 1adaae60d83b..dea81bb43774 100644
> --- a/src/qcam/main_window.cpp
> +++ b/src/qcam/main_window.cpp
> @@ -531,7 +531,7 @@ int MainWindow::startCapture()
>   	return 0;
>   
>   error_disconnect:
> -	camera_->requestCompleted.disconnect(this, &MainWindow::requestComplete);
> +	camera_->requestCompleted.disconnect(this);
>   	camera_->stop();
>   
>   error:
> @@ -571,7 +571,7 @@ void MainWindow::stopCapture()
>   	if (ret)
>   		qInfo() << "Failed to stop capture";
>   
> -	camera_->requestCompleted.disconnect(this, &MainWindow::requestComplete);
> +	camera_->requestCompleted.disconnect(this);
>   
>   	for (auto &iter : mappedBuffers_) {
>   		const Span<uint8_t> &buffer = iter.second;
> diff --git a/test/camera/camera_reconfigure.cpp b/test/camera/camera_reconfigure.cpp
> index 5adef16e1c9e..48d61c00709c 100644
> --- a/test/camera/camera_reconfigure.cpp
> +++ b/test/camera/camera_reconfigure.cpp
> @@ -130,7 +130,7 @@ private:
>   			return TestFail;
>   		}
>   
> -		camera_->requestCompleted.disconnect(this, &CameraReconfigure::requestComplete);
> +		camera_->requestCompleted.disconnect(this);
>   
>   		requests_.clear();
>   


More information about the libcamera-devel mailing list