summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/nvflinger
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2022-10-25 23:42:02 +0200
committerLiam <byteslice@airmail.cc>2022-10-27 14:27:38 +0200
commitcdb9fe978ff29b1de2256f0d0cece550195f3fef (patch)
tree0ae5fbd5632046b5f711bc9f302b0ede1f2cce88 /src/core/hle/service/nvflinger
parentMerge pull request #9125 from liamwhite/dummy-scheduler (diff)
downloadyuzu-cdb9fe978ff29b1de2256f0d0cece550195f3fef.tar
yuzu-cdb9fe978ff29b1de2256f0d0cece550195f3fef.tar.gz
yuzu-cdb9fe978ff29b1de2256f0d0cece550195f3fef.tar.bz2
yuzu-cdb9fe978ff29b1de2256f0d0cece550195f3fef.tar.lz
yuzu-cdb9fe978ff29b1de2256f0d0cece550195f3fef.tar.xz
yuzu-cdb9fe978ff29b1de2256f0d0cece550195f3fef.tar.zst
yuzu-cdb9fe978ff29b1de2256f0d0cece550195f3fef.zip
Diffstat (limited to 'src/core/hle/service/nvflinger')
-rw-r--r--src/core/hle/service/nvflinger/nvflinger.cpp13
-rw-r--r--src/core/hle/service/nvflinger/nvflinger.h5
2 files changed, 18 insertions, 0 deletions
diff --git a/src/core/hle/service/nvflinger/nvflinger.cpp b/src/core/hle/service/nvflinger/nvflinger.cpp
index dad93b38e..c3af12c90 100644
--- a/src/core/hle/service/nvflinger/nvflinger.cpp
+++ b/src/core/hle/service/nvflinger/nvflinger.cpp
@@ -138,6 +138,19 @@ std::optional<u64> NVFlinger::OpenDisplay(std::string_view name) {
return itr->GetID();
}
+bool NVFlinger::CloseDisplay(u64 display_id) {
+ const auto lock_guard = Lock();
+ auto* const display = FindDisplay(display_id);
+
+ if (display == nullptr) {
+ return false;
+ }
+
+ display->Reset();
+
+ return true;
+}
+
std::optional<u64> NVFlinger::CreateLayer(u64 display_id) {
const auto lock_guard = Lock();
auto* const display = FindDisplay(display_id);
diff --git a/src/core/hle/service/nvflinger/nvflinger.h b/src/core/hle/service/nvflinger/nvflinger.h
index b8191c595..460bef976 100644
--- a/src/core/hle/service/nvflinger/nvflinger.h
+++ b/src/core/hle/service/nvflinger/nvflinger.h
@@ -58,6 +58,11 @@ public:
/// If an invalid display name is provided, then an empty optional is returned.
[[nodiscard]] std::optional<u64> OpenDisplay(std::string_view name);
+ /// Closes the specified display by its ID.
+ ///
+ /// Returns false if an invalid display ID is provided.
+ [[nodiscard]] bool CloseDisplay(u64 display_id);
+
/// Creates a layer on the specified display and returns the layer ID.
///
/// If an invalid display ID is specified, then an empty optional is returned.