Răsfoiți Sursa

hle: kernel: KServerSession: Simplify CompleteSyncRequest EndWait.

- Considering is_thread_waiting is never set, so we can remove IsThreadWaiting.
- KThread::EndWait will take the scheduler lock, so we can remove the redundant lock.
bunnei 4 ani în urmă
părinte
comite
ad53dc22fd
2 a modificat fișierele cu 2 adăugiri și 12 ștergeri
  1. 0 5
      src/core/hle/kernel/hle_ipc.h
  2. 2 7
      src/core/hle/kernel/k_server_session.cpp

+ 0 - 5
src/core/hle/kernel/hle_ipc.h

@@ -341,10 +341,6 @@ public:
         return *thread;
     }
 
-    bool IsThreadWaiting() const {
-        return is_thread_waiting;
-    }
-
 private:
     friend class IPC::ResponseBuilder;
 
@@ -379,7 +375,6 @@ private:
     u32 domain_offset{};
 
     std::shared_ptr<SessionRequestManager> manager;
-    bool is_thread_waiting{};
 
     KernelCore& kernel;
     Core::Memory::Memory& memory;

+ 2 - 7
src/core/hle/kernel/k_server_session.cpp

@@ -171,13 +171,8 @@ ResultCode KServerSession::CompleteSyncRequest(HLERequestContext& context) {
         convert_to_domain = false;
     }
 
-    // Some service requests require the thread to block
-    {
-        KScopedSchedulerLock lock(kernel);
-        if (!context.IsThreadWaiting()) {
-            context.GetThread().EndWait(result);
-        }
-    }
+    // The calling thread is waiting for this request to complete, so wake it up.
+    context.GetThread().EndWait(result);
 
     return result;
 }