summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Subv2016-12-01 10:47:06 -0500
committerGravatar Subv2016-12-01 10:47:06 -0500
commited210c32b3820c77845c27d1f73e6ff2f0828505 (patch)
tree297c73108d24dfa7285ad7f4320d30df0893aa34 /src
parentFixed the rebase mistakes. (diff)
downloadyuzu-ed210c32b3820c77845c27d1f73e6ff2f0828505.tar.gz
yuzu-ed210c32b3820c77845c27d1f73e6ff2f0828505.tar.xz
yuzu-ed210c32b3820c77845c27d1f73e6ff2f0828505.zip
Threads do not wait for the server endpoint to call AcceptSession before returning from a ConnectToPort or GetServiceHandle call.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/srv.cpp3
-rw-r--r--src/core/hle/svc.cpp5
2 files changed, 5 insertions, 3 deletions
diff --git a/src/core/hle/service/srv.cpp b/src/core/hle/service/srv.cpp
index d228e3523..c0abfd711 100644
--- a/src/core/hle/service/srv.cpp
+++ b/src/core/hle/service/srv.cpp
@@ -95,7 +95,8 @@ static void GetServiceHandle(Service::Interface* self) {
95 auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions); 95 auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
96 auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions); 96 auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
97 97
98 // TODO(Subv): Wait the current thread until the ServerPort calls AcceptSession. 98 // Note: Threads do not wait for the server endpoint to call
99 // AcceptSession before returning from this call.
99 100
100 // Add the server session to the port's queue 101 // Add the server session to the port's queue
101 client_port->AddWaitingSession(server_session); 102 client_port->AddWaitingSession(server_session);
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp
index 6d990b5f2..ab0eb9d86 100644
--- a/src/core/hle/svc.cpp
+++ b/src/core/hle/svc.cpp
@@ -234,11 +234,12 @@ static ResultCode ConnectToPort(Handle* out_handle, const char* port_name) {
234 auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions); 234 auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
235 auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions); 235 auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
236 236
237 // TODO(Subv): Wait the current thread until the ServerPort calls AcceptSession.
238
239 // Add the server session to the port's queue 237 // Add the server session to the port's queue
240 client_port->AddWaitingSession(server_session); 238 client_port->AddWaitingSession(server_session);
241 239
240 // Note: Threads do not wait for the server endpoint to call
241 // AcceptSession before returning from this call.
242
242 // Return the client session 243 // Return the client session
243 CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(client_session)); 244 CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(client_session));
244 return RESULT_SUCCESS; 245 return RESULT_SUCCESS;