aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/service.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2022-10-30 22:22:14 -0400
committerLiam <byteslice@airmail.cc>2022-10-31 17:47:39 -0400
commit77b74f5d95626422f59b508cd2b355135ed256ca (patch)
treecde636e3e2241941d13e66964d2fd3154e0002fa /src/core/hle/service/service.cpp
parent633411c20f9759a9a5f1a3bf15466b387dce9a5a (diff)
sm:: avoid excessive port recreation
Diffstat (limited to 'src/core/hle/service/service.cpp')
-rw-r--r--src/core/hle/service/service.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 6a64c6005..5ab41c0c4 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -119,12 +119,14 @@ void ServiceFrameworkBase::InstallAsService(SM::ServiceManager& service_manager)
Kernel::KClientPort& ServiceFrameworkBase::CreatePort() {
const auto guard = LockService();
- ASSERT(!service_registered);
+ if (named_port == nullptr) {
+ ASSERT(!service_registered);
- named_port = Kernel::KPort::Create(kernel);
- named_port->Initialize(max_sessions, false, service_name);
+ named_port = Kernel::KPort::Create(kernel);
+ named_port->Initialize(max_sessions, false, service_name);
- service_registered = true;
+ service_registered = true;
+ }
return named_port->GetClientPort();
}