From 416f692f6e1b8a4c838977b0cf6d9ae2ecbd15d6 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 17 Feb 2018 13:56:21 -0500 Subject: [PATCH] nvmap: Make IocFromId return the same existing handle instead of creating a new one. Games like Puyo Puyo Tetris and BOTW seem to depend on the buffer always having the same handle --- src/core/hle/service/nvdrv/devices/nvmap.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/core/hle/service/nvdrv/devices/nvmap.cpp b/src/core/hle/service/nvdrv/devices/nvmap.cpp index cd8c0c6055..b3842eb4ce 100644 --- a/src/core/hle/service/nvdrv/devices/nvmap.cpp +++ b/src/core/hle/service/nvdrv/devices/nvmap.cpp @@ -103,11 +103,8 @@ u32 nvmap::IocFromId(const std::vector& input, std::vector& output) { [&](const auto& entry) { return entry.second->id == params.id; }); ASSERT(itr != handles.end()); - // Make a new handle for the object - u32 handle = next_handle++; - handles[handle] = itr->second; - - params.handle = handle; + // Return the existing handle instead of creating a new one. + params.handle = itr->first; std::memcpy(output.data(), ¶ms, sizeof(params)); return 0;