瀏覽代碼

Kernel: Reschedule on SignalEvent and SendSyncRequest, fix some bugs.

bunnei 11 年之前
父節點
當前提交
d2759c578e
共有 2 個文件被更改,包括 2 次插入1 次删除
  1. 1 1
      src/core/hle/kernel/kernel.cpp
  2. 1 0
      src/core/hle/svc.cpp

+ 1 - 1
src/core/hle/kernel/kernel.cpp

@@ -35,9 +35,9 @@ Thread* WaitObject::ReleaseNextThread() {
         return nullptr;
         return nullptr;
 
 
     auto next_thread = waiting_threads.front();
     auto next_thread = waiting_threads.front();
+    waiting_threads.erase(waiting_threads.begin());
 
 
     next_thread->ReleaseWaitObject(this);
     next_thread->ReleaseWaitObject(this);
-    waiting_threads.erase(waiting_threads.begin());
 
 
     return next_thread.get();
     return next_thread.get();
 }
 }

+ 1 - 0
src/core/hle/svc.cpp

@@ -405,6 +405,7 @@ static Result DuplicateHandle(Handle* out, Handle handle) {
 /// Signals an event
 /// Signals an event
 static Result SignalEvent(Handle evt) {
 static Result SignalEvent(Handle evt) {
     LOG_TRACE(Kernel_SVC, "called event=0x%08X", evt);
     LOG_TRACE(Kernel_SVC, "called event=0x%08X", evt);
+    HLE::Reschedule(__func__);
     return Kernel::SignalEvent(evt).raw;
     return Kernel::SignalEvent(evt).raw;
 }
 }