From d205dee0a62c1310b6119175ef4f1963202f8a8a Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 8 Jan 2018 18:29:43 -0500 Subject: NV: Give each display its own vsync event. --- src/core/hle/service/vi/vi.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/core/hle/service/vi/vi.h') diff --git a/src/core/hle/service/vi/vi.h b/src/core/hle/service/vi/vi.h index a83cd4902..029bd6831 100644 --- a/src/core/hle/service/vi/vi.h +++ b/src/core/hle/service/vi/vi.h @@ -39,7 +39,9 @@ public: const IGBPBuffer& RequestBuffer(u32 slot) const; void QueueBuffer(u32 slot); - u32 GetId() const { return id; } + u32 GetId() const { + return id; + } private: u32 id; @@ -65,10 +67,14 @@ struct Layer { }; struct Display { - std::string name; + Display(u64 id, std::string name); + ~Display() = default; + u64 id; + std::string name; std::vector layers; + Kernel::SharedPtr vsync_event; }; class NVFlinger { @@ -85,8 +91,11 @@ public: /// Gets the buffer queue id of the specified layer in the specified display. u32 GetBufferQueueId(u64 display_id, u64 layer_id); + /// Gets the vsync event for the specified display. + Kernel::SharedPtr GetVsyncEvent(u64 display_id); + /// Obtains a buffer queue identified by the id. - std::shared_ptr GetBufferQueue(u32 id); + std::shared_ptr GetBufferQueue(u32 id) const; private: /// Returns the display identified by the specified id. @@ -119,7 +128,6 @@ private: void OpenLayer(Kernel::HLERequestContext& ctx); void GetDisplayVsyncEvent(Kernel::HLERequestContext& ctx); - Kernel::SharedPtr vsync_event; std::shared_ptr nv_flinger; }; -- cgit v1.2.3