Loading libs/vr/libvrflinger/display_surface.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -301,6 +301,9 @@ Status<LocalChannelHandle> DirectDisplaySurface::OnCreateQueue( } direct_queue_ = producer->CreateConsumerQueue(); if (direct_queue_->metadata_size() > 0) { metadata_.reset(new uint8_t[direct_queue_->metadata_size()]); } auto status = RegisterQueue(direct_queue_); if (!status) { ALOGE( Loading Loading @@ -345,7 +348,12 @@ void DirectDisplaySurface::DequeueBuffersLocked() { while (true) { LocalHandle acquire_fence; size_t slot; auto buffer_status = direct_queue_->Dequeue(0, &slot, &acquire_fence); auto buffer_status = direct_queue_->Dequeue( 0, &slot, metadata_.get(), direct_queue_->metadata_size(), &acquire_fence); ALOGD_IF(TRACE, "DirectDisplaySurface::DequeueBuffersLocked: Dequeue with metadata_size: %zu", direct_queue_->metadata_size()); if (!buffer_status) { ALOGD_IF( TRACE > 1 && buffer_status.error() == ETIMEDOUT, Loading libs/vr/libvrflinger/display_surface.h +5 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,8 @@ class DirectDisplaySurface : public DisplaySurface { const display::SurfaceAttributes& attributes) : DisplaySurface(service, SurfaceType::Direct, surface_id, process_id, user_id, attributes), acquired_buffers_(kMaxPostedBuffers) {} acquired_buffers_(kMaxPostedBuffers), metadata_(nullptr){} std::vector<int32_t> GetQueueIds() const override; bool IsBufferAvailable(); bool IsBufferPosted(); Loading Loading @@ -179,6 +180,9 @@ class DirectDisplaySurface : public DisplaySurface { RingBuffer<AcquiredBuffer> acquired_buffers_; std::shared_ptr<ConsumerQueue> direct_queue_; // Stores metadata when it dequeue buffers from consumer queue. std::unique_ptr<uint8_t[]> metadata_; }; } // namespace dvr Loading Loading
libs/vr/libvrflinger/display_surface.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -301,6 +301,9 @@ Status<LocalChannelHandle> DirectDisplaySurface::OnCreateQueue( } direct_queue_ = producer->CreateConsumerQueue(); if (direct_queue_->metadata_size() > 0) { metadata_.reset(new uint8_t[direct_queue_->metadata_size()]); } auto status = RegisterQueue(direct_queue_); if (!status) { ALOGE( Loading Loading @@ -345,7 +348,12 @@ void DirectDisplaySurface::DequeueBuffersLocked() { while (true) { LocalHandle acquire_fence; size_t slot; auto buffer_status = direct_queue_->Dequeue(0, &slot, &acquire_fence); auto buffer_status = direct_queue_->Dequeue( 0, &slot, metadata_.get(), direct_queue_->metadata_size(), &acquire_fence); ALOGD_IF(TRACE, "DirectDisplaySurface::DequeueBuffersLocked: Dequeue with metadata_size: %zu", direct_queue_->metadata_size()); if (!buffer_status) { ALOGD_IF( TRACE > 1 && buffer_status.error() == ETIMEDOUT, Loading
libs/vr/libvrflinger/display_surface.h +5 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,8 @@ class DirectDisplaySurface : public DisplaySurface { const display::SurfaceAttributes& attributes) : DisplaySurface(service, SurfaceType::Direct, surface_id, process_id, user_id, attributes), acquired_buffers_(kMaxPostedBuffers) {} acquired_buffers_(kMaxPostedBuffers), metadata_(nullptr){} std::vector<int32_t> GetQueueIds() const override; bool IsBufferAvailable(); bool IsBufferPosted(); Loading Loading @@ -179,6 +180,9 @@ class DirectDisplaySurface : public DisplaySurface { RingBuffer<AcquiredBuffer> acquired_buffers_; std::shared_ptr<ConsumerQueue> direct_queue_; // Stores metadata when it dequeue buffers from consumer queue. std::unique_ptr<uint8_t[]> metadata_; }; } // namespace dvr Loading