From ddcd8ebb3de0d5938b59eb62b9cf2e5bc430d820 Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Tue, 12 Feb 2019 21:48:10 +0100 Subject: libcamera: device_enumerator: Remove move() on search() return MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the std::move() call on the shared_ptr returned by the search() method and remove the std::move() call on temporary return value in pipeline handlers that use the method. Thanks to copy elision, the regular constructor of the newly created object is called, avoiding un-necessary copies. Furthermore, the use of std::move() in the return and assignment statements prevents the compiler from performing copy elision, forcing it to generate two sequences of un-necessary calls to the class' move constructor and destructor. Reviewed-by: Niklas Söderlund Reviewed-by: Laurent Pinchart Signed-off-by: Jacopo Mondi --- src/libcamera/device_enumerator.cpp | 2 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 4 ++-- src/libcamera/pipeline/uvcvideo.cpp | 2 +- src/libcamera/pipeline/vimc.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/libcamera') diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp index abbd0ef7..66819f07 100644 --- a/src/libcamera/device_enumerator.cpp +++ b/src/libcamera/device_enumerator.cpp @@ -308,7 +308,7 @@ std::shared_ptr DeviceEnumerator::search(const DeviceMatch &dm) LOG(DeviceEnumerator, Debug) << "Successful match for media device \"" << media->driver() << "\""; - return std::move(media); + return media; } } diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index 677e127d..9694d0ce 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -278,11 +278,11 @@ bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator) imgu_dm.add("ipu3-imgu 1 viewfinder"); imgu_dm.add("ipu3-imgu 1 3a stat"); - cio2_ = std::move(enumerator->search(cio2_dm)); + cio2_ = enumerator->search(cio2_dm); if (!cio2_) return false; - imgu_ = std::move(enumerator->search(imgu_dm)); + imgu_ = enumerator->search(imgu_dm); if (!imgu_) return false; diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp index b6a98657..37a3477c 100644 --- a/src/libcamera/pipeline/uvcvideo.cpp +++ b/src/libcamera/pipeline/uvcvideo.cpp @@ -139,7 +139,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator) { DeviceMatch dm("uvcvideo"); - media_ = std::move(enumerator->search(dm)); + media_ = enumerator->search(dm); if (!media_) return false; diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp index 543ff212..a93a7589 100644 --- a/src/libcamera/pipeline/vimc.cpp +++ b/src/libcamera/pipeline/vimc.cpp @@ -148,7 +148,7 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator) dm.add("RGB/YUV Input"); dm.add("Scaler"); - media_ = std::move(enumerator->search(dm)); + media_ = enumerator->search(dm); if (!media_) return false; -- cgit v1.2.1