mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-21 21:35:46 +00:00
SVC: Correct SendSyncRequest.
This commit is contained in:
parent
203e706302
commit
15a79eb0d7
8 changed files with 116 additions and 54 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue