forked from ShuriZma/suyu
1
0
Fork 0

Nvflinger: correct duplication.

This commit is contained in:
Fernando Sahmkow 2022-06-27 21:45:33 +02:00
parent 9982cff98b
commit 8a372035db
4 changed files with 5 additions and 5 deletions

View File

@ -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)}; auto handle_description{GetHandle(handle)};
if (!handle_description) { if (!handle_description) {
LOG_CRITICAL(Service_NVDRV, "Unregistered handle!"); LOG_CRITICAL(Service_NVDRV, "Unregistered handle!");
return; return;
} }
auto result = handle_description->Duplicate(false); auto result = handle_description->Duplicate(internal_session);
if (result != NvResult::Success) { if (result != NvResult::Success) {
LOG_CRITICAL(Service_NVDRV, "Could not duplicate handle!"); LOG_CRITICAL(Service_NVDRV, "Could not duplicate handle!");
} }

View File

@ -165,7 +165,7 @@ public:
/** /**
* @brief Tries to duplicate a handle * @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 * @brief Tries to free a handle and remove a single dupe

View File

@ -136,7 +136,7 @@ Status BufferQueueConsumer::ReleaseBuffer(s32 slot, u64 frame_number, const Fenc
slots[slot].buffer_state = BufferState::Free; 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; listener = core->connected_producer_listener;

View File

@ -532,7 +532,7 @@ Status BufferQueueProducer::QueueBuffer(s32 slot, const QueueBufferInput& input,
item.is_droppable = core->dequeue_buffer_cannot_block || async; item.is_droppable = core->dequeue_buffer_cannot_block || async;
item.swap_interval = swap_interval; item.swap_interval = swap_interval;
nvmap.DuplicateHandle(item.graphic_buffer->BufferId()); nvmap.DuplicateHandle(item.graphic_buffer->BufferId(), true);
sticky_transform = sticky_transform_; sticky_transform = sticky_transform_;