summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Subv2018-01-22 17:41:31 -0500
committerGravatar Subv2018-01-22 17:41:31 -0500
commit1003996e80791baf1187b8a122f521d3cf02cc96 (patch)
treee727790dd3aab5d195084824c5ed15a69f71f651 /src
parentLM: Don't create an unnecessary port in Initialize. (diff)
downloadyuzu-1003996e80791baf1187b8a122f521d3cf02cc96.tar.gz
yuzu-1003996e80791baf1187b8a122f521d3cf02cc96.tar.xz
yuzu-1003996e80791baf1187b8a122f521d3cf02cc96.zip
HID: Don't create an unnecessary port in CreateAppletResource.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/hid/hid.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index d99e9c505..9b1e680f1 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -162,23 +162,23 @@ public:
162 ~Hid() = default; 162 ~Hid() = default;
163 163
164private: 164private:
165 Kernel::SharedPtr<Kernel::ClientPort> client_port; 165 std::shared_ptr<IAppletResource> applet_resource;
166 166
167 void CreateAppletResource(Kernel::HLERequestContext& ctx) { 167 void CreateAppletResource(Kernel::HLERequestContext& ctx) {
168 if (client_port == nullptr) { 168 if (applet_resource == nullptr) {
169 client_port = std::make_shared<IAppletResource>()->CreatePort(); 169 applet_resource = std::make_shared<IAppletResource>();
170 } 170 }
171 171
172 auto session = client_port->Connect(); 172 auto sessions = Kernel::ServerSession::CreateSessionPair(applet_resource->GetServiceName());
173 if (session.Succeeded()) { 173 auto server = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
174 LOG_DEBUG(Service, "called, initialized IAppletResource -> session=%u", 174 auto client = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
175 (*session)->GetObjectId()); 175 applet_resource->ClientConnected(server);
176 IPC::RequestBuilder rb{ctx, 2, 0, 1}; 176
177 rb.Push(RESULT_SUCCESS); 177 LOG_DEBUG(Service, "called, initialized IAppletResource -> session=%u",
178 rb.PushMoveObjects(std::move(session).Unwrap()); 178 client->GetObjectId());
179 } else { 179 IPC::RequestBuilder rb{ctx, 2, 0, 1};
180 UNIMPLEMENTED(); 180 rb.Push(RESULT_SUCCESS);
181 } 181 rb.PushMoveObjects(std::move(client));
182 } 182 }
183}; 183};
184 184