diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2024-01-20 19:34:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-20 19:34:32 +0100 |
commit | 23fd1041c1373aea8ac36236c8bc681f9483d25d (patch) | |
tree | 116693463c6c32b2eab47adc2262526218018a41 /src/core/hle/service/nvnflinger/nvnflinger.cpp | |
parent | Merge pull request #12713 from shinra-electric/mvk-127 (diff) | |
parent | vi: check layer state before opening or closing (diff) | |
download | yuzu-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.cpp | 16 |
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) { |