diff options
| author | Sebastian Valle <subv2112@gmail.com> | 2017-06-29 17:05:22 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-29 17:05:22 -0500 |
| commit | 56d718b2a1d6385c88c2044f780280a5dfbc6072 (patch) | |
| tree | a74b2c67bde47be93f2b2c3d55292bfbb421985a /src/core/hle/kernel/client_session.cpp | |
| parent | 686fde7e526e024716baa3aa3ba887d1a2479d41 (diff) | |
| parent | b53fa9514fd8d6aa9a93629ab5512da7706c536d (diff) | |
Merge pull request #2793 from Subv/replyandreceive
Kernel/SVC: Partially implemented svcReplyAndReceive
Diffstat (limited to 'src/core/hle/kernel/client_session.cpp')
| -rw-r--r-- | src/core/hle/kernel/client_session.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/hle/kernel/client_session.cpp b/src/core/hle/kernel/client_session.cpp index fef97af1f..646a5cc64 100644 --- a/src/core/hle/kernel/client_session.cpp +++ b/src/core/hle/kernel/client_session.cpp @@ -9,6 +9,7 @@ #include "core/hle/kernel/hle_ipc.h" #include "core/hle/kernel/server_session.h" #include "core/hle/kernel/session.h" +#include "core/hle/kernel/thread.h" namespace Kernel { @@ -27,19 +28,24 @@ ClientSession::~ClientSession() { // TODO(Subv): Force a wake up of all the ServerSession's waiting threads and set // their WaitSynchronization result to 0xC920181A. + + // Clean up the list of client threads with pending requests, they are unneeded now that the + // client endpoint is closed. + server->pending_requesting_threads.clear(); + server->currently_handling = nullptr; } parent->client = nullptr; } -ResultCode ClientSession::SendSyncRequest() { +ResultCode ClientSession::SendSyncRequest(SharedPtr<Thread> thread) { // Keep ServerSession alive until we're done working with it. SharedPtr<ServerSession> server = parent->server; if (server == nullptr) return ERR_SESSION_CLOSED_BY_REMOTE; // Signal the server session that new data is available - return server->HandleSyncRequest(); + return server->HandleSyncRequest(std::move(thread)); } } // namespace |
