summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/service/nvdrv/core/nvmap.cpp4
-rw-r--r--src/core/hle/service/nvdrv/core/nvmap.h2
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue_consumer.cpp2
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue_producer.cpp2
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
210void NvMap::DuplicateHandle(Handle::Id handle) { 210void 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