diff options
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) { | |||
| 207 | } | 207 | } |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | void NvMap::DuplicateHandle(Handle::Id handle) { | 210 | void NvMap::DuplicateHandle(Handle::Id handle, bool internal_session) { |
| 211 | auto handle_description{GetHandle(handle)}; | 211 | auto handle_description{GetHandle(handle)}; |
| 212 | if (!handle_description) { | 212 | if (!handle_description) { |
| 213 | LOG_CRITICAL(Service_NVDRV, "Unregistered handle!"); | 213 | LOG_CRITICAL(Service_NVDRV, "Unregistered handle!"); |
| 214 | return; | 214 | return; |
| 215 | } | 215 | } |
| 216 | 216 | ||
| 217 | auto result = handle_description->Duplicate(false); | 217 | auto result = handle_description->Duplicate(internal_session); |
| 218 | if (result != NvResult::Success) { | 218 | if (result != NvResult::Success) { |
| 219 | LOG_CRITICAL(Service_NVDRV, "Could not duplicate handle!"); | 219 | LOG_CRITICAL(Service_NVDRV, "Could not duplicate handle!"); |
| 220 | } | 220 | } |
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: | |||
| 165 | /** | 165 | /** |
| 166 | * @brief Tries to duplicate a handle | 166 | * @brief Tries to duplicate a handle |
| 167 | */ | 167 | */ |
| 168 | void DuplicateHandle(Handle::Id handle); | 168 | void DuplicateHandle(Handle::Id handle, bool internal_session = false); |
| 169 | 169 | ||
| 170 | /** | 170 | /** |
| 171 | * @brief Tries to free a handle and remove a single dupe | 171 | * @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 | |||
| 136 | 136 | ||
| 137 | slots[slot].buffer_state = BufferState::Free; | 137 | slots[slot].buffer_state = BufferState::Free; |
| 138 | 138 | ||
| 139 | nvmap.FreeHandle(slots[slot].graphic_buffer->BufferId(), false); | 139 | nvmap.FreeHandle(slots[slot].graphic_buffer->BufferId(), true); |
| 140 | 140 | ||
| 141 | listener = core->connected_producer_listener; | 141 | listener = core->connected_producer_listener; |
| 142 | 142 | ||
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, | |||
| 532 | item.is_droppable = core->dequeue_buffer_cannot_block || async; | 532 | item.is_droppable = core->dequeue_buffer_cannot_block || async; |
| 533 | item.swap_interval = swap_interval; | 533 | item.swap_interval = swap_interval; |
| 534 | 534 | ||
| 535 | nvmap.DuplicateHandle(item.graphic_buffer->BufferId()); | 535 | nvmap.DuplicateHandle(item.graphic_buffer->BufferId(), true); |
| 536 | 536 | ||
| 537 | sticky_transform = sticky_transform_; | 537 | sticky_transform = sticky_transform_; |
| 538 | 538 | ||