summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-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