mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2025-06-14 17:47:56 -05:00
SVC: Correct SendSyncRequest.
This commit is contained in:
@ -19,6 +19,7 @@
|
||||
#include "core/hle/kernel/process.h"
|
||||
#include "core/hle/kernel/server_session.h"
|
||||
#include "core/hle/kernel/session.h"
|
||||
#include "core/hle/kernel/scheduler.h"
|
||||
#include "core/hle/kernel/thread.h"
|
||||
#include "core/memory.h"
|
||||
|
||||
@ -168,9 +169,12 @@ ResultCode ServerSession::CompleteSyncRequest() {
|
||||
}
|
||||
|
||||
// Some service requests require the thread to block
|
||||
if (!context.IsThreadWaiting()) {
|
||||
context.GetThread().ResumeFromWait();
|
||||
context.GetThread().SetWaitSynchronizationResult(result);
|
||||
{
|
||||
SchedulerLock lock(kernel);
|
||||
if (!context.IsThreadWaiting()) {
|
||||
context.GetThread().ResumeFromWait();
|
||||
context.GetThread().SetSynchronizationResults(nullptr, result);
|
||||
}
|
||||
}
|
||||
|
||||
request_queue.Pop();
|
||||
@ -180,8 +184,9 @@ ResultCode ServerSession::CompleteSyncRequest() {
|
||||
|
||||
ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread,
|
||||
Core::Memory::Memory& memory) {
|
||||
Core::System::GetInstance().CoreTiming().ScheduleEvent(20000, request_event, {});
|
||||
return QueueSyncRequest(std::move(thread), memory);
|
||||
ResultCode result = QueueSyncRequest(std::move(thread), memory);
|
||||
Core::System::GetInstance().CoreTiming().ScheduleEvent(0, request_event, {});
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace Kernel
|
||||
|
Reference in New Issue
Block a user