From d98af71eaa3f28f5e49456dd1e3462e1580463f5 Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Fri, 19 Nov 2021 16:05:58 +0100 Subject: libcamera: framebuffer: Make FrameBuffer::cancel() private FrameBuffer::cancel() is not meant to be used by applications. Move it to the FrameBuffer::Private class. Reviewed-by: Laurent Pinchart Reviewed-by: Kieran Bingham Signed-off-by: Dorota Czaplejewicz [Kieran: Handle rebase] Signed-off-by: Kieran Bingham --- include/libcamera/framebuffer.h | 2 -- include/libcamera/internal/framebuffer.h | 2 ++ src/libcamera/framebuffer.cpp | 16 ++++++++-------- src/libcamera/pipeline/ipu3/ipu3.cpp | 5 +++-- src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 2 +- src/libcamera/pipeline/vimc/vimc.cpp | 3 ++- src/libcamera/request.cpp | 2 +- 7 files changed, 17 insertions(+), 15 deletions(-) diff --git a/include/libcamera/framebuffer.h b/include/libcamera/framebuffer.h index de172d97..3b1118d1 100644 --- a/include/libcamera/framebuffer.h +++ b/include/libcamera/framebuffer.h @@ -71,8 +71,6 @@ public: std::unique_ptr releaseFence(); - void cancel() { metadata_.status = FrameMetadata::FrameCancelled; } - private: LIBCAMERA_DISABLE_COPY_AND_MOVE(FrameBuffer) diff --git a/include/libcamera/internal/framebuffer.h b/include/libcamera/internal/framebuffer.h index 97dca963..8a9cc98e 100644 --- a/include/libcamera/internal/framebuffer.h +++ b/include/libcamera/internal/framebuffer.h @@ -31,6 +31,8 @@ public: Fence *fence() const { return fence_.get(); } void setFence(std::unique_ptr fence) { fence_ = std::move(fence); } + void cancel() { LIBCAMERA_O_PTR()->metadata_.status = FrameMetadata::FrameCancelled; } + private: std::unique_ptr fence_; Request *request_; diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp index 142e2af7..7be18560 100644 --- a/src/libcamera/framebuffer.cpp +++ b/src/libcamera/framebuffer.cpp @@ -186,6 +186,14 @@ FrameBuffer::Private::~Private() * fence and handle it opportunely before using the buffer again. */ +/** + * \fn FrameBuffer::Private::cancel() + * \brief Marks the buffer as cancelled + * + * If a buffer is not used by a request, it shall be marked as cancelled to + * indicate that the metadata is invalid. + */ + /** * \class FrameBuffer * \brief Frame buffer data and its associated dynamic metadata @@ -407,12 +415,4 @@ std::unique_ptr FrameBuffer::releaseFence() return std::move(_d()->fence_); } -/** - * \fn FrameBuffer::cancel() - * \brief Marks the buffer as cancelled - * - * If a buffer is not used by a request, it shall be marked as cancelled to - * indicate that the metadata is invalid. - */ - } /* namespace libcamera */ diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index 9f113171..fd989e61 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -28,6 +28,7 @@ #include "libcamera/internal/camera_sensor.h" #include "libcamera/internal/delayed_controls.h" #include "libcamera/internal/device_enumerator.h" +#include "libcamera/internal/framebuffer.h" #include "libcamera/internal/ipa_manager.h" #include "libcamera/internal/media_device.h" #include "libcamera/internal/pipeline_handler.h" @@ -836,7 +837,7 @@ void IPU3CameraData::cancelPendingRequests() for (auto it : request->buffers()) { FrameBuffer *buffer = it.second; - buffer->cancel(); + buffer->_d()->cancel(); pipe()->completeBuffer(request, buffer); } @@ -1356,7 +1357,7 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer) if (buffer->metadata().status == FrameMetadata::FrameCancelled) { for (auto it : request->buffers()) { FrameBuffer *b = it.second; - b->cancel(); + b->_d()->cancel(); pipe()->completeBuffer(request, b); } diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index d6148724..acc0beca 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -1907,7 +1907,7 @@ void RPiCameraData::clearIncompleteRequests() * request? If not, do so now. */ if (buffer->request()) { - buffer->cancel(); + buffer->_d()->cancel(); pipe()->completeBuffer(request, buffer); } } diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index fff95a34..c3e33ecf 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -32,6 +32,7 @@ #include "libcamera/internal/camera.h" #include "libcamera/internal/camera_sensor.h" #include "libcamera/internal/device_enumerator.h" +#include "libcamera/internal/framebuffer.h" #include "libcamera/internal/ipa_manager.h" #include "libcamera/internal/media_device.h" #include "libcamera/internal/pipeline_handler.h" @@ -574,7 +575,7 @@ void VimcCameraData::bufferReady(FrameBuffer *buffer) if (buffer->metadata().status == FrameMetadata::FrameCancelled) { for (auto it : request->buffers()) { FrameBuffer *b = it.second; - b->cancel(); + b->_d()->cancel(); pipe->completeBuffer(request, b); } diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp index 9c8da6ca..5704972d 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -129,7 +129,7 @@ void Request::Private::doCancelRequest() Request *request = _o(); for (FrameBuffer *buffer : pending_) { - buffer->cancel(); + buffer->_d()->cancel(); camera_->bufferCompleted.emit(request, buffer); } -- cgit v1.2.1