diff options
author | Lioncash <mathew1800@gmail.com> | 2020-08-03 17:28:18 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2020-08-03 17:54:04 +0200 |
commit | b249e4e0ce15c44bd0d917a17f79510af868173b (patch) | |
tree | d4dc63a692c446e87ee614481030af16385e88ba /src/core/hle/service/nvdrv | |
parent | ipc: Allow all trivially copyable objects to be passed directly into WriteBuffer (#4465) (diff) | |
download | yuzu-b249e4e0ce15c44bd0d917a17f79510af868173b.tar yuzu-b249e4e0ce15c44bd0d917a17f79510af868173b.tar.gz yuzu-b249e4e0ce15c44bd0d917a17f79510af868173b.tar.bz2 yuzu-b249e4e0ce15c44bd0d917a17f79510af868173b.tar.lz yuzu-b249e4e0ce15c44bd0d917a17f79510af868173b.tar.xz yuzu-b249e4e0ce15c44bd0d917a17f79510af868173b.tar.zst yuzu-b249e4e0ce15c44bd0d917a17f79510af868173b.zip |
Diffstat (limited to 'src/core/hle/service/nvdrv')
-rw-r--r-- | src/core/hle/service/nvdrv/interface.cpp | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/core/hle/service/nvdrv/interface.cpp b/src/core/hle/service/nvdrv/interface.cpp index deaf0808b..88fbfa9b0 100644 --- a/src/core/hle/service/nvdrv/interface.cpp +++ b/src/core/hle/service/nvdrv/interface.cpp @@ -60,24 +60,24 @@ void NVDRV::IoctlBase(Kernel::HLERequestContext& ctx, IoctlVersion version) { if (ctrl.must_delay) { ctrl.fresh_call = false; - ctx.SleepClientThread("NVServices::DelayedResponse", ctrl.timeout, - [=](std::shared_ptr<Kernel::Thread> thread, - Kernel::HLERequestContext& ctx, - Kernel::ThreadWakeupReason reason) { - IoctlCtrl ctrl2{ctrl}; - std::vector<u8> tmp_output = output; - std::vector<u8> tmp_output2 = output2; - u32 result = nvdrv->Ioctl(fd, command, input, input2, tmp_output, - tmp_output2, ctrl2, version); - ctx.WriteBuffer(tmp_output, 0); - if (version == IoctlVersion::Version3) { - ctx.WriteBuffer(tmp_output2, 1); - } - IPC::ResponseBuilder rb{ctx, 3}; - rb.Push(RESULT_SUCCESS); - rb.Push(result); - }, - nvdrv->GetEventWriteable(ctrl.event_id)); + ctx.SleepClientThread( + "NVServices::DelayedResponse", ctrl.timeout, + [=, this](std::shared_ptr<Kernel::Thread> thread, Kernel::HLERequestContext& ctx_, + Kernel::ThreadWakeupReason reason) { + IoctlCtrl ctrl2{ctrl}; + std::vector<u8> tmp_output = output; + std::vector<u8> tmp_output2 = output2; + const u32 ioctl_result = nvdrv->Ioctl(fd, command, input, input2, tmp_output, + tmp_output2, ctrl2, version); + ctx_.WriteBuffer(tmp_output, 0); + if (version == IoctlVersion::Version3) { + ctx_.WriteBuffer(tmp_output2, 1); + } + IPC::ResponseBuilder rb{ctx_, 3}; + rb.Push(RESULT_SUCCESS); + rb.Push(ioctl_result); + }, + nvdrv->GetEventWriteable(ctrl.event_id)); } else { ctx.WriteBuffer(output); if (version == IoctlVersion::Version3) { |