Browse Source

Threads do not wait for the server endpoint to call AcceptSession before returning from a ConnectToPort or GetServiceHandle call.

pull/15/merge
Subv 9 years ago
parent
commit
ed210c32b3
  1. 3
      src/core/hle/service/srv.cpp
  2. 5
      src/core/hle/svc.cpp

3
src/core/hle/service/srv.cpp

@ -95,7 +95,8 @@ static void GetServiceHandle(Service::Interface* self) {
auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
// TODO(Subv): Wait the current thread until the ServerPort calls AcceptSession.
// Note: Threads do not wait for the server endpoint to call
// AcceptSession before returning from this call.
// Add the server session to the port's queue
client_port->AddWaitingSession(server_session);

5
src/core/hle/svc.cpp

@ -234,11 +234,12 @@ static ResultCode ConnectToPort(Handle* out_handle, const char* port_name) {
auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
// TODO(Subv): Wait the current thread until the ServerPort calls AcceptSession.
// Add the server session to the port's queue
client_port->AddWaitingSession(server_session);
// Note: Threads do not wait for the server endpoint to call
// AcceptSession before returning from this call.
// Return the client session
CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(client_session));
return RESULT_SUCCESS;

Loading…
Cancel
Save