The FrameBuffer constructor takes a list of planes as an std::vector. The caller may stores the planes in a different type of container, resulting in the needless allocation of a temporary vector. Replace it with a span. Suggested-by: Daniel Rákos <daniel.rakos@rastergrid.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2020, Google Inc.
|
|
*
|
|
* Internal frame buffer handling
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <stdint.h>
|
|
#include <utility>
|
|
|
|
#include <libcamera/base/class.h>
|
|
#include <libcamera/base/span.h>
|
|
|
|
#include <libcamera/fence.h>
|
|
#include <libcamera/framebuffer.h>
|
|
|
|
namespace libcamera {
|
|
|
|
class FrameBuffer::Private : public Extensible::Private
|
|
{
|
|
LIBCAMERA_DECLARE_PUBLIC(FrameBuffer)
|
|
|
|
public:
|
|
Private(Span<const Plane> planes, uint64_t cookie = 0);
|
|
virtual ~Private();
|
|
|
|
void setRequest(Request *request) { request_ = request; }
|
|
bool isContiguous() const { return isContiguous_; }
|
|
|
|
Fence *fence() const { return fence_.get(); }
|
|
void setFence(std::unique_ptr<Fence> fence) { fence_ = std::move(fence); }
|
|
|
|
void cancel() { metadata_.status = FrameMetadata::FrameCancelled; }
|
|
|
|
FrameMetadata &metadata() { return metadata_; }
|
|
|
|
private:
|
|
std::vector<Plane> planes_;
|
|
FrameMetadata metadata_;
|
|
uint64_t cookie_;
|
|
|
|
std::unique_ptr<Fence> fence_;
|
|
Request *request_;
|
|
bool isContiguous_;
|
|
};
|
|
|
|
} /* namespace libcamera */
|