|
|
@@ -149,7 +149,8 @@ private:
|
|
|
|
|
|
class INotificationService final : public ServiceFramework<INotificationService> {
|
|
|
public:
|
|
|
- INotificationService(Common::UUID uuid) : ServiceFramework("INotificationService"), uuid(uuid) {
|
|
|
+ INotificationService(Common::UUID uuid, Core::System& system)
|
|
|
+ : ServiceFramework("INotificationService"), uuid(uuid) {
|
|
|
// clang-format off
|
|
|
static const FunctionInfo functions[] = {
|
|
|
{0, &INotificationService::GetEvent, "GetEvent"},
|
|
|
@@ -159,6 +160,9 @@ public:
|
|
|
// clang-format on
|
|
|
|
|
|
RegisterHandlers(functions);
|
|
|
+
|
|
|
+ notification_event = Kernel::WritableEvent::CreateEventPair(
|
|
|
+ system.Kernel(), Kernel::ResetType::Manual, "INotificationService:NotifyEvent");
|
|
|
}
|
|
|
|
|
|
private:
|
|
|
@@ -167,13 +171,6 @@ private:
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
-
|
|
|
- if (!is_event_created) {
|
|
|
- auto& kernel = Core::System::GetInstance().Kernel();
|
|
|
- notification_event = Kernel::WritableEvent::CreateEventPair(
|
|
|
- kernel, Kernel::ResetType::Manual, "INotificationService:NotifyEvent");
|
|
|
- is_event_created = true;
|
|
|
- }
|
|
|
rb.PushCopyObjects(notification_event.readable);
|
|
|
}
|
|
|
|
|
|
@@ -261,21 +258,21 @@ void Module::Interface::CreateNotificationService(Kernel::HLERequestContext& ctx
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
- rb.PushIpcInterface<INotificationService>(uuid);
|
|
|
+ rb.PushIpcInterface<INotificationService>(uuid, system);
|
|
|
}
|
|
|
|
|
|
-Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
|
|
|
- : ServiceFramework(name), module(std::move(module)) {}
|
|
|
+Module::Interface::Interface(std::shared_ptr<Module> module, Core::System& system, const char* name)
|
|
|
+ : ServiceFramework(name), module(std::move(module)), system(system) {}
|
|
|
|
|
|
Module::Interface::~Interface() = default;
|
|
|
|
|
|
-void InstallInterfaces(SM::ServiceManager& service_manager) {
|
|
|
+void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) {
|
|
|
auto module = std::make_shared<Module>();
|
|
|
- std::make_shared<Friend>(module, "friend:a")->InstallAsService(service_manager);
|
|
|
- std::make_shared<Friend>(module, "friend:m")->InstallAsService(service_manager);
|
|
|
- std::make_shared<Friend>(module, "friend:s")->InstallAsService(service_manager);
|
|
|
- std::make_shared<Friend>(module, "friend:u")->InstallAsService(service_manager);
|
|
|
- std::make_shared<Friend>(module, "friend:v")->InstallAsService(service_manager);
|
|
|
+ std::make_shared<Friend>(module, system, "friend:a")->InstallAsService(service_manager);
|
|
|
+ std::make_shared<Friend>(module, system, "friend:m")->InstallAsService(service_manager);
|
|
|
+ std::make_shared<Friend>(module, system, "friend:s")->InstallAsService(service_manager);
|
|
|
+ std::make_shared<Friend>(module, system, "friend:u")->InstallAsService(service_manager);
|
|
|
+ std::make_shared<Friend>(module, system, "friend:v")->InstallAsService(service_manager);
|
|
|
}
|
|
|
|
|
|
} // namespace Service::Friend
|