hle: service: Add option for service interfaces to create or use the default thread.
This commit is contained in:
parent
864523327f
commit
bf1750664c
5 changed files with 29 additions and 11 deletions
|
@ -24,8 +24,15 @@
|
|||
|
||||
namespace Kernel {
|
||||
|
||||
SessionRequestHandler::SessionRequestHandler(KernelCore& kernel_, const char* service_name_)
|
||||
: kernel{kernel_}, service_thread{kernel.CreateServiceThread(service_name_)} {}
|
||||
SessionRequestHandler::SessionRequestHandler(KernelCore& kernel_, const char* service_name_,
|
||||
ServiceThreadType thread_type)
|
||||
: kernel{kernel_} {
|
||||
if (thread_type == ServiceThreadType::CreateNew) {
|
||||
service_thread = kernel.CreateServiceThread(service_name_);
|
||||
} else {
|
||||
service_thread = kernel.GetDefaultServiceThread();
|
||||
}
|
||||
}
|
||||
|
||||
SessionRequestHandler::~SessionRequestHandler() {
|
||||
kernel.ReleaseServiceThread(service_thread);
|
||||
|
|
|
@ -33,6 +33,11 @@ namespace Service {
|
|||
class ServiceFrameworkBase;
|
||||
}
|
||||
|
||||
enum class ServiceThreadType {
|
||||
Default,
|
||||
CreateNew,
|
||||
};
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
class Domain;
|
||||
|
@ -57,7 +62,8 @@ enum class ThreadWakeupReason;
|
|||
*/
|
||||
class SessionRequestHandler : public std::enable_shared_from_this<SessionRequestHandler> {
|
||||
public:
|
||||
SessionRequestHandler(KernelCore& kernel, const char* service_name_);
|
||||
SessionRequestHandler(KernelCore& kernel_, const char* service_name_,
|
||||
ServiceThreadType thread_type);
|
||||
virtual ~SessionRequestHandler();
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue