diff options
author | Subv <subv2112@gmail.com> | 2016-12-14 18:33:49 +0100 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2016-12-14 18:45:36 +0100 |
commit | 016307ae656afc85ab59a5c2598205ef81f99231 (patch) | |
tree | ae2031654a2178e8ea824928be03fd8409f81222 /src/core/hle/kernel/server_session.cpp | |
parent | Moved the HLE command buffer translation task to ServerSession instead of the HLE handler superclass. (diff) | |
download | yuzu-016307ae656afc85ab59a5c2598205ef81f99231.tar yuzu-016307ae656afc85ab59a5c2598205ef81f99231.tar.gz yuzu-016307ae656afc85ab59a5c2598205ef81f99231.tar.bz2 yuzu-016307ae656afc85ab59a5c2598205ef81f99231.tar.lz yuzu-016307ae656afc85ab59a5c2598205ef81f99231.tar.xz yuzu-016307ae656afc85ab59a5c2598205ef81f99231.tar.zst yuzu-016307ae656afc85ab59a5c2598205ef81f99231.zip |
Diffstat (limited to 'src/core/hle/kernel/server_session.cpp')
-rw-r--r-- | src/core/hle/kernel/server_session.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 1e54c3a2e..146458c1c 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp @@ -12,12 +12,14 @@ namespace Kernel { ServerSession::ServerSession() = default; ServerSession::~ServerSession() { - // This destructor will be called automatically when the last ServerSession handle is closed by the emulated application. + // This destructor will be called automatically when the last ServerSession handle is closed by + // the emulated application. // TODO(Subv): Reduce the ClientPort's connection count, // if the session is still open, set the connection status to 3 (Closed by server), } -ResultVal<SharedPtr<ServerSession>> ServerSession::Create(std::string name, std::shared_ptr<Service::SessionRequestHandler> hle_handler) { +ResultVal<SharedPtr<ServerSession>> ServerSession::Create( + std::string name, std::shared_ptr<Service::SessionRequestHandler> hle_handler) { SharedPtr<ServerSession> server_session(new ServerSession); server_session->name = std::move(name); @@ -38,7 +40,8 @@ void ServerSession::Acquire() { ResultCode ServerSession::HandleSyncRequest() { // The ServerSession received a sync request, this means that there's new data available - // from its ClientSession, so wake up any threads that may be waiting on a svcReplyAndReceive or similar. + // from its ClientSession, so wake up any threads that may be waiting on a svcReplyAndReceive or + // similar. // If this ServerSession has an associated HLE handler, forward the request to it. if (hle_handler != nullptr) { @@ -50,17 +53,20 @@ ResultCode ServerSession::HandleSyncRequest() { // TODO(Subv): Translate the response command buffer. } - // If this ServerSession does not have an HLE implementation, just wake up the threads waiting on it. + // If this ServerSession does not have an HLE implementation, just wake up the threads waiting + // on it. signaled = true; WakeupAllWaitingThreads(); return RESULT_SUCCESS; } -ServerSession::SessionPair ServerSession::CreateSessionPair(const std::string& name, - std::shared_ptr<Service::SessionRequestHandler> hle_handler) { - auto server_session = ServerSession::Create(name + "_Server", std::move(hle_handler)).MoveFrom(); - // We keep a non-owning pointer to the ServerSession in the ClientSession because we don't want to prevent the - // ServerSession's destructor from being called when the emulated application closes the last ServerSession handle. +ServerSession::SessionPair ServerSession::CreateSessionPair( + const std::string& name, std::shared_ptr<Service::SessionRequestHandler> hle_handler) { + auto server_session = + ServerSession::Create(name + "_Server", std::move(hle_handler)).MoveFrom(); + // We keep a non-owning pointer to the ServerSession in the ClientSession because we don't want + // to prevent the ServerSession's destructor from being called when the emulated + // application closes the last ServerSession handle. auto client_session = ClientSession::Create(server_session.get(), name + "_Client").MoveFrom(); return std::make_tuple(std::move(server_session), std::move(client_session)); @@ -70,5 +76,4 @@ ResultCode TranslateHLERequest(ServerSession* server_session) { // TODO(Subv): Implement this function once multiple concurrent processes are supported. return RESULT_SUCCESS; } - } |