diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2022-06-27 21:45:33 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2022-10-06 21:00:53 +0200 |
commit | 8a372035db35465b8241d1e13eeb979e8682bb3f (patch) | |
tree | 80ca9787dd65b32b028e429e0c591473ee1d2095 /src | |
parent | Core: Fix get nvmap object random crash (diff) | |
download | yuzu-8a372035db35465b8241d1e13eeb979e8682bb3f.tar yuzu-8a372035db35465b8241d1e13eeb979e8682bb3f.tar.gz yuzu-8a372035db35465b8241d1e13eeb979e8682bb3f.tar.bz2 yuzu-8a372035db35465b8241d1e13eeb979e8682bb3f.tar.lz yuzu-8a372035db35465b8241d1e13eeb979e8682bb3f.tar.xz yuzu-8a372035db35465b8241d1e13eeb979e8682bb3f.tar.zst yuzu-8a372035db35465b8241d1e13eeb979e8682bb3f.zip |
Diffstat (limited to 'src')
4 files changed, 5 insertions, 5 deletions
diff --git a/src/core/hle/service/nvdrv/core/nvmap.cpp b/src/core/hle/service/nvdrv/core/nvmap.cpp index dd30e156e..f811b66a0 100644 --- a/src/core/hle/service/nvdrv/core/nvmap.cpp +++ b/src/core/hle/service/nvdrv/core/nvmap.cpp @@ -207,14 +207,14 @@ void NvMap::UnpinHandle(Handle::Id handle) { } } -void NvMap::DuplicateHandle(Handle::Id handle) { +void NvMap::DuplicateHandle(Handle::Id handle, bool internal_session) { auto handle_description{GetHandle(handle)}; if (!handle_description) { LOG_CRITICAL(Service_NVDRV, "Unregistered handle!"); return; } - auto result = handle_description->Duplicate(false); + auto result = handle_description->Duplicate(internal_session); if (result != NvResult::Success) { LOG_CRITICAL(Service_NVDRV, "Could not duplicate handle!"); } diff --git a/src/core/hle/service/nvdrv/core/nvmap.h b/src/core/hle/service/nvdrv/core/nvmap.h index b6613a521..ef2df3ad7 100644 --- a/src/core/hle/service/nvdrv/core/nvmap.h +++ b/src/core/hle/service/nvdrv/core/nvmap.h @@ -165,7 +165,7 @@ public: /** * @brief Tries to duplicate a handle */ - void DuplicateHandle(Handle::Id handle); + void DuplicateHandle(Handle::Id handle, bool internal_session = false); /** * @brief Tries to free a handle and remove a single dupe diff --git a/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp b/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp index a0330ab4a..1ce67c771 100644 --- a/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp +++ b/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp @@ -136,7 +136,7 @@ Status BufferQueueConsumer::ReleaseBuffer(s32 slot, u64 frame_number, const Fenc slots[slot].buffer_state = BufferState::Free; - nvmap.FreeHandle(slots[slot].graphic_buffer->BufferId(), false); + nvmap.FreeHandle(slots[slot].graphic_buffer->BufferId(), true); listener = core->connected_producer_listener; diff --git a/src/core/hle/service/nvflinger/buffer_queue_producer.cpp b/src/core/hle/service/nvflinger/buffer_queue_producer.cpp index a4e46964c..d4ab23a10 100644 --- a/src/core/hle/service/nvflinger/buffer_queue_producer.cpp +++ b/src/core/hle/service/nvflinger/buffer_queue_producer.cpp @@ -532,7 +532,7 @@ Status BufferQueueProducer::QueueBuffer(s32 slot, const QueueBufferInput& input, item.is_droppable = core->dequeue_buffer_cannot_block || async; item.swap_interval = swap_interval; - nvmap.DuplicateHandle(item.graphic_buffer->BufferId()); + nvmap.DuplicateHandle(item.graphic_buffer->BufferId(), true); sticky_transform = sticky_transform_; |