|
|
|
@ -94,6 +94,7 @@ protected: |
|
|
|
std::weak_ptr<ServiceThread> service_thread; |
|
|
|
}; |
|
|
|
|
|
|
|
using SessionRequestHandlerWeakPtr = std::weak_ptr<SessionRequestHandler>; |
|
|
|
using SessionRequestHandlerPtr = std::shared_ptr<SessionRequestHandler>; |
|
|
|
|
|
|
|
/** |
|
|
|
@ -139,7 +140,7 @@ public: |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
SessionRequestHandlerPtr DomainHandler(std::size_t index) const { |
|
|
|
SessionRequestHandlerWeakPtr DomainHandler(std::size_t index) const { |
|
|
|
ASSERT_MSG(index < DomainHandlerCount(), "Unexpected handler index {}", index); |
|
|
|
return domain_handlers.at(index); |
|
|
|
} |
|
|
|
@ -328,10 +329,10 @@ public: |
|
|
|
|
|
|
|
template <typename T> |
|
|
|
std::shared_ptr<T> GetDomainHandler(std::size_t index) const { |
|
|
|
return std::static_pointer_cast<T>(manager->DomainHandler(index)); |
|
|
|
return std::static_pointer_cast<T>(manager.lock()->DomainHandler(index).lock()); |
|
|
|
} |
|
|
|
|
|
|
|
void SetSessionRequestManager(std::shared_ptr<SessionRequestManager> manager_) { |
|
|
|
void SetSessionRequestManager(std::weak_ptr<SessionRequestManager> manager_) { |
|
|
|
manager = std::move(manager_); |
|
|
|
} |
|
|
|
|
|
|
|
@ -374,7 +375,7 @@ private: |
|
|
|
u32 handles_offset{}; |
|
|
|
u32 domain_offset{}; |
|
|
|
|
|
|
|
std::shared_ptr<SessionRequestManager> manager; |
|
|
|
std::weak_ptr<SessionRequestManager> manager; |
|
|
|
|
|
|
|
KernelCore& kernel; |
|
|
|
Core::Memory::Memory& memory; |
|
|
|
|