diff options
| author | 2018-01-22 17:42:11 -0500 | |
|---|---|---|
| committer | 2018-01-22 17:42:11 -0500 | |
| commit | 7efa6e8801866da8ed4dca97fa25d2451dcb042e (patch) | |
| tree | c49b6905e02497ec4efd9cfd0a52add7ab221e71 /src | |
| parent | HID: Don't create an unnecessary port in CreateAppletResource. (diff) | |
| download | yuzu-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.cpp | 60 |
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 | ||
| 85 | void Module::Interface::GetStandardUserSystemClock(Kernel::HLERequestContext& ctx) { | 85 | void 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 | ||
| 99 | void Module::Interface::GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx) { | 97 | void 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 | ||
| 113 | void Module::Interface::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) { | 109 | void 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 | ||
| 127 | void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) { | 121 | void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) { |