From 170e19d4eab455ad4d28ad72799cc6687692392d Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 17 Jul 2018 00:05:13 -0400 Subject: nvflinger: Fix for BufferQueue event handling. --- src/core/hle/kernel/hle_ipc.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/core/hle/kernel/hle_ipc.cpp') diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 2532dd450..b1e6f565b 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -29,7 +29,8 @@ void SessionRequestHandler::ClientDisconnected(SharedPtr server_s SharedPtr HLERequestContext::SleepClientThread(SharedPtr thread, const std::string& reason, u64 timeout, - WakeupCallback&& callback) { + WakeupCallback&& callback, + Kernel::SharedPtr event) { // Put the client thread to sleep until the wait event is signaled or the timeout expires. thread->wakeup_callback = @@ -41,7 +42,12 @@ SharedPtr HLERequestContext::SleepClientThread(SharedPtr thread, return true; }; - auto event = Kernel::Event::Create(Kernel::ResetType::OneShot, "HLE Pause Event: " + reason); + if (!event) { + // Create event if not provided + event = Kernel::Event::Create(Kernel::ResetType::OneShot, "HLE Pause Event: " + reason); + } + + event->Clear(); thread->status = THREADSTATUS_WAIT_HLE_EVENT; thread->wait_objects = {event}; event->AddWaitingThread(thread); -- cgit v1.2.3