diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/kernel/client_session.cpp | 5 | ||||
| -rw-r--r-- | src/core/hle/kernel/client_session.h | 4 | ||||
| -rw-r--r-- | src/core/hle/svc.cpp | 2 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/core/hle/kernel/client_session.cpp b/src/core/hle/kernel/client_session.cpp index e9cf05747..646a5cc64 100644 --- a/src/core/hle/kernel/client_session.cpp +++ b/src/core/hle/kernel/client_session.cpp | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #include "core/hle/kernel/hle_ipc.h" | 9 | #include "core/hle/kernel/hle_ipc.h" |
| 10 | #include "core/hle/kernel/server_session.h" | 10 | #include "core/hle/kernel/server_session.h" |
| 11 | #include "core/hle/kernel/session.h" | 11 | #include "core/hle/kernel/session.h" |
| 12 | #include "core/hle/kernel/thread.h" | ||
| 12 | 13 | ||
| 13 | namespace Kernel { | 14 | namespace Kernel { |
| 14 | 15 | ||
| @@ -37,14 +38,14 @@ ClientSession::~ClientSession() { | |||
| 37 | parent->client = nullptr; | 38 | parent->client = nullptr; |
| 38 | } | 39 | } |
| 39 | 40 | ||
| 40 | ResultCode ClientSession::SendSyncRequest() { | 41 | ResultCode ClientSession::SendSyncRequest(SharedPtr<Thread> thread) { |
| 41 | // Keep ServerSession alive until we're done working with it. | 42 | // Keep ServerSession alive until we're done working with it. |
| 42 | SharedPtr<ServerSession> server = parent->server; | 43 | SharedPtr<ServerSession> server = parent->server; |
| 43 | if (server == nullptr) | 44 | if (server == nullptr) |
| 44 | return ERR_SESSION_CLOSED_BY_REMOTE; | 45 | return ERR_SESSION_CLOSED_BY_REMOTE; |
| 45 | 46 | ||
| 46 | // Signal the server session that new data is available | 47 | // Signal the server session that new data is available |
| 47 | return server->HandleSyncRequest(GetCurrentThread()); | 48 | return server->HandleSyncRequest(std::move(thread)); |
| 48 | } | 49 | } |
| 49 | 50 | ||
| 50 | } // namespace | 51 | } // namespace |
diff --git a/src/core/hle/kernel/client_session.h b/src/core/hle/kernel/client_session.h index 2de379c09..daf521529 100644 --- a/src/core/hle/kernel/client_session.h +++ b/src/core/hle/kernel/client_session.h | |||
| @@ -14,6 +14,7 @@ namespace Kernel { | |||
| 14 | 14 | ||
| 15 | class ServerSession; | 15 | class ServerSession; |
| 16 | class Session; | 16 | class Session; |
| 17 | class Thread; | ||
| 17 | 18 | ||
| 18 | class ClientSession final : public Object { | 19 | class ClientSession final : public Object { |
| 19 | public: | 20 | public: |
| @@ -34,9 +35,10 @@ public: | |||
| 34 | 35 | ||
| 35 | /** | 36 | /** |
| 36 | * Sends an SyncRequest from the current emulated thread. | 37 | * Sends an SyncRequest from the current emulated thread. |
| 38 | * @param thread Thread that initiated the request. | ||
| 37 | * @return ResultCode of the operation. | 39 | * @return ResultCode of the operation. |
| 38 | */ | 40 | */ |
| 39 | ResultCode SendSyncRequest(); | 41 | ResultCode SendSyncRequest(SharedPtr<Thread> thread); |
| 40 | 42 | ||
| 41 | std::string name; ///< Name of client port (optional) | 43 | std::string name; ///< Name of client port (optional) |
| 42 | 44 | ||
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 2cdbe3fb9..0a7f011f3 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp | |||
| @@ -237,7 +237,7 @@ static ResultCode SendSyncRequest(Kernel::Handle handle) { | |||
| 237 | 237 | ||
| 238 | // TODO(Subv): svcSendSyncRequest should put the caller thread to sleep while the server | 238 | // TODO(Subv): svcSendSyncRequest should put the caller thread to sleep while the server |
| 239 | // responds and cause a reschedule. | 239 | // responds and cause a reschedule. |
| 240 | return session->SendSyncRequest(); | 240 | return session->SendSyncRequest(Kernel::GetCurrentThread()); |
| 241 | } | 241 | } |
| 242 | 242 | ||
| 243 | /// Close a handle | 243 | /// Close a handle |