summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/nvnflinger/nvnflinger.cpp
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2024-01-20 19:34:32 +0100
committerGitHub <noreply@github.com>2024-01-20 19:34:32 +0100
commit23fd1041c1373aea8ac36236c8bc681f9483d25d (patch)
tree116693463c6c32b2eab47adc2262526218018a41 /src/core/hle/service/nvnflinger/nvnflinger.cpp
parentMerge pull request #12713 from shinra-electric/mvk-127 (diff)
parentvi: check layer state before opening or closing (diff)
downloadyuzu-23fd1041c1373aea8ac36236c8bc681f9483d25d.tar
yuzu-23fd1041c1373aea8ac36236c8bc681f9483d25d.tar.gz
yuzu-23fd1041c1373aea8ac36236c8bc681f9483d25d.tar.bz2
yuzu-23fd1041c1373aea8ac36236c8bc681f9483d25d.tar.lz
yuzu-23fd1041c1373aea8ac36236c8bc681f9483d25d.tar.xz
yuzu-23fd1041c1373aea8ac36236c8bc681f9483d25d.tar.zst
yuzu-23fd1041c1373aea8ac36236c8bc681f9483d25d.zip
Diffstat (limited to 'src/core/hle/service/nvnflinger/nvnflinger.cpp')
-rw-r--r--src/core/hle/service/nvnflinger/nvnflinger.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/core/hle/service/nvnflinger/nvnflinger.cpp b/src/core/hle/service/nvnflinger/nvnflinger.cpp
index 0469110e8..af6591370 100644
--- a/src/core/hle/service/nvnflinger/nvnflinger.cpp
+++ b/src/core/hle/service/nvnflinger/nvnflinger.cpp
@@ -112,9 +112,7 @@ void Nvnflinger::ShutdownLayers() {
{
const auto lock_guard = Lock();
for (auto& display : displays) {
- for (size_t layer = 0; layer < display.GetNumLayers(); ++layer) {
- display.GetLayer(layer).GetConsumer().Abandon();
- }
+ display.Abandon();
}
is_abandoned = true;
@@ -176,24 +174,28 @@ void Nvnflinger::CreateLayerAtId(VI::Display& display, u64 layer_id) {
display.CreateLayer(layer_id, buffer_id, nvdrv->container);
}
-void Nvnflinger::OpenLayer(u64 layer_id) {
+bool Nvnflinger::OpenLayer(u64 layer_id) {
const auto lock_guard = Lock();
for (auto& display : displays) {
if (auto* layer = display.FindLayer(layer_id); layer) {
- layer->Open();
+ return layer->Open();
}
}
+
+ return false;
}
-void Nvnflinger::CloseLayer(u64 layer_id) {
+bool Nvnflinger::CloseLayer(u64 layer_id) {
const auto lock_guard = Lock();
for (auto& display : displays) {
if (auto* layer = display.FindLayer(layer_id); layer) {
- layer->Close();
+ return layer->Close();
}
}
+
+ return false;
}
void Nvnflinger::DestroyLayer(u64 layer_id) {