diff options
author | bunnei <bunneidev@gmail.com> | 2022-10-02 12:02:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-02 12:02:59 +0200 |
commit | 80a3a731237472d8d2141243ca322ccf3276483c (patch) | |
tree | eafea51bbdb8d7ceb9e69cd2d9b1156f1f3c3b9b /src/core/hle/service/vi/display/vi_display.cpp | |
parent | Merge pull request #6598 from FernandoS27/falklands-are-british (diff) | |
parent | service: vi: Retrieve vsync event once per display (diff) | |
download | yuzu-80a3a731237472d8d2141243ca322ccf3276483c.tar yuzu-80a3a731237472d8d2141243ca322ccf3276483c.tar.gz yuzu-80a3a731237472d8d2141243ca322ccf3276483c.tar.bz2 yuzu-80a3a731237472d8d2141243ca322ccf3276483c.tar.lz yuzu-80a3a731237472d8d2141243ca322ccf3276483c.tar.xz yuzu-80a3a731237472d8d2141243ca322ccf3276483c.tar.zst yuzu-80a3a731237472d8d2141243ca322ccf3276483c.zip |
Diffstat (limited to 'src/core/hle/service/vi/display/vi_display.cpp')
-rw-r--r-- | src/core/hle/service/vi/display/vi_display.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/core/hle/service/vi/display/vi_display.cpp b/src/core/hle/service/vi/display/vi_display.cpp index b34febb50..aa49aa775 100644 --- a/src/core/hle/service/vi/display/vi_display.cpp +++ b/src/core/hle/service/vi/display/vi_display.cpp @@ -19,6 +19,7 @@ #include "core/hle/service/nvflinger/hos_binder_driver_server.h" #include "core/hle/service/vi/display/vi_display.h" #include "core/hle/service/vi/layer/vi_layer.h" +#include "core/hle/service/vi/vi_results.h" namespace Service::VI { @@ -55,8 +56,18 @@ const Layer& Display::GetLayer(std::size_t index) const { return *layers.at(index); } -Kernel::KReadableEvent& Display::GetVSyncEvent() { - return vsync_event->GetReadableEvent(); +ResultVal<Kernel::KReadableEvent*> Display::GetVSyncEvent() { + if (got_vsync_event) { + return ResultPermissionDenied; + } + + got_vsync_event = true; + + return GetVSyncEventUnchecked(); +} + +Kernel::KReadableEvent* Display::GetVSyncEventUnchecked() { + return &vsync_event->GetReadableEvent(); } void Display::SignalVSyncEvent() { |