summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Subv2018-01-22 17:42:11 -0500
committerGravatar Subv2018-01-22 17:42:11 -0500
commit7efa6e8801866da8ed4dca97fa25d2451dcb042e (patch)
treec49b6905e02497ec4efd9cfd0a52add7ab221e71 /src
parentHID: Don't create an unnecessary port in CreateAppletResource. (diff)
downloadyuzu-7efa6e8801866da8ed4dca97fa25d2451dcb042e.tar.gz
yuzu-7efa6e8801866da8ed4dca97fa25d2451dcb042e.tar.xz
yuzu-7efa6e8801866da8ed4dca97fa25d2451dcb042e.zip
Time: Don't create unnecessary ports when retrieving the clock service sessions.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/time/time.cpp60
1 files changed, 27 insertions, 33 deletions
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp
index 9fed89246..9039a4cec 100644
--- a/src/core/hle/service/time/time.cpp
+++ b/src/core/hle/service/time/time.cpp
@@ -83,45 +83,39 @@ private:
83}; 83};
84 84
85void Module::Interface::GetStandardUserSystemClock(Kernel::HLERequestContext& ctx) { 85void Module::Interface::GetStandardUserSystemClock(Kernel::HLERequestContext& ctx) {
86 auto client_port = std::make_shared<ISystemClock>()->CreatePort(); 86 auto system_clock = std::make_shared<ISystemClock>();
87 auto session = client_port->Connect(); 87 auto sessions = Kernel::ServerSession::CreateSessionPair(system_clock->GetServiceName());
88 if (session.Succeeded()) { 88 auto server = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
89 LOG_DEBUG(Service, "called, initialized ISystemClock -> session=%u", 89 auto client = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
90 (*session)->GetObjectId()); 90 system_clock->ClientConnected(server);
91 IPC::RequestBuilder rb{ctx, 2, 0, 1}; 91 LOG_DEBUG(Service, "called, initialized ISystemClock -> session=%u", client->GetObjectId());
92 rb.Push(RESULT_SUCCESS); 92 IPC::RequestBuilder rb{ctx, 2, 0, 1};
93 rb.PushMoveObjects(std::move(session).Unwrap()); 93 rb.Push(RESULT_SUCCESS);
94 } else { 94 rb.PushMoveObjects(std::move(client));
95 UNIMPLEMENTED();
96 }
97} 95}
98 96
99void Module::Interface::GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx) { 97void Module::Interface::GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx) {
100 auto client_port = std::make_shared<ISystemClock>()->CreatePort(); 98 auto system_clock = std::make_shared<ISystemClock>();
101 auto session = client_port->Connect(); 99 auto sessions = Kernel::ServerSession::CreateSessionPair(system_clock->GetServiceName());
102 if (session.Succeeded()) { 100 auto server = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
103 LOG_DEBUG(Service, "called, initialized ISystemClock -> session=%u", 101 auto client = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
104 (*session)->GetObjectId()); 102 system_clock->ClientConnected(server);
105 IPC::RequestBuilder rb{ctx, 2, 0, 1}; 103 LOG_DEBUG(Service, "called, initialized ISystemClock -> session=%u", client->GetObjectId());
106 rb.Push(RESULT_SUCCESS); 104 IPC::RequestBuilder rb{ctx, 2, 0, 1};
107 rb.PushMoveObjects(std::move(session).Unwrap()); 105 rb.Push(RESULT_SUCCESS);
108 } else { 106 rb.PushMoveObjects(std::move(client));
109 UNIMPLEMENTED();
110 }
111} 107}
112 108
113void Module::Interface::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) { 109void Module::Interface::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) {
114 auto client_port = std::make_shared<ISteadyClock>()->CreatePort(); 110 auto steady_clock = std::make_shared<ISteadyClock>();
115 auto session = client_port->Connect(); 111 auto sessions = Kernel::ServerSession::CreateSessionPair(steady_clock->GetServiceName());
116 if (session.Succeeded()) { 112 auto server = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
117 LOG_DEBUG(Service, "called, initialized ISteadyClock -> session=%u", 113 auto client = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
118 (*session)->GetObjectId()); 114 steady_clock->ClientConnected(server);
119 IPC::RequestBuilder rb{ctx, 2, 0, 1}; 115 LOG_DEBUG(Service, "called, initialized ISteadyClock -> session=%u", client->GetObjectId());
120 rb.Push(RESULT_SUCCESS); 116 IPC::RequestBuilder rb{ctx, 2, 0, 1};
121 rb.PushMoveObjects(std::move(session).Unwrap()); 117 rb.Push(RESULT_SUCCESS);
122 } else { 118 rb.PushMoveObjects(std::move(client));
123 UNIMPLEMENTED();
124 }
125} 119}
126 120
127void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) { 121void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) {