diff options
author | bunnei <bunneidev@gmail.com> | 2018-07-17 06:05:13 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2018-07-17 06:26:23 +0200 |
commit | 170e19d4eab455ad4d28ad72799cc6687692392d (patch) | |
tree | ab2c73b4cd29b32e6c79c0274d65fe7cee7f6070 /src/core/hle/service/nvflinger/buffer_queue.cpp | |
parent | Merge pull request #669 from lioncash/dynarmic (diff) | |
download | yuzu-170e19d4eab455ad4d28ad72799cc6687692392d.tar yuzu-170e19d4eab455ad4d28ad72799cc6687692392d.tar.gz yuzu-170e19d4eab455ad4d28ad72799cc6687692392d.tar.bz2 yuzu-170e19d4eab455ad4d28ad72799cc6687692392d.tar.lz yuzu-170e19d4eab455ad4d28ad72799cc6687692392d.tar.xz yuzu-170e19d4eab455ad4d28ad72799cc6687692392d.tar.zst yuzu-170e19d4eab455ad4d28ad72799cc6687692392d.zip |
Diffstat (limited to 'src/core/hle/service/nvflinger/buffer_queue.cpp')
-rw-r--r-- | src/core/hle/service/nvflinger/buffer_queue.cpp | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/src/core/hle/service/nvflinger/buffer_queue.cpp b/src/core/hle/service/nvflinger/buffer_queue.cpp index f7f2fe1b2..a181cd2dc 100644 --- a/src/core/hle/service/nvflinger/buffer_queue.cpp +++ b/src/core/hle/service/nvflinger/buffer_queue.cpp @@ -13,8 +13,8 @@ namespace Service { namespace NVFlinger { BufferQueue::BufferQueue(u32 id, u64 layer_id) : id(id), layer_id(layer_id) { - native_handle = Kernel::Event::Create(Kernel::ResetType::OneShot, "BufferQueue NativeHandle"); - native_handle->Signal(); + buffer_wait_event = + Kernel::Event::Create(Kernel::ResetType::Sticky, "BufferQueue NativeHandle"); } void BufferQueue::SetPreallocatedBuffer(u32 slot, IGBPBuffer& igbp_buffer) { @@ -26,10 +26,7 @@ void BufferQueue::SetPreallocatedBuffer(u32 slot, IGBPBuffer& igbp_buffer) { LOG_WARNING(Service, "Adding graphics buffer {}", slot); queue.emplace_back(buffer); - - if (buffer_wait_event) { - buffer_wait_event->Signal(); - } + buffer_wait_event->Signal(); } boost::optional<u32> BufferQueue::DequeueBuffer(u32 width, u32 height) { @@ -48,8 +45,6 @@ boost::optional<u32> BufferQueue::DequeueBuffer(u32 width, u32 height) { return boost::none; } - buffer_wait_event = nullptr; - itr->status = Buffer::Status::Dequeued; return itr->slot; } @@ -88,9 +83,7 @@ void BufferQueue::ReleaseBuffer(u32 slot) { ASSERT(itr->status == Buffer::Status::Acquired); itr->status = Buffer::Status::Free; - if (buffer_wait_event) { - buffer_wait_event->Signal(); - } + buffer_wait_event->Signal(); } u32 BufferQueue::Query(QueryType type) { @@ -106,10 +99,5 @@ u32 BufferQueue::Query(QueryType type) { return 0; } -void BufferQueue::SetBufferWaitEvent(Kernel::SharedPtr<Kernel::Event>&& wait_event) { - ASSERT_MSG(!buffer_wait_event, "buffer_wait_event only supports a single waiting thread!"); - buffer_wait_event = std::move(wait_event); -} - } // namespace NVFlinger } // namespace Service |