aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/nvflinger/buffer_queue.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-03-18 22:25:09 -0400
committerGitHub <noreply@github.com>2018-03-18 22:25:09 -0400
commit2dc3a56e9602e0bfba9bfc19f31f0433d1564ccc (patch)
tree6e49476a6c0c1a333090a01afa7a4fbfd11b8888 /src/core/hle/service/nvflinger/buffer_queue.h
parent2332a44b681473509ca67438b5b3a2bddc91a60b (diff)
parentc1c92c30f9951e41a2091770cc5bf1354fba7794 (diff)
Merge pull request #250 from bunnei/buffer-dequeue-wait
vi: TransactParcel DequeueBuffer should wait current thread
Diffstat (limited to 'src/core/hle/service/nvflinger/buffer_queue.h')
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/hle/service/nvflinger/buffer_queue.h b/src/core/hle/service/nvflinger/buffer_queue.h
index ef9732769..686eadca7 100644
--- a/src/core/hle/service/nvflinger/buffer_queue.h
+++ b/src/core/hle/service/nvflinger/buffer_queue.h
@@ -69,12 +69,13 @@ public:
};
void SetPreallocatedBuffer(u32 slot, IGBPBuffer& buffer);
- u32 DequeueBuffer(u32 pixel_format, u32 width, u32 height);
+ boost::optional<u32> DequeueBuffer(u32 width, u32 height);
const IGBPBuffer& RequestBuffer(u32 slot) const;
void QueueBuffer(u32 slot, BufferTransformFlags transform);
boost::optional<const Buffer&> AcquireBuffer();
void ReleaseBuffer(u32 slot);
u32 Query(QueryType type);
+ void SetBufferWaitEvent(Kernel::SharedPtr<Kernel::Event>&& wait_event);
u32 GetId() const {
return id;
@@ -90,6 +91,9 @@ private:
std::vector<Buffer> queue;
Kernel::SharedPtr<Kernel::Event> native_handle;
+
+ /// Used to signal waiting thread when no buffers are available
+ Kernel::SharedPtr<Kernel::Event> buffer_wait_event;
};
} // namespace NVFlinger