summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Subv2018-01-22 17:35:40 -0500
committerGravatar Subv2018-01-22 17:35:40 -0500
commit1a9c96e4de6699722ad0fbe511c9868e89d29eee (patch)
treece917b78eef601f6348bf91b786f3d54edab476a /src
parentIPC: Don't create an unnecessary port when using PushIpcInterface outside of ... (diff)
downloadyuzu-1a9c96e4de6699722ad0fbe511c9868e89d29eee.tar.gz
yuzu-1a9c96e4de6699722ad0fbe511c9868e89d29eee.tar.xz
yuzu-1a9c96e4de6699722ad0fbe511c9868e89d29eee.zip
LM: Don't create an unnecessary port in Initialize.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/lm/lm.cpp22
-rw-r--r--src/core/hle/service/lm/lm.h3
2 files changed, 10 insertions, 15 deletions
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp
index 13c9ee3d3..dd0f75ce1 100644
--- a/src/core/hle/service/lm/lm.cpp
+++ b/src/core/hle/service/lm/lm.cpp
@@ -146,18 +146,16 @@ void InstallInterfaces(SM::ServiceManager& service_manager) {
146 * 0: ResultCode 146 * 0: ResultCode
147 */ 147 */
148void LM::Initialize(Kernel::HLERequestContext& ctx) { 148void LM::Initialize(Kernel::HLERequestContext& ctx) {
149 auto client_port = std::make_shared<Logger>()->CreatePort(); 149 auto logger = std::make_shared<Logger>();
150 auto session = client_port->Connect(); 150 auto sessions = Kernel::ServerSession::CreateSessionPair(logger->GetServiceName());
151 if (session.Succeeded()) { 151 auto server = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
152 LOG_DEBUG(Service_SM, "called, initialized logger -> session=%u", 152 auto client = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
153 (*session)->GetObjectId()); 153 logger->ClientConnected(server);
154 IPC::RequestBuilder rb{ctx, 2, 0, 1}; 154
155 rb.Push(RESULT_SUCCESS); 155 LOG_DEBUG(Service_SM, "called, initialized logger -> session=%u", client->GetObjectId());
156 rb.PushMoveObjects(std::move(session).Unwrap()); 156 IPC::RequestBuilder rb{ctx, 2, 0, 1};
157 registered_loggers.emplace_back(std::move(client_port)); 157 rb.Push(RESULT_SUCCESS);
158 } else { 158 rb.PushMoveObjects(std::move(client));
159 UNIMPLEMENTED();
160 }
161 159
162 LOG_INFO(Service_SM, "called"); 160 LOG_INFO(Service_SM, "called");
163} 161}
diff --git a/src/core/hle/service/lm/lm.h b/src/core/hle/service/lm/lm.h
index 4b954bdb2..371135057 100644
--- a/src/core/hle/service/lm/lm.h
+++ b/src/core/hle/service/lm/lm.h
@@ -5,7 +5,6 @@
5#pragma once 5#pragma once
6 6
7#include <vector> 7#include <vector>
8#include "core/hle/kernel/client_port.h"
9#include "core/hle/kernel/kernel.h" 8#include "core/hle/kernel/kernel.h"
10#include "core/hle/service/service.h" 9#include "core/hle/service/service.h"
11 10
@@ -19,8 +18,6 @@ public:
19 18
20private: 19private:
21 void Initialize(Kernel::HLERequestContext& ctx); 20 void Initialize(Kernel::HLERequestContext& ctx);
22
23 std::vector<Kernel::SharedPtr<Kernel::ClientPort>> registered_loggers;
24}; 21};
25 22
26/// Registers all LM services with the specified service manager. 23/// Registers all LM services with the specified service manager.