diff options
author | bunnei <bunneidev@gmail.com> | 2020-12-17 06:09:06 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2020-12-29 06:33:34 +0100 |
commit | 6433b1dfd67f4c4f0c4b2e3742dc437a0d1e906e (patch) | |
tree | d2a9a23be1a80d9351f99d7feb7978f3c2237882 /src/core/hle/service/nvflinger/buffer_queue.h | |
parent | hle: service: Ensure system is powered on before writing IPC result. (diff) | |
download | yuzu-6433b1dfd67f4c4f0c4b2e3742dc437a0d1e906e.tar yuzu-6433b1dfd67f4c4f0c4b2e3742dc437a0d1e906e.tar.gz yuzu-6433b1dfd67f4c4f0c4b2e3742dc437a0d1e906e.tar.bz2 yuzu-6433b1dfd67f4c4f0c4b2e3742dc437a0d1e906e.tar.lz yuzu-6433b1dfd67f4c4f0c4b2e3742dc437a0d1e906e.tar.xz yuzu-6433b1dfd67f4c4f0c4b2e3742dc437a0d1e906e.tar.zst yuzu-6433b1dfd67f4c4f0c4b2e3742dc437a0d1e906e.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/service/nvflinger/buffer_queue.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/core/hle/service/nvflinger/buffer_queue.h b/src/core/hle/service/nvflinger/buffer_queue.h index e610923cb..a2f60d9eb 100644 --- a/src/core/hle/service/nvflinger/buffer_queue.h +++ b/src/core/hle/service/nvflinger/buffer_queue.h @@ -4,7 +4,9 @@ #pragma once +#include <condition_variable> #include <list> +#include <mutex> #include <optional> #include <vector> @@ -99,6 +101,7 @@ public: void CancelBuffer(u32 slot, const Service::Nvidia::MultiFence& multi_fence); std::optional<std::reference_wrapper<const Buffer>> AcquireBuffer(); void ReleaseBuffer(u32 slot); + void Connect(); void Disconnect(); u32 Query(QueryType type); @@ -106,18 +109,28 @@ public: return id; } + bool IsConnected() const { + return is_connect; + } + std::shared_ptr<Kernel::WritableEvent> GetWritableBufferWaitEvent() const; std::shared_ptr<Kernel::ReadableEvent> GetBufferWaitEvent() const; private: - u32 id; - u64 layer_id; + BufferQueue(const BufferQueue&) = delete; + + u32 id{}; + u64 layer_id{}; + std::atomic_bool is_connect{}; std::list<u32> free_buffers; std::array<Buffer, buffer_slots> buffers; std::list<u32> queue_sequence; Kernel::EventPair buffer_wait_event; + + std::mutex queue_mutex; + std::condition_variable condition; }; } // namespace Service::NVFlinger |