summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/client_session.cpp5
-rw-r--r--src/core/hle/kernel/client_session.h4
-rw-r--r--src/core/hle/svc.cpp2
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
13namespace Kernel { 14namespace Kernel {
14 15
@@ -37,14 +38,14 @@ ClientSession::~ClientSession() {
37 parent->client = nullptr; 38 parent->client = nullptr;
38} 39}
39 40
40ResultCode ClientSession::SendSyncRequest() { 41ResultCode 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
15class ServerSession; 15class ServerSession;
16class Session; 16class Session;
17class Thread;
17 18
18class ClientSession final : public Object { 19class ClientSession final : public Object {
19public: 20public:
@@ -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