Merge pull request #9345 from lioncash/fence

consumer_base: Pass std::shared_ptr by const reference
This commit is contained in:
liamwhite 2022-11-29 08:26:25 -05:00 committed by GitHub
commit a7f1fa7bfc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 15 additions and 16 deletions

View File

@ -39,7 +39,7 @@ Status BufferItemConsumer::AcquireBuffer(BufferItem* item, std::chrono::nanoseco
return Status::NoError; return Status::NoError;
} }
Status BufferItemConsumer::ReleaseBuffer(const BufferItem& item, Fence& release_fence) { Status BufferItemConsumer::ReleaseBuffer(const BufferItem& item, const Fence& release_fence) {
std::scoped_lock lock{mutex}; std::scoped_lock lock{mutex};
if (const auto status = AddReleaseFenceLocked(item.buf, item.graphic_buffer, release_fence); if (const auto status = AddReleaseFenceLocked(item.buf, item.graphic_buffer, release_fence);

View File

@ -22,7 +22,7 @@ public:
explicit BufferItemConsumer(std::unique_ptr<BufferQueueConsumer> consumer); explicit BufferItemConsumer(std::unique_ptr<BufferQueueConsumer> consumer);
Status AcquireBuffer(BufferItem* item, std::chrono::nanoseconds present_when, Status AcquireBuffer(BufferItem* item, std::chrono::nanoseconds present_when,
bool wait_for_fence = true); bool wait_for_fence = true);
Status ReleaseBuffer(const BufferItem& item, Fence& release_fence); Status ReleaseBuffer(const BufferItem& item, const Fence& release_fence);
}; };
} // namespace Service::android } // namespace Service::android

View File

@ -169,7 +169,7 @@ Status BufferQueueConsumer::Connect(std::shared_ptr<IConsumerListener> consumer_
return Status::NoInit; return Status::NoInit;
} }
core->consumer_listener = consumer_listener; core->consumer_listener = std::move(consumer_listener);
core->consumer_controlled_by_app = controlled_by_app; core->consumer_controlled_by_app = controlled_by_app;
return Status::NoError; return Status::NoError;

View File

@ -83,7 +83,7 @@ Status ConsumerBase::AcquireBufferLocked(BufferItem* item, std::chrono::nanoseco
} }
Status ConsumerBase::AddReleaseFenceLocked(s32 slot, Status ConsumerBase::AddReleaseFenceLocked(s32 slot,
const std::shared_ptr<GraphicBuffer> graphic_buffer, const std::shared_ptr<GraphicBuffer>& graphic_buffer,
const Fence& fence) { const Fence& fence) {
LOG_DEBUG(Service_NVFlinger, "slot={}", slot); LOG_DEBUG(Service_NVFlinger, "slot={}", slot);
@ -100,7 +100,7 @@ Status ConsumerBase::AddReleaseFenceLocked(s32 slot,
} }
Status ConsumerBase::ReleaseBufferLocked(s32 slot, Status ConsumerBase::ReleaseBufferLocked(s32 slot,
const std::shared_ptr<GraphicBuffer> graphic_buffer) { const std::shared_ptr<GraphicBuffer>& graphic_buffer) {
// If consumer no longer tracks this graphic_buffer (we received a new // If consumer no longer tracks this graphic_buffer (we received a new
// buffer on the same slot), the buffer producer is definitely no longer // buffer on the same slot), the buffer producer is definitely no longer
// tracking it. // tracking it.
@ -121,7 +121,7 @@ Status ConsumerBase::ReleaseBufferLocked(s32 slot,
} }
bool ConsumerBase::StillTracking(s32 slot, bool ConsumerBase::StillTracking(s32 slot,
const std::shared_ptr<GraphicBuffer> graphic_buffer) const { const std::shared_ptr<GraphicBuffer>& graphic_buffer) const {
if (slot < 0 || slot >= BufferQueueDefs::NUM_BUFFER_SLOTS) { if (slot < 0 || slot >= BufferQueueDefs::NUM_BUFFER_SLOTS) {
return false; return false;
} }

View File

@ -27,18 +27,18 @@ public:
protected: protected:
explicit ConsumerBase(std::unique_ptr<BufferQueueConsumer> consumer_); explicit ConsumerBase(std::unique_ptr<BufferQueueConsumer> consumer_);
virtual ~ConsumerBase(); ~ConsumerBase() override;
virtual void OnFrameAvailable(const BufferItem& item) override; void OnFrameAvailable(const BufferItem& item) override;
virtual void OnFrameReplaced(const BufferItem& item) override; void OnFrameReplaced(const BufferItem& item) override;
virtual void OnBuffersReleased() override; void OnBuffersReleased() override;
virtual void OnSidebandStreamChanged() override; void OnSidebandStreamChanged() override;
void FreeBufferLocked(s32 slot_index); void FreeBufferLocked(s32 slot_index);
Status AcquireBufferLocked(BufferItem* item, std::chrono::nanoseconds present_when); Status AcquireBufferLocked(BufferItem* item, std::chrono::nanoseconds present_when);
Status ReleaseBufferLocked(s32 slot, const std::shared_ptr<GraphicBuffer> graphic_buffer); Status ReleaseBufferLocked(s32 slot, const std::shared_ptr<GraphicBuffer>& graphic_buffer);
bool StillTracking(s32 slot, const std::shared_ptr<GraphicBuffer> graphic_buffer) const; bool StillTracking(s32 slot, const std::shared_ptr<GraphicBuffer>& graphic_buffer) const;
Status AddReleaseFenceLocked(s32 slot, const std::shared_ptr<GraphicBuffer> graphic_buffer, Status AddReleaseFenceLocked(s32 slot, const std::shared_ptr<GraphicBuffer>& graphic_buffer,
const Fence& fence); const Fence& fence);
struct Slot final { struct Slot final {

View File

@ -307,8 +307,7 @@ void NVFlinger::Compose() {
swap_interval = buffer.swap_interval; swap_interval = buffer.swap_interval;
auto fence = android::Fence::NoFence(); layer.GetConsumer().ReleaseBuffer(buffer, android::Fence::NoFence());
layer.GetConsumer().ReleaseBuffer(buffer, fence);
} }
} }