diff options
| author | 2020-11-26 15:19:08 -0500 | |
|---|---|---|
| committer | 2020-11-26 20:03:11 -0500 | |
| commit | 1a954b2a596fdfd4fc4b5feb9b43c8147de4cc7f (patch) | |
| tree | 3593cd42e0ba676c3919561983f7e9766fcb641c | |
| parent | Merge pull request #4975 from comex/invalid-syncpoint-id (diff) | |
| download | yuzu-1a954b2a596fdfd4fc4b5feb9b43c8147de4cc7f.tar.gz yuzu-1a954b2a596fdfd4fc4b5feb9b43c8147de4cc7f.tar.xz yuzu-1a954b2a596fdfd4fc4b5feb9b43c8147de4cc7f.zip | |
service: Eliminate usages of the global system instance
Completely removes all usages of the global system instance within the
services code by passing in the using system instance to the services.
222 files changed, 1221 insertions, 907 deletions
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index c2c11dbcb..6981f8ee7 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp | |||
| @@ -47,8 +47,8 @@ static constexpr u32 SanitizeJPEGSize(std::size_t size) { | |||
| 47 | 47 | ||
| 48 | class IManagerForSystemService final : public ServiceFramework<IManagerForSystemService> { | 48 | class IManagerForSystemService final : public ServiceFramework<IManagerForSystemService> { |
| 49 | public: | 49 | public: |
| 50 | explicit IManagerForSystemService(Common::UUID user_id) | 50 | explicit IManagerForSystemService(Core::System& system_, Common::UUID) |
| 51 | : ServiceFramework("IManagerForSystemService") { | 51 | : ServiceFramework{system_, "IManagerForSystemService"} { |
| 52 | // clang-format off | 52 | // clang-format off |
| 53 | static const FunctionInfo functions[] = { | 53 | static const FunctionInfo functions[] = { |
| 54 | {0, nullptr, "CheckAvailability"}, | 54 | {0, nullptr, "CheckAvailability"}, |
| @@ -83,8 +83,8 @@ public: | |||
| 83 | // 3.0.0+ | 83 | // 3.0.0+ |
| 84 | class IFloatingRegistrationRequest final : public ServiceFramework<IFloatingRegistrationRequest> { | 84 | class IFloatingRegistrationRequest final : public ServiceFramework<IFloatingRegistrationRequest> { |
| 85 | public: | 85 | public: |
| 86 | explicit IFloatingRegistrationRequest(Common::UUID user_id) | 86 | explicit IFloatingRegistrationRequest(Core::System& system_, Common::UUID) |
| 87 | : ServiceFramework("IFloatingRegistrationRequest") { | 87 | : ServiceFramework{system_, "IFloatingRegistrationRequest"} { |
| 88 | // clang-format off | 88 | // clang-format off |
| 89 | static const FunctionInfo functions[] = { | 89 | static const FunctionInfo functions[] = { |
| 90 | {0, nullptr, "GetSessionId"}, | 90 | {0, nullptr, "GetSessionId"}, |
| @@ -108,7 +108,8 @@ public: | |||
| 108 | 108 | ||
| 109 | class IAdministrator final : public ServiceFramework<IAdministrator> { | 109 | class IAdministrator final : public ServiceFramework<IAdministrator> { |
| 110 | public: | 110 | public: |
| 111 | explicit IAdministrator(Common::UUID user_id) : ServiceFramework("IAdministrator") { | 111 | explicit IAdministrator(Core::System& system_, Common::UUID) |
| 112 | : ServiceFramework{system_, "IAdministrator"} { | ||
| 112 | // clang-format off | 113 | // clang-format off |
| 113 | static const FunctionInfo functions[] = { | 114 | static const FunctionInfo functions[] = { |
| 114 | {0, nullptr, "CheckAvailability"}, | 115 | {0, nullptr, "CheckAvailability"}, |
| @@ -165,8 +166,8 @@ public: | |||
| 165 | 166 | ||
| 166 | class IAuthorizationRequest final : public ServiceFramework<IAuthorizationRequest> { | 167 | class IAuthorizationRequest final : public ServiceFramework<IAuthorizationRequest> { |
| 167 | public: | 168 | public: |
| 168 | explicit IAuthorizationRequest(Common::UUID user_id) | 169 | explicit IAuthorizationRequest(Core::System& system_, Common::UUID) |
| 169 | : ServiceFramework("IAuthorizationRequest") { | 170 | : ServiceFramework{system_, "IAuthorizationRequest"} { |
| 170 | // clang-format off | 171 | // clang-format off |
| 171 | static const FunctionInfo functions[] = { | 172 | static const FunctionInfo functions[] = { |
| 172 | {0, nullptr, "GetSessionId"}, | 173 | {0, nullptr, "GetSessionId"}, |
| @@ -184,7 +185,8 @@ public: | |||
| 184 | 185 | ||
| 185 | class IOAuthProcedure final : public ServiceFramework<IOAuthProcedure> { | 186 | class IOAuthProcedure final : public ServiceFramework<IOAuthProcedure> { |
| 186 | public: | 187 | public: |
| 187 | explicit IOAuthProcedure(Common::UUID user_id) : ServiceFramework("IOAuthProcedure") { | 188 | explicit IOAuthProcedure(Core::System& system_, Common::UUID) |
| 189 | : ServiceFramework{system_, "IOAuthProcedure"} { | ||
| 188 | // clang-format off | 190 | // clang-format off |
| 189 | static const FunctionInfo functions[] = { | 191 | static const FunctionInfo functions[] = { |
| 190 | {0, nullptr, "PrepareAsync"}, | 192 | {0, nullptr, "PrepareAsync"}, |
| @@ -202,8 +204,8 @@ public: | |||
| 202 | // 3.0.0+ | 204 | // 3.0.0+ |
| 203 | class IOAuthProcedureForExternalNsa final : public ServiceFramework<IOAuthProcedureForExternalNsa> { | 205 | class IOAuthProcedureForExternalNsa final : public ServiceFramework<IOAuthProcedureForExternalNsa> { |
| 204 | public: | 206 | public: |
| 205 | explicit IOAuthProcedureForExternalNsa(Common::UUID user_id) | 207 | explicit IOAuthProcedureForExternalNsa(Core::System& system_, Common::UUID) |
| 206 | : ServiceFramework("IOAuthProcedureForExternalNsa") { | 208 | : ServiceFramework{system_, "IOAuthProcedureForExternalNsa"} { |
| 207 | // clang-format off | 209 | // clang-format off |
| 208 | static const FunctionInfo functions[] = { | 210 | static const FunctionInfo functions[] = { |
| 209 | {0, nullptr, "PrepareAsync"}, | 211 | {0, nullptr, "PrepareAsync"}, |
| @@ -225,8 +227,8 @@ public: | |||
| 225 | class IOAuthProcedureForNintendoAccountLinkage final | 227 | class IOAuthProcedureForNintendoAccountLinkage final |
| 226 | : public ServiceFramework<IOAuthProcedureForNintendoAccountLinkage> { | 228 | : public ServiceFramework<IOAuthProcedureForNintendoAccountLinkage> { |
| 227 | public: | 229 | public: |
| 228 | explicit IOAuthProcedureForNintendoAccountLinkage(Common::UUID user_id) | 230 | explicit IOAuthProcedureForNintendoAccountLinkage(Core::System& system_, Common::UUID) |
| 229 | : ServiceFramework("IOAuthProcedureForNintendoAccountLinkage") { | 231 | : ServiceFramework{system_, "IOAuthProcedureForNintendoAccountLinkage"} { |
| 230 | // clang-format off | 232 | // clang-format off |
| 231 | static const FunctionInfo functions[] = { | 233 | static const FunctionInfo functions[] = { |
| 232 | {0, nullptr, "PrepareAsync"}, | 234 | {0, nullptr, "PrepareAsync"}, |
| @@ -246,7 +248,8 @@ public: | |||
| 246 | 248 | ||
| 247 | class INotifier final : public ServiceFramework<INotifier> { | 249 | class INotifier final : public ServiceFramework<INotifier> { |
| 248 | public: | 250 | public: |
| 249 | explicit INotifier(Common::UUID user_id) : ServiceFramework("INotifier") { | 251 | explicit INotifier(Core::System& system_, Common::UUID) |
| 252 | : ServiceFramework{system_, "INotifier"} { | ||
| 250 | // clang-format off | 253 | // clang-format off |
| 251 | static const FunctionInfo functions[] = { | 254 | static const FunctionInfo functions[] = { |
| 252 | {0, nullptr, "GetSystemEvent"}, | 255 | {0, nullptr, "GetSystemEvent"}, |
| @@ -259,9 +262,9 @@ public: | |||
| 259 | 262 | ||
| 260 | class IProfileCommon : public ServiceFramework<IProfileCommon> { | 263 | class IProfileCommon : public ServiceFramework<IProfileCommon> { |
| 261 | public: | 264 | public: |
| 262 | explicit IProfileCommon(const char* name, bool editor_commands, Common::UUID user_id, | 265 | explicit IProfileCommon(Core::System& system_, const char* name, bool editor_commands, |
| 263 | ProfileManager& profile_manager) | 266 | Common::UUID user_id_, ProfileManager& profile_manager_) |
| 264 | : ServiceFramework(name), profile_manager(profile_manager), user_id(user_id) { | 267 | : ServiceFramework{system_, name}, profile_manager{profile_manager_}, user_id{user_id_} { |
| 265 | static const FunctionInfo functions[] = { | 268 | static const FunctionInfo functions[] = { |
| 266 | {0, &IProfileCommon::Get, "Get"}, | 269 | {0, &IProfileCommon::Get, "Get"}, |
| 267 | {1, &IProfileCommon::GetBase, "GetBase"}, | 270 | {1, &IProfileCommon::GetBase, "GetBase"}, |
| @@ -427,19 +430,21 @@ protected: | |||
| 427 | 430 | ||
| 428 | class IProfile final : public IProfileCommon { | 431 | class IProfile final : public IProfileCommon { |
| 429 | public: | 432 | public: |
| 430 | IProfile(Common::UUID user_id, ProfileManager& profile_manager) | 433 | explicit IProfile(Core::System& system_, Common::UUID user_id_, |
| 431 | : IProfileCommon("IProfile", false, user_id, profile_manager) {} | 434 | ProfileManager& profile_manager_) |
| 435 | : IProfileCommon{system_, "IProfile", false, user_id_, profile_manager_} {} | ||
| 432 | }; | 436 | }; |
| 433 | 437 | ||
| 434 | class IProfileEditor final : public IProfileCommon { | 438 | class IProfileEditor final : public IProfileCommon { |
| 435 | public: | 439 | public: |
| 436 | IProfileEditor(Common::UUID user_id, ProfileManager& profile_manager) | 440 | explicit IProfileEditor(Core::System& system_, Common::UUID user_id_, |
| 437 | : IProfileCommon("IProfileEditor", true, user_id, profile_manager) {} | 441 | ProfileManager& profile_manager_) |
| 442 | : IProfileCommon{system_, "IProfileEditor", true, user_id_, profile_manager_} {} | ||
| 438 | }; | 443 | }; |
| 439 | 444 | ||
| 440 | class IAsyncContext final : public ServiceFramework<IAsyncContext> { | 445 | class IAsyncContext final : public ServiceFramework<IAsyncContext> { |
| 441 | public: | 446 | public: |
| 442 | explicit IAsyncContext(Common::UUID user_id) : ServiceFramework("IAsyncContext") { | 447 | explicit IAsyncContext(Core::System& system_) : ServiceFramework{system_, "IAsyncContext"} { |
| 443 | // clang-format off | 448 | // clang-format off |
| 444 | static const FunctionInfo functions[] = { | 449 | static const FunctionInfo functions[] = { |
| 445 | {0, nullptr, "GetSystemEvent"}, | 450 | {0, nullptr, "GetSystemEvent"}, |
| @@ -455,7 +460,8 @@ public: | |||
| 455 | 460 | ||
| 456 | class ISessionObject final : public ServiceFramework<ISessionObject> { | 461 | class ISessionObject final : public ServiceFramework<ISessionObject> { |
| 457 | public: | 462 | public: |
| 458 | explicit ISessionObject(Common::UUID user_id) : ServiceFramework("ISessionObject") { | 463 | explicit ISessionObject(Core::System& system_, Common::UUID) |
| 464 | : ServiceFramework{system_, "ISessionObject"} { | ||
| 459 | // clang-format off | 465 | // clang-format off |
| 460 | static const FunctionInfo functions[] = { | 466 | static const FunctionInfo functions[] = { |
| 461 | {999, nullptr, "Dummy"}, | 467 | {999, nullptr, "Dummy"}, |
| @@ -468,7 +474,8 @@ public: | |||
| 468 | 474 | ||
| 469 | class IGuestLoginRequest final : public ServiceFramework<IGuestLoginRequest> { | 475 | class IGuestLoginRequest final : public ServiceFramework<IGuestLoginRequest> { |
| 470 | public: | 476 | public: |
| 471 | explicit IGuestLoginRequest(Common::UUID) : ServiceFramework("IGuestLoginRequest") { | 477 | explicit IGuestLoginRequest(Core::System& system_, Common::UUID) |
| 478 | : ServiceFramework{system_, "IGuestLoginRequest"} { | ||
| 472 | // clang-format off | 479 | // clang-format off |
| 473 | static const FunctionInfo functions[] = { | 480 | static const FunctionInfo functions[] = { |
| 474 | {0, nullptr, "GetSessionId"}, | 481 | {0, nullptr, "GetSessionId"}, |
| @@ -487,8 +494,8 @@ public: | |||
| 487 | 494 | ||
| 488 | class IManagerForApplication final : public ServiceFramework<IManagerForApplication> { | 495 | class IManagerForApplication final : public ServiceFramework<IManagerForApplication> { |
| 489 | public: | 496 | public: |
| 490 | explicit IManagerForApplication(Common::UUID user_id) | 497 | explicit IManagerForApplication(Core::System& system_, Common::UUID user_id_) |
| 491 | : ServiceFramework("IManagerForApplication"), user_id(user_id) { | 498 | : ServiceFramework{system_, "IManagerForApplication"}, user_id{user_id_} { |
| 492 | // clang-format off | 499 | // clang-format off |
| 493 | static const FunctionInfo functions[] = { | 500 | static const FunctionInfo functions[] = { |
| 494 | {0, &IManagerForApplication::CheckAvailability, "CheckAvailability"}, | 501 | {0, &IManagerForApplication::CheckAvailability, "CheckAvailability"}, |
| @@ -534,8 +541,8 @@ private: | |||
| 534 | class IAsyncNetworkServiceLicenseKindContext final | 541 | class IAsyncNetworkServiceLicenseKindContext final |
| 535 | : public ServiceFramework<IAsyncNetworkServiceLicenseKindContext> { | 542 | : public ServiceFramework<IAsyncNetworkServiceLicenseKindContext> { |
| 536 | public: | 543 | public: |
| 537 | explicit IAsyncNetworkServiceLicenseKindContext(Common::UUID user_id) | 544 | explicit IAsyncNetworkServiceLicenseKindContext(Core::System& system_, Common::UUID) |
| 538 | : ServiceFramework("IAsyncNetworkServiceLicenseKindContext") { | 545 | : ServiceFramework{system_, "IAsyncNetworkServiceLicenseKindContext"} { |
| 539 | // clang-format off | 546 | // clang-format off |
| 540 | static const FunctionInfo functions[] = { | 547 | static const FunctionInfo functions[] = { |
| 541 | {0, nullptr, "GetSystemEvent"}, | 548 | {0, nullptr, "GetSystemEvent"}, |
| @@ -554,8 +561,8 @@ public: | |||
| 554 | class IOAuthProcedureForUserRegistration final | 561 | class IOAuthProcedureForUserRegistration final |
| 555 | : public ServiceFramework<IOAuthProcedureForUserRegistration> { | 562 | : public ServiceFramework<IOAuthProcedureForUserRegistration> { |
| 556 | public: | 563 | public: |
| 557 | explicit IOAuthProcedureForUserRegistration(Common::UUID user_id) | 564 | explicit IOAuthProcedureForUserRegistration(Core::System& system_, Common::UUID) |
| 558 | : ServiceFramework("IOAuthProcedureForUserRegistration") { | 565 | : ServiceFramework{system_, "IOAuthProcedureForUserRegistration"} { |
| 559 | // clang-format off | 566 | // clang-format off |
| 560 | static const FunctionInfo functions[] = { | 567 | static const FunctionInfo functions[] = { |
| 561 | {0, nullptr, "PrepareAsync"}, | 568 | {0, nullptr, "PrepareAsync"}, |
| @@ -578,7 +585,7 @@ public: | |||
| 578 | 585 | ||
| 579 | class DAUTH_O final : public ServiceFramework<DAUTH_O> { | 586 | class DAUTH_O final : public ServiceFramework<DAUTH_O> { |
| 580 | public: | 587 | public: |
| 581 | explicit DAUTH_O(Common::UUID) : ServiceFramework("dauth:o") { | 588 | explicit DAUTH_O(Core::System& system_, Common::UUID) : ServiceFramework{system_, "dauth:o"} { |
| 582 | // clang-format off | 589 | // clang-format off |
| 583 | static const FunctionInfo functions[] = { | 590 | static const FunctionInfo functions[] = { |
| 584 | {0, nullptr, "EnsureAuthenticationTokenCacheAsync"}, // [5.0.0-5.1.0] GeneratePostData | 591 | {0, nullptr, "EnsureAuthenticationTokenCacheAsync"}, // [5.0.0-5.1.0] GeneratePostData |
| @@ -597,7 +604,8 @@ public: | |||
| 597 | // 6.0.0+ | 604 | // 6.0.0+ |
| 598 | class IAsyncResult final : public ServiceFramework<IAsyncResult> { | 605 | class IAsyncResult final : public ServiceFramework<IAsyncResult> { |
| 599 | public: | 606 | public: |
| 600 | explicit IAsyncResult(Common::UUID user_id) : ServiceFramework("IAsyncResult") { | 607 | explicit IAsyncResult(Core::System& system_, Common::UUID) |
| 608 | : ServiceFramework{system_, "IAsyncResult"} { | ||
| 601 | // clang-format off | 609 | // clang-format off |
| 602 | static const FunctionInfo functions[] = { | 610 | static const FunctionInfo functions[] = { |
| 603 | {0, nullptr, "GetResult"}, | 611 | {0, nullptr, "GetResult"}, |
| @@ -656,7 +664,7 @@ void Module::Interface::GetProfile(Kernel::HLERequestContext& ctx) { | |||
| 656 | 664 | ||
| 657 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 665 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 658 | rb.Push(RESULT_SUCCESS); | 666 | rb.Push(RESULT_SUCCESS); |
| 659 | rb.PushIpcInterface<IProfile>(user_id, *profile_manager); | 667 | rb.PushIpcInterface<IProfile>(system, user_id, *profile_manager); |
| 660 | } | 668 | } |
| 661 | 669 | ||
| 662 | void Module::Interface::IsUserRegistrationRequestPermitted(Kernel::HLERequestContext& ctx) { | 670 | void Module::Interface::IsUserRegistrationRequestPermitted(Kernel::HLERequestContext& ctx) { |
| @@ -731,7 +739,7 @@ void Module::Interface::GetBaasAccountManagerForApplication(Kernel::HLERequestCo | |||
| 731 | LOG_DEBUG(Service_ACC, "called"); | 739 | LOG_DEBUG(Service_ACC, "called"); |
| 732 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 740 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 733 | rb.Push(RESULT_SUCCESS); | 741 | rb.Push(RESULT_SUCCESS); |
| 734 | rb.PushIpcInterface<IManagerForApplication>(profile_manager->GetLastOpenedUser()); | 742 | rb.PushIpcInterface<IManagerForApplication>(system, profile_manager->GetLastOpenedUser()); |
| 735 | } | 743 | } |
| 736 | 744 | ||
| 737 | void Module::Interface::IsUserAccountSwitchLocked(Kernel::HLERequestContext& ctx) { | 745 | void Module::Interface::IsUserAccountSwitchLocked(Kernel::HLERequestContext& ctx) { |
| @@ -769,7 +777,7 @@ void Module::Interface::GetProfileEditor(Kernel::HLERequestContext& ctx) { | |||
| 769 | 777 | ||
| 770 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 778 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 771 | rb.Push(RESULT_SUCCESS); | 779 | rb.Push(RESULT_SUCCESS); |
| 772 | rb.PushIpcInterface<IProfileEditor>(user_id, *profile_manager); | 780 | rb.PushIpcInterface<IProfileEditor>(system, user_id, *profile_manager); |
| 773 | } | 781 | } |
| 774 | 782 | ||
| 775 | void Module::Interface::ListQualifiedUsers(Kernel::HLERequestContext& ctx) { | 783 | void Module::Interface::ListQualifiedUsers(Kernel::HLERequestContext& ctx) { |
| @@ -791,7 +799,7 @@ void Module::Interface::LoadOpenContext(Kernel::HLERequestContext& ctx) { | |||
| 791 | // TODO: Find the differences between this and GetBaasAccountManagerForApplication | 799 | // TODO: Find the differences between this and GetBaasAccountManagerForApplication |
| 792 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 800 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 793 | rb.Push(RESULT_SUCCESS); | 801 | rb.Push(RESULT_SUCCESS); |
| 794 | rb.PushIpcInterface<IManagerForApplication>(profile_manager->GetLastOpenedUser()); | 802 | rb.PushIpcInterface<IManagerForApplication>(system, profile_manager->GetLastOpenedUser()); |
| 795 | } | 803 | } |
| 796 | 804 | ||
| 797 | void Module::Interface::ListOpenContextStoredUsers(Kernel::HLERequestContext& ctx) { | 805 | void Module::Interface::ListOpenContextStoredUsers(Kernel::HLERequestContext& ctx) { |
| @@ -827,11 +835,11 @@ void Module::Interface::TrySelectUserWithoutInteraction(Kernel::HLERequestContex | |||
| 827 | rb.PushRaw<u128>(profile_manager->GetUser(0)->uuid); | 835 | rb.PushRaw<u128>(profile_manager->GetUser(0)->uuid); |
| 828 | } | 836 | } |
| 829 | 837 | ||
| 830 | Module::Interface::Interface(std::shared_ptr<Module> module, | 838 | Module::Interface::Interface(std::shared_ptr<Module> module_, |
| 831 | std::shared_ptr<ProfileManager> profile_manager, Core::System& system, | 839 | std::shared_ptr<ProfileManager> profile_manager_, |
| 832 | const char* name) | 840 | Core::System& system_, const char* name) |
| 833 | : ServiceFramework(name), module(std::move(module)), | 841 | : ServiceFramework{system_, name}, module{std::move(module_)}, profile_manager{std::move( |
| 834 | profile_manager(std::move(profile_manager)), system(system) {} | 842 | profile_manager_)} {} |
| 835 | 843 | ||
| 836 | Module::Interface::~Interface() = default; | 844 | Module::Interface::~Interface() = default; |
| 837 | 845 | ||
diff --git a/src/core/hle/service/acc/acc.h b/src/core/hle/service/acc/acc.h index c611efd89..ab8edc049 100644 --- a/src/core/hle/service/acc/acc.h +++ b/src/core/hle/service/acc/acc.h | |||
| @@ -15,8 +15,8 @@ class Module final { | |||
| 15 | public: | 15 | public: |
| 16 | class Interface : public ServiceFramework<Interface> { | 16 | class Interface : public ServiceFramework<Interface> { |
| 17 | public: | 17 | public: |
| 18 | explicit Interface(std::shared_ptr<Module> module, | 18 | explicit Interface(std::shared_ptr<Module> module_, |
| 19 | std::shared_ptr<ProfileManager> profile_manager, Core::System& system, | 19 | std::shared_ptr<ProfileManager> profile_manager_, Core::System& system_, |
| 20 | const char* name); | 20 | const char* name); |
| 21 | ~Interface() override; | 21 | ~Interface() override; |
| 22 | 22 | ||
| @@ -60,7 +60,6 @@ public: | |||
| 60 | protected: | 60 | protected: |
| 61 | std::shared_ptr<Module> module; | 61 | std::shared_ptr<Module> module; |
| 62 | std::shared_ptr<ProfileManager> profile_manager; | 62 | std::shared_ptr<ProfileManager> profile_manager; |
| 63 | Core::System& system; | ||
| 64 | }; | 63 | }; |
| 65 | }; | 64 | }; |
| 66 | 65 | ||
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 703a9b234..38d877f6e 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp | |||
| @@ -64,7 +64,7 @@ struct LaunchParameterAccountPreselectedUser { | |||
| 64 | static_assert(sizeof(LaunchParameterAccountPreselectedUser) == 0x88); | 64 | static_assert(sizeof(LaunchParameterAccountPreselectedUser) == 0x88); |
| 65 | 65 | ||
| 66 | IWindowController::IWindowController(Core::System& system_) | 66 | IWindowController::IWindowController(Core::System& system_) |
| 67 | : ServiceFramework("IWindowController"), system{system_} { | 67 | : ServiceFramework{system_, "IWindowController"} { |
| 68 | // clang-format off | 68 | // clang-format off |
| 69 | static const FunctionInfo functions[] = { | 69 | static const FunctionInfo functions[] = { |
| 70 | {0, nullptr, "CreateWindow"}, | 70 | {0, nullptr, "CreateWindow"}, |
| @@ -99,7 +99,8 @@ void IWindowController::AcquireForegroundRights(Kernel::HLERequestContext& ctx) | |||
| 99 | rb.Push(RESULT_SUCCESS); | 99 | rb.Push(RESULT_SUCCESS); |
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | IAudioController::IAudioController() : ServiceFramework("IAudioController") { | 102 | IAudioController::IAudioController(Core::System& system_) |
| 103 | : ServiceFramework{system_, "IAudioController"} { | ||
| 103 | // clang-format off | 104 | // clang-format off |
| 104 | static const FunctionInfo functions[] = { | 105 | static const FunctionInfo functions[] = { |
| 105 | {0, &IAudioController::SetExpectedMasterVolume, "SetExpectedMasterVolume"}, | 106 | {0, &IAudioController::SetExpectedMasterVolume, "SetExpectedMasterVolume"}, |
| @@ -180,7 +181,8 @@ void IAudioController::SetTransparentAudioRate(Kernel::HLERequestContext& ctx) { | |||
| 180 | rb.Push(RESULT_SUCCESS); | 181 | rb.Push(RESULT_SUCCESS); |
| 181 | } | 182 | } |
| 182 | 183 | ||
| 183 | IDisplayController::IDisplayController() : ServiceFramework("IDisplayController") { | 184 | IDisplayController::IDisplayController(Core::System& system_) |
| 185 | : ServiceFramework{system_, "IDisplayController"} { | ||
| 184 | // clang-format off | 186 | // clang-format off |
| 185 | static const FunctionInfo functions[] = { | 187 | static const FunctionInfo functions[] = { |
| 186 | {0, nullptr, "GetLastForegroundCaptureImage"}, | 188 | {0, nullptr, "GetLastForegroundCaptureImage"}, |
| @@ -219,7 +221,8 @@ IDisplayController::IDisplayController() : ServiceFramework("IDisplayController" | |||
| 219 | 221 | ||
| 220 | IDisplayController::~IDisplayController() = default; | 222 | IDisplayController::~IDisplayController() = default; |
| 221 | 223 | ||
| 222 | IDebugFunctions::IDebugFunctions() : ServiceFramework{"IDebugFunctions"} { | 224 | IDebugFunctions::IDebugFunctions(Core::System& system_) |
| 225 | : ServiceFramework{system_, "IDebugFunctions"} { | ||
| 223 | // clang-format off | 226 | // clang-format off |
| 224 | static const FunctionInfo functions[] = { | 227 | static const FunctionInfo functions[] = { |
| 225 | {0, nullptr, "NotifyMessageToHomeMenuForDebug"}, | 228 | {0, nullptr, "NotifyMessageToHomeMenuForDebug"}, |
| @@ -246,8 +249,8 @@ IDebugFunctions::IDebugFunctions() : ServiceFramework{"IDebugFunctions"} { | |||
| 246 | 249 | ||
| 247 | IDebugFunctions::~IDebugFunctions() = default; | 250 | IDebugFunctions::~IDebugFunctions() = default; |
| 248 | 251 | ||
| 249 | ISelfController::ISelfController(Core::System& system, NVFlinger::NVFlinger& nvflinger) | 252 | ISelfController::ISelfController(Core::System& system_, NVFlinger::NVFlinger& nvflinger_) |
| 250 | : ServiceFramework("ISelfController"), system(system), nvflinger(nvflinger) { | 253 | : ServiceFramework{system_, "ISelfController"}, nvflinger{nvflinger_} { |
| 251 | // clang-format off | 254 | // clang-format off |
| 252 | static const FunctionInfo functions[] = { | 255 | static const FunctionInfo functions[] = { |
| 253 | {0, &ISelfController::Exit, "Exit"}, | 256 | {0, &ISelfController::Exit, "Exit"}, |
| @@ -605,9 +608,9 @@ void AppletMessageQueue::RequestExit() { | |||
| 605 | PushMessage(AppletMessage::ExitRequested); | 608 | PushMessage(AppletMessage::ExitRequested); |
| 606 | } | 609 | } |
| 607 | 610 | ||
| 608 | ICommonStateGetter::ICommonStateGetter(Core::System& system, | 611 | ICommonStateGetter::ICommonStateGetter(Core::System& system_, |
| 609 | std::shared_ptr<AppletMessageQueue> msg_queue) | 612 | std::shared_ptr<AppletMessageQueue> msg_queue_) |
| 610 | : ServiceFramework("ICommonStateGetter"), system(system), msg_queue(std::move(msg_queue)) { | 613 | : ServiceFramework{system_, "ICommonStateGetter"}, msg_queue{std::move(msg_queue_)} { |
| 611 | // clang-format off | 614 | // clang-format off |
| 612 | static const FunctionInfo functions[] = { | 615 | static const FunctionInfo functions[] = { |
| 613 | {0, &ICommonStateGetter::GetEventHandle, "GetEventHandle"}, | 616 | {0, &ICommonStateGetter::GetEventHandle, "GetEventHandle"}, |
| @@ -795,8 +798,9 @@ private: | |||
| 795 | std::vector<u8> buffer; | 798 | std::vector<u8> buffer; |
| 796 | }; | 799 | }; |
| 797 | 800 | ||
| 798 | IStorage::IStorage(std::vector<u8>&& buffer) | 801 | IStorage::IStorage(Core::System& system_, std::vector<u8>&& buffer) |
| 799 | : ServiceFramework("IStorage"), impl{std::make_shared<StorageDataImpl>(std::move(buffer))} { | 802 | : ServiceFramework{system_, "IStorage"}, impl{std::make_shared<StorageDataImpl>( |
| 803 | std::move(buffer))} { | ||
| 800 | Register(); | 804 | Register(); |
| 801 | } | 805 | } |
| 802 | 806 | ||
| @@ -819,7 +823,7 @@ void IStorage::Open(Kernel::HLERequestContext& ctx) { | |||
| 819 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 823 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 820 | 824 | ||
| 821 | rb.Push(RESULT_SUCCESS); | 825 | rb.Push(RESULT_SUCCESS); |
| 822 | rb.PushIpcInterface<IStorageAccessor>(*this); | 826 | rb.PushIpcInterface<IStorageAccessor>(system, *this); |
| 823 | } | 827 | } |
| 824 | 828 | ||
| 825 | void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { | 829 | void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { |
| @@ -841,8 +845,8 @@ void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) { | |||
| 841 | 845 | ||
| 842 | class ILibraryAppletAccessor final : public ServiceFramework<ILibraryAppletAccessor> { | 846 | class ILibraryAppletAccessor final : public ServiceFramework<ILibraryAppletAccessor> { |
| 843 | public: | 847 | public: |
| 844 | explicit ILibraryAppletAccessor(std::shared_ptr<Applets::Applet> applet) | 848 | explicit ILibraryAppletAccessor(Core::System& system_, std::shared_ptr<Applets::Applet> applet_) |
| 845 | : ServiceFramework("ILibraryAppletAccessor"), applet(std::move(applet)) { | 849 | : ServiceFramework{system_, "ILibraryAppletAccessor"}, applet{std::move(applet_)} { |
| 846 | // clang-format off | 850 | // clang-format off |
| 847 | static const FunctionInfo functions[] = { | 851 | static const FunctionInfo functions[] = { |
| 848 | {0, &ILibraryAppletAccessor::GetAppletStateChangedEvent, "GetAppletStateChangedEvent"}, | 852 | {0, &ILibraryAppletAccessor::GetAppletStateChangedEvent, "GetAppletStateChangedEvent"}, |
| @@ -997,8 +1001,8 @@ private: | |||
| 997 | std::shared_ptr<Applets::Applet> applet; | 1001 | std::shared_ptr<Applets::Applet> applet; |
| 998 | }; | 1002 | }; |
| 999 | 1003 | ||
| 1000 | IStorageAccessor::IStorageAccessor(IStorage& storage) | 1004 | IStorageAccessor::IStorageAccessor(Core::System& system_, IStorage& backing_) |
| 1001 | : ServiceFramework("IStorageAccessor"), backing(storage) { | 1005 | : ServiceFramework{system_, "IStorageAccessor"}, backing{backing_} { |
| 1002 | // clang-format off | 1006 | // clang-format off |
| 1003 | static const FunctionInfo functions[] = { | 1007 | static const FunctionInfo functions[] = { |
| 1004 | {0, &IStorageAccessor::GetSize, "GetSize"}, | 1008 | {0, &IStorageAccessor::GetSize, "GetSize"}, |
| @@ -1069,7 +1073,7 @@ void IStorageAccessor::Read(Kernel::HLERequestContext& ctx) { | |||
| 1069 | } | 1073 | } |
| 1070 | 1074 | ||
| 1071 | ILibraryAppletCreator::ILibraryAppletCreator(Core::System& system_) | 1075 | ILibraryAppletCreator::ILibraryAppletCreator(Core::System& system_) |
| 1072 | : ServiceFramework("ILibraryAppletCreator"), system{system_} { | 1076 | : ServiceFramework{system_, "ILibraryAppletCreator"} { |
| 1073 | static const FunctionInfo functions[] = { | 1077 | static const FunctionInfo functions[] = { |
| 1074 | {0, &ILibraryAppletCreator::CreateLibraryApplet, "CreateLibraryApplet"}, | 1078 | {0, &ILibraryAppletCreator::CreateLibraryApplet, "CreateLibraryApplet"}, |
| 1075 | {1, nullptr, "TerminateAllLibraryApplets"}, | 1079 | {1, nullptr, "TerminateAllLibraryApplets"}, |
| @@ -1105,7 +1109,7 @@ void ILibraryAppletCreator::CreateLibraryApplet(Kernel::HLERequestContext& ctx) | |||
| 1105 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 1109 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 1106 | 1110 | ||
| 1107 | rb.Push(RESULT_SUCCESS); | 1111 | rb.Push(RESULT_SUCCESS); |
| 1108 | rb.PushIpcInterface<AM::ILibraryAppletAccessor>(applet); | 1112 | rb.PushIpcInterface<ILibraryAppletAccessor>(system, applet); |
| 1109 | } | 1113 | } |
| 1110 | 1114 | ||
| 1111 | void ILibraryAppletCreator::CreateStorage(Kernel::HLERequestContext& ctx) { | 1115 | void ILibraryAppletCreator::CreateStorage(Kernel::HLERequestContext& ctx) { |
| @@ -1117,7 +1121,7 @@ void ILibraryAppletCreator::CreateStorage(Kernel::HLERequestContext& ctx) { | |||
| 1117 | 1121 | ||
| 1118 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 1122 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 1119 | rb.Push(RESULT_SUCCESS); | 1123 | rb.Push(RESULT_SUCCESS); |
| 1120 | rb.PushIpcInterface<AM::IStorage>(std::move(buffer)); | 1124 | rb.PushIpcInterface<IStorage>(system, std::move(buffer)); |
| 1121 | } | 1125 | } |
| 1122 | 1126 | ||
| 1123 | void ILibraryAppletCreator::CreateTransferMemoryStorage(Kernel::HLERequestContext& ctx) { | 1127 | void ILibraryAppletCreator::CreateTransferMemoryStorage(Kernel::HLERequestContext& ctx) { |
| @@ -1144,11 +1148,11 @@ void ILibraryAppletCreator::CreateTransferMemoryStorage(Kernel::HLERequestContex | |||
| 1144 | 1148 | ||
| 1145 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 1149 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 1146 | rb.Push(RESULT_SUCCESS); | 1150 | rb.Push(RESULT_SUCCESS); |
| 1147 | rb.PushIpcInterface<IStorage>(std::move(memory)); | 1151 | rb.PushIpcInterface<IStorage>(system, std::move(memory)); |
| 1148 | } | 1152 | } |
| 1149 | 1153 | ||
| 1150 | IApplicationFunctions::IApplicationFunctions(Core::System& system_) | 1154 | IApplicationFunctions::IApplicationFunctions(Core::System& system_) |
| 1151 | : ServiceFramework("IApplicationFunctions"), system{system_} { | 1155 | : ServiceFramework{system_, "IApplicationFunctions"} { |
| 1152 | // clang-format off | 1156 | // clang-format off |
| 1153 | static const FunctionInfo functions[] = { | 1157 | static const FunctionInfo functions[] = { |
| 1154 | {1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"}, | 1158 | {1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"}, |
| @@ -1300,7 +1304,7 @@ void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) { | |||
| 1300 | if (data.has_value()) { | 1304 | if (data.has_value()) { |
| 1301 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 1305 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 1302 | rb.Push(RESULT_SUCCESS); | 1306 | rb.Push(RESULT_SUCCESS); |
| 1303 | rb.PushIpcInterface<IStorage>(std::move(*data)); | 1307 | rb.PushIpcInterface<IStorage>(system, std::move(*data)); |
| 1304 | launch_popped_application_specific = true; | 1308 | launch_popped_application_specific = true; |
| 1305 | return; | 1309 | return; |
| 1306 | } | 1310 | } |
| @@ -1323,7 +1327,7 @@ void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) { | |||
| 1323 | std::vector<u8> buffer(sizeof(LaunchParameterAccountPreselectedUser)); | 1327 | std::vector<u8> buffer(sizeof(LaunchParameterAccountPreselectedUser)); |
| 1324 | std::memcpy(buffer.data(), ¶ms, buffer.size()); | 1328 | std::memcpy(buffer.data(), ¶ms, buffer.size()); |
| 1325 | 1329 | ||
| 1326 | rb.PushIpcInterface<IStorage>(std::move(buffer)); | 1330 | rb.PushIpcInterface<IStorage>(system, std::move(buffer)); |
| 1327 | launch_popped_account_preselect = true; | 1331 | launch_popped_account_preselect = true; |
| 1328 | return; | 1332 | return; |
| 1329 | } | 1333 | } |
| @@ -1621,14 +1625,14 @@ void InstallInterfaces(SM::ServiceManager& service_manager, NVFlinger::NVFlinger | |||
| 1621 | 1625 | ||
| 1622 | std::make_shared<AppletAE>(nvflinger, message_queue, system)->InstallAsService(service_manager); | 1626 | std::make_shared<AppletAE>(nvflinger, message_queue, system)->InstallAsService(service_manager); |
| 1623 | std::make_shared<AppletOE>(nvflinger, message_queue, system)->InstallAsService(service_manager); | 1627 | std::make_shared<AppletOE>(nvflinger, message_queue, system)->InstallAsService(service_manager); |
| 1624 | std::make_shared<IdleSys>()->InstallAsService(service_manager); | 1628 | std::make_shared<IdleSys>(system)->InstallAsService(service_manager); |
| 1625 | std::make_shared<OMM>()->InstallAsService(service_manager); | 1629 | std::make_shared<OMM>(system)->InstallAsService(service_manager); |
| 1626 | std::make_shared<SPSM>()->InstallAsService(service_manager); | 1630 | std::make_shared<SPSM>(system)->InstallAsService(service_manager); |
| 1627 | std::make_shared<TCAP>()->InstallAsService(service_manager); | 1631 | std::make_shared<TCAP>(system)->InstallAsService(service_manager); |
| 1628 | } | 1632 | } |
| 1629 | 1633 | ||
| 1630 | IHomeMenuFunctions::IHomeMenuFunctions(Kernel::KernelCore& kernel) | 1634 | IHomeMenuFunctions::IHomeMenuFunctions(Core::System& system_) |
| 1631 | : ServiceFramework("IHomeMenuFunctions"), kernel(kernel) { | 1635 | : ServiceFramework{system_, "IHomeMenuFunctions"} { |
| 1632 | // clang-format off | 1636 | // clang-format off |
| 1633 | static const FunctionInfo functions[] = { | 1637 | static const FunctionInfo functions[] = { |
| 1634 | {10, &IHomeMenuFunctions::RequestToGetForeground, "RequestToGetForeground"}, | 1638 | {10, &IHomeMenuFunctions::RequestToGetForeground, "RequestToGetForeground"}, |
| @@ -1647,7 +1651,7 @@ IHomeMenuFunctions::IHomeMenuFunctions(Kernel::KernelCore& kernel) | |||
| 1647 | RegisterHandlers(functions); | 1651 | RegisterHandlers(functions); |
| 1648 | 1652 | ||
| 1649 | pop_from_general_channel_event = Kernel::WritableEvent::CreateEventPair( | 1653 | pop_from_general_channel_event = Kernel::WritableEvent::CreateEventPair( |
| 1650 | kernel, "IHomeMenuFunctions:PopFromGeneralChannelEvent"); | 1654 | system.Kernel(), "IHomeMenuFunctions:PopFromGeneralChannelEvent"); |
| 1651 | } | 1655 | } |
| 1652 | 1656 | ||
| 1653 | IHomeMenuFunctions::~IHomeMenuFunctions() = default; | 1657 | IHomeMenuFunctions::~IHomeMenuFunctions() = default; |
| @@ -1667,7 +1671,8 @@ void IHomeMenuFunctions::GetPopFromGeneralChannelEvent(Kernel::HLERequestContext | |||
| 1667 | rb.PushCopyObjects(pop_from_general_channel_event.readable); | 1671 | rb.PushCopyObjects(pop_from_general_channel_event.readable); |
| 1668 | } | 1672 | } |
| 1669 | 1673 | ||
| 1670 | IGlobalStateController::IGlobalStateController() : ServiceFramework("IGlobalStateController") { | 1674 | IGlobalStateController::IGlobalStateController(Core::System& system_) |
| 1675 | : ServiceFramework{system_, "IGlobalStateController"} { | ||
| 1671 | // clang-format off | 1676 | // clang-format off |
| 1672 | static const FunctionInfo functions[] = { | 1677 | static const FunctionInfo functions[] = { |
| 1673 | {0, nullptr, "RequestToEnterSleep"}, | 1678 | {0, nullptr, "RequestToEnterSleep"}, |
| @@ -1690,7 +1695,8 @@ IGlobalStateController::IGlobalStateController() : ServiceFramework("IGlobalStat | |||
| 1690 | 1695 | ||
| 1691 | IGlobalStateController::~IGlobalStateController() = default; | 1696 | IGlobalStateController::~IGlobalStateController() = default; |
| 1692 | 1697 | ||
| 1693 | IApplicationCreator::IApplicationCreator() : ServiceFramework("IApplicationCreator") { | 1698 | IApplicationCreator::IApplicationCreator(Core::System& system_) |
| 1699 | : ServiceFramework{system_, "IApplicationCreator"} { | ||
| 1694 | // clang-format off | 1700 | // clang-format off |
| 1695 | static const FunctionInfo functions[] = { | 1701 | static const FunctionInfo functions[] = { |
| 1696 | {0, nullptr, "CreateApplication"}, | 1702 | {0, nullptr, "CreateApplication"}, |
| @@ -1705,8 +1711,8 @@ IApplicationCreator::IApplicationCreator() : ServiceFramework("IApplicationCreat | |||
| 1705 | 1711 | ||
| 1706 | IApplicationCreator::~IApplicationCreator() = default; | 1712 | IApplicationCreator::~IApplicationCreator() = default; |
| 1707 | 1713 | ||
| 1708 | IProcessWindingController::IProcessWindingController() | 1714 | IProcessWindingController::IProcessWindingController(Core::System& system_) |
| 1709 | : ServiceFramework("IProcessWindingController") { | 1715 | : ServiceFramework{system_, "IProcessWindingController"} { |
| 1710 | // clang-format off | 1716 | // clang-format off |
| 1711 | static const FunctionInfo functions[] = { | 1717 | static const FunctionInfo functions[] = { |
| 1712 | {0, nullptr, "GetLaunchReason"}, | 1718 | {0, nullptr, "GetLaunchReason"}, |
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h index af97c303a..b1da0d081 100644 --- a/src/core/hle/service/am/am.h +++ b/src/core/hle/service/am/am.h | |||
| @@ -77,13 +77,11 @@ public: | |||
| 77 | private: | 77 | private: |
| 78 | void GetAppletResourceUserId(Kernel::HLERequestContext& ctx); | 78 | void GetAppletResourceUserId(Kernel::HLERequestContext& ctx); |
| 79 | void AcquireForegroundRights(Kernel::HLERequestContext& ctx); | 79 | void AcquireForegroundRights(Kernel::HLERequestContext& ctx); |
| 80 | |||
| 81 | Core::System& system; | ||
| 82 | }; | 80 | }; |
| 83 | 81 | ||
| 84 | class IAudioController final : public ServiceFramework<IAudioController> { | 82 | class IAudioController final : public ServiceFramework<IAudioController> { |
| 85 | public: | 83 | public: |
| 86 | IAudioController(); | 84 | explicit IAudioController(Core::System& system_); |
| 87 | ~IAudioController() override; | 85 | ~IAudioController() override; |
| 88 | 86 | ||
| 89 | private: | 87 | private: |
| @@ -109,13 +107,13 @@ private: | |||
| 109 | 107 | ||
| 110 | class IDisplayController final : public ServiceFramework<IDisplayController> { | 108 | class IDisplayController final : public ServiceFramework<IDisplayController> { |
| 111 | public: | 109 | public: |
| 112 | IDisplayController(); | 110 | explicit IDisplayController(Core::System& system_); |
| 113 | ~IDisplayController() override; | 111 | ~IDisplayController() override; |
| 114 | }; | 112 | }; |
| 115 | 113 | ||
| 116 | class IDebugFunctions final : public ServiceFramework<IDebugFunctions> { | 114 | class IDebugFunctions final : public ServiceFramework<IDebugFunctions> { |
| 117 | public: | 115 | public: |
| 118 | IDebugFunctions(); | 116 | explicit IDebugFunctions(Core::System& system_); |
| 119 | ~IDebugFunctions() override; | 117 | ~IDebugFunctions() override; |
| 120 | }; | 118 | }; |
| 121 | 119 | ||
| @@ -154,7 +152,6 @@ private: | |||
| 154 | Disable = 2, | 152 | Disable = 2, |
| 155 | }; | 153 | }; |
| 156 | 154 | ||
| 157 | Core::System& system; | ||
| 158 | NVFlinger::NVFlinger& nvflinger; | 155 | NVFlinger::NVFlinger& nvflinger; |
| 159 | Kernel::EventPair launchable_event; | 156 | Kernel::EventPair launchable_event; |
| 160 | Kernel::EventPair accumulated_suspended_tick_changed_event; | 157 | Kernel::EventPair accumulated_suspended_tick_changed_event; |
| @@ -167,8 +164,8 @@ private: | |||
| 167 | 164 | ||
| 168 | class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> { | 165 | class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> { |
| 169 | public: | 166 | public: |
| 170 | explicit ICommonStateGetter(Core::System& system, | 167 | explicit ICommonStateGetter(Core::System& system_, |
| 171 | std::shared_ptr<AppletMessageQueue> msg_queue); | 168 | std::shared_ptr<AppletMessageQueue> msg_queue_); |
| 172 | ~ICommonStateGetter() override; | 169 | ~ICommonStateGetter() override; |
| 173 | 170 | ||
| 174 | private: | 171 | private: |
| @@ -196,7 +193,6 @@ private: | |||
| 196 | void GetDefaultDisplayResolution(Kernel::HLERequestContext& ctx); | 193 | void GetDefaultDisplayResolution(Kernel::HLERequestContext& ctx); |
| 197 | void SetCpuBoostMode(Kernel::HLERequestContext& ctx); | 194 | void SetCpuBoostMode(Kernel::HLERequestContext& ctx); |
| 198 | 195 | ||
| 199 | Core::System& system; | ||
| 200 | std::shared_ptr<AppletMessageQueue> msg_queue; | 196 | std::shared_ptr<AppletMessageQueue> msg_queue; |
| 201 | bool vr_mode_state{}; | 197 | bool vr_mode_state{}; |
| 202 | }; | 198 | }; |
| @@ -211,7 +207,7 @@ public: | |||
| 211 | 207 | ||
| 212 | class IStorage final : public ServiceFramework<IStorage> { | 208 | class IStorage final : public ServiceFramework<IStorage> { |
| 213 | public: | 209 | public: |
| 214 | explicit IStorage(std::vector<u8>&& buffer); | 210 | explicit IStorage(Core::System& system_, std::vector<u8>&& buffer); |
| 215 | ~IStorage() override; | 211 | ~IStorage() override; |
| 216 | 212 | ||
| 217 | std::vector<u8>& GetData() { | 213 | std::vector<u8>& GetData() { |
| @@ -235,7 +231,7 @@ private: | |||
| 235 | 231 | ||
| 236 | class IStorageAccessor final : public ServiceFramework<IStorageAccessor> { | 232 | class IStorageAccessor final : public ServiceFramework<IStorageAccessor> { |
| 237 | public: | 233 | public: |
| 238 | explicit IStorageAccessor(IStorage& backing); | 234 | explicit IStorageAccessor(Core::System& system_, IStorage& backing_); |
| 239 | ~IStorageAccessor() override; | 235 | ~IStorageAccessor() override; |
| 240 | 236 | ||
| 241 | private: | 237 | private: |
| @@ -255,8 +251,6 @@ private: | |||
| 255 | void CreateLibraryApplet(Kernel::HLERequestContext& ctx); | 251 | void CreateLibraryApplet(Kernel::HLERequestContext& ctx); |
| 256 | void CreateStorage(Kernel::HLERequestContext& ctx); | 252 | void CreateStorage(Kernel::HLERequestContext& ctx); |
| 257 | void CreateTransferMemoryStorage(Kernel::HLERequestContext& ctx); | 253 | void CreateTransferMemoryStorage(Kernel::HLERequestContext& ctx); |
| 258 | |||
| 259 | Core::System& system; | ||
| 260 | }; | 254 | }; |
| 261 | 255 | ||
| 262 | class IApplicationFunctions final : public ServiceFramework<IApplicationFunctions> { | 256 | class IApplicationFunctions final : public ServiceFramework<IApplicationFunctions> { |
| @@ -299,12 +293,11 @@ private: | |||
| 299 | s32 previous_program_index{-1}; | 293 | s32 previous_program_index{-1}; |
| 300 | Kernel::EventPair gpu_error_detected_event; | 294 | Kernel::EventPair gpu_error_detected_event; |
| 301 | Kernel::EventPair friend_invitation_storage_channel_event; | 295 | Kernel::EventPair friend_invitation_storage_channel_event; |
| 302 | Core::System& system; | ||
| 303 | }; | 296 | }; |
| 304 | 297 | ||
| 305 | class IHomeMenuFunctions final : public ServiceFramework<IHomeMenuFunctions> { | 298 | class IHomeMenuFunctions final : public ServiceFramework<IHomeMenuFunctions> { |
| 306 | public: | 299 | public: |
| 307 | explicit IHomeMenuFunctions(Kernel::KernelCore& kernel); | 300 | explicit IHomeMenuFunctions(Core::System& system_); |
| 308 | ~IHomeMenuFunctions() override; | 301 | ~IHomeMenuFunctions() override; |
| 309 | 302 | ||
| 310 | private: | 303 | private: |
| @@ -312,24 +305,23 @@ private: | |||
| 312 | void GetPopFromGeneralChannelEvent(Kernel::HLERequestContext& ctx); | 305 | void GetPopFromGeneralChannelEvent(Kernel::HLERequestContext& ctx); |
| 313 | 306 | ||
| 314 | Kernel::EventPair pop_from_general_channel_event; | 307 | Kernel::EventPair pop_from_general_channel_event; |
| 315 | Kernel::KernelCore& kernel; | ||
| 316 | }; | 308 | }; |
| 317 | 309 | ||
| 318 | class IGlobalStateController final : public ServiceFramework<IGlobalStateController> { | 310 | class IGlobalStateController final : public ServiceFramework<IGlobalStateController> { |
| 319 | public: | 311 | public: |
| 320 | IGlobalStateController(); | 312 | explicit IGlobalStateController(Core::System& system_); |
| 321 | ~IGlobalStateController() override; | 313 | ~IGlobalStateController() override; |
| 322 | }; | 314 | }; |
| 323 | 315 | ||
| 324 | class IApplicationCreator final : public ServiceFramework<IApplicationCreator> { | 316 | class IApplicationCreator final : public ServiceFramework<IApplicationCreator> { |
| 325 | public: | 317 | public: |
| 326 | IApplicationCreator(); | 318 | explicit IApplicationCreator(Core::System& system_); |
| 327 | ~IApplicationCreator() override; | 319 | ~IApplicationCreator() override; |
| 328 | }; | 320 | }; |
| 329 | 321 | ||
| 330 | class IProcessWindingController final : public ServiceFramework<IProcessWindingController> { | 322 | class IProcessWindingController final : public ServiceFramework<IProcessWindingController> { |
| 331 | public: | 323 | public: |
| 332 | IProcessWindingController(); | 324 | explicit IProcessWindingController(Core::System& system_); |
| 333 | ~IProcessWindingController() override; | 325 | ~IProcessWindingController() override; |
| 334 | }; | 326 | }; |
| 335 | 327 | ||
diff --git a/src/core/hle/service/am/applet_ae.cpp b/src/core/hle/service/am/applet_ae.cpp index 7de506b70..5421e0da0 100644 --- a/src/core/hle/service/am/applet_ae.cpp +++ b/src/core/hle/service/am/applet_ae.cpp | |||
| @@ -13,11 +13,11 @@ namespace Service::AM { | |||
| 13 | 13 | ||
| 14 | class ILibraryAppletProxy final : public ServiceFramework<ILibraryAppletProxy> { | 14 | class ILibraryAppletProxy final : public ServiceFramework<ILibraryAppletProxy> { |
| 15 | public: | 15 | public: |
| 16 | explicit ILibraryAppletProxy(NVFlinger::NVFlinger& nvflinger, | 16 | explicit ILibraryAppletProxy(NVFlinger::NVFlinger& nvflinger_, |
| 17 | std::shared_ptr<AppletMessageQueue> msg_queue, | 17 | std::shared_ptr<AppletMessageQueue> msg_queue_, |
| 18 | Core::System& system) | 18 | Core::System& system_) |
| 19 | : ServiceFramework("ILibraryAppletProxy"), nvflinger(nvflinger), | 19 | : ServiceFramework{system_, "ILibraryAppletProxy"}, nvflinger{nvflinger_}, |
| 20 | msg_queue(std::move(msg_queue)), system(system) { | 20 | msg_queue{std::move(msg_queue_)} { |
| 21 | // clang-format off | 21 | // clang-format off |
| 22 | static const FunctionInfo functions[] = { | 22 | static const FunctionInfo functions[] = { |
| 23 | {0, &ILibraryAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"}, | 23 | {0, &ILibraryAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"}, |
| @@ -66,7 +66,7 @@ private: | |||
| 66 | 66 | ||
| 67 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 67 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 68 | rb.Push(RESULT_SUCCESS); | 68 | rb.Push(RESULT_SUCCESS); |
| 69 | rb.PushIpcInterface<IAudioController>(); | 69 | rb.PushIpcInterface<IAudioController>(system); |
| 70 | } | 70 | } |
| 71 | 71 | ||
| 72 | void GetDisplayController(Kernel::HLERequestContext& ctx) { | 72 | void GetDisplayController(Kernel::HLERequestContext& ctx) { |
| @@ -74,7 +74,7 @@ private: | |||
| 74 | 74 | ||
| 75 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 75 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 76 | rb.Push(RESULT_SUCCESS); | 76 | rb.Push(RESULT_SUCCESS); |
| 77 | rb.PushIpcInterface<IDisplayController>(); | 77 | rb.PushIpcInterface<IDisplayController>(system); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | void GetProcessWindingController(Kernel::HLERequestContext& ctx) { | 80 | void GetProcessWindingController(Kernel::HLERequestContext& ctx) { |
| @@ -82,7 +82,7 @@ private: | |||
| 82 | 82 | ||
| 83 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 83 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 84 | rb.Push(RESULT_SUCCESS); | 84 | rb.Push(RESULT_SUCCESS); |
| 85 | rb.PushIpcInterface<IProcessWindingController>(); | 85 | rb.PushIpcInterface<IProcessWindingController>(system); |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | void GetDebugFunctions(Kernel::HLERequestContext& ctx) { | 88 | void GetDebugFunctions(Kernel::HLERequestContext& ctx) { |
| @@ -90,7 +90,7 @@ private: | |||
| 90 | 90 | ||
| 91 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 91 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 92 | rb.Push(RESULT_SUCCESS); | 92 | rb.Push(RESULT_SUCCESS); |
| 93 | rb.PushIpcInterface<IDebugFunctions>(); | 93 | rb.PushIpcInterface<IDebugFunctions>(system); |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) { | 96 | void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) { |
| @@ -111,15 +111,15 @@ private: | |||
| 111 | 111 | ||
| 112 | NVFlinger::NVFlinger& nvflinger; | 112 | NVFlinger::NVFlinger& nvflinger; |
| 113 | std::shared_ptr<AppletMessageQueue> msg_queue; | 113 | std::shared_ptr<AppletMessageQueue> msg_queue; |
| 114 | Core::System& system; | ||
| 115 | }; | 114 | }; |
| 116 | 115 | ||
| 117 | class ISystemAppletProxy final : public ServiceFramework<ISystemAppletProxy> { | 116 | class ISystemAppletProxy final : public ServiceFramework<ISystemAppletProxy> { |
| 118 | public: | 117 | public: |
| 119 | explicit ISystemAppletProxy(NVFlinger::NVFlinger& nvflinger, | 118 | explicit ISystemAppletProxy(NVFlinger::NVFlinger& nvflinger_, |
| 120 | std::shared_ptr<AppletMessageQueue> msg_queue, Core::System& system) | 119 | std::shared_ptr<AppletMessageQueue> msg_queue_, |
| 121 | : ServiceFramework("ISystemAppletProxy"), nvflinger(nvflinger), | 120 | Core::System& system_) |
| 122 | msg_queue(std::move(msg_queue)), system(system) { | 121 | : ServiceFramework{system_, "ISystemAppletProxy"}, nvflinger{nvflinger_}, |
| 122 | msg_queue{std::move(msg_queue_)} { | ||
| 123 | // clang-format off | 123 | // clang-format off |
| 124 | static const FunctionInfo functions[] = { | 124 | static const FunctionInfo functions[] = { |
| 125 | {0, &ISystemAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"}, | 125 | {0, &ISystemAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"}, |
| @@ -170,7 +170,7 @@ private: | |||
| 170 | 170 | ||
| 171 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 171 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 172 | rb.Push(RESULT_SUCCESS); | 172 | rb.Push(RESULT_SUCCESS); |
| 173 | rb.PushIpcInterface<IAudioController>(); | 173 | rb.PushIpcInterface<IAudioController>(system); |
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | void GetDisplayController(Kernel::HLERequestContext& ctx) { | 176 | void GetDisplayController(Kernel::HLERequestContext& ctx) { |
| @@ -178,7 +178,7 @@ private: | |||
| 178 | 178 | ||
| 179 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 179 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 180 | rb.Push(RESULT_SUCCESS); | 180 | rb.Push(RESULT_SUCCESS); |
| 181 | rb.PushIpcInterface<IDisplayController>(); | 181 | rb.PushIpcInterface<IDisplayController>(system); |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | void GetDebugFunctions(Kernel::HLERequestContext& ctx) { | 184 | void GetDebugFunctions(Kernel::HLERequestContext& ctx) { |
| @@ -186,7 +186,7 @@ private: | |||
| 186 | 186 | ||
| 187 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 187 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 188 | rb.Push(RESULT_SUCCESS); | 188 | rb.Push(RESULT_SUCCESS); |
| 189 | rb.PushIpcInterface<IDebugFunctions>(); | 189 | rb.PushIpcInterface<IDebugFunctions>(system); |
| 190 | } | 190 | } |
| 191 | 191 | ||
| 192 | void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) { | 192 | void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) { |
| @@ -202,7 +202,7 @@ private: | |||
| 202 | 202 | ||
| 203 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 203 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 204 | rb.Push(RESULT_SUCCESS); | 204 | rb.Push(RESULT_SUCCESS); |
| 205 | rb.PushIpcInterface<IHomeMenuFunctions>(system.Kernel()); | 205 | rb.PushIpcInterface<IHomeMenuFunctions>(system); |
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | void GetGlobalStateController(Kernel::HLERequestContext& ctx) { | 208 | void GetGlobalStateController(Kernel::HLERequestContext& ctx) { |
| @@ -210,7 +210,7 @@ private: | |||
| 210 | 210 | ||
| 211 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 211 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 212 | rb.Push(RESULT_SUCCESS); | 212 | rb.Push(RESULT_SUCCESS); |
| 213 | rb.PushIpcInterface<IGlobalStateController>(); | 213 | rb.PushIpcInterface<IGlobalStateController>(system); |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | void GetApplicationCreator(Kernel::HLERequestContext& ctx) { | 216 | void GetApplicationCreator(Kernel::HLERequestContext& ctx) { |
| @@ -218,12 +218,11 @@ private: | |||
| 218 | 218 | ||
| 219 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 219 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 220 | rb.Push(RESULT_SUCCESS); | 220 | rb.Push(RESULT_SUCCESS); |
| 221 | rb.PushIpcInterface<IApplicationCreator>(); | 221 | rb.PushIpcInterface<IApplicationCreator>(system); |
| 222 | } | 222 | } |
| 223 | 223 | ||
| 224 | NVFlinger::NVFlinger& nvflinger; | 224 | NVFlinger::NVFlinger& nvflinger; |
| 225 | std::shared_ptr<AppletMessageQueue> msg_queue; | 225 | std::shared_ptr<AppletMessageQueue> msg_queue; |
| 226 | Core::System& system; | ||
| 227 | }; | 226 | }; |
| 228 | 227 | ||
| 229 | void AppletAE::OpenSystemAppletProxy(Kernel::HLERequestContext& ctx) { | 228 | void AppletAE::OpenSystemAppletProxy(Kernel::HLERequestContext& ctx) { |
| @@ -250,10 +249,10 @@ void AppletAE::OpenLibraryAppletProxyOld(Kernel::HLERequestContext& ctx) { | |||
| 250 | rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger, msg_queue, system); | 249 | rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger, msg_queue, system); |
| 251 | } | 250 | } |
| 252 | 251 | ||
| 253 | AppletAE::AppletAE(NVFlinger::NVFlinger& nvflinger, std::shared_ptr<AppletMessageQueue> msg_queue, | 252 | AppletAE::AppletAE(NVFlinger::NVFlinger& nvflinger_, std::shared_ptr<AppletMessageQueue> msg_queue_, |
| 254 | Core::System& system) | 253 | Core::System& system_) |
| 255 | : ServiceFramework("appletAE"), nvflinger(nvflinger), msg_queue(std::move(msg_queue)), | 254 | : ServiceFramework{system_, "appletAE"}, nvflinger{nvflinger_}, msg_queue{ |
| 256 | system(system) { | 255 | std::move(msg_queue_)} { |
| 257 | // clang-format off | 256 | // clang-format off |
| 258 | static const FunctionInfo functions[] = { | 257 | static const FunctionInfo functions[] = { |
| 259 | {100, &AppletAE::OpenSystemAppletProxy, "OpenSystemAppletProxy"}, | 258 | {100, &AppletAE::OpenSystemAppletProxy, "OpenSystemAppletProxy"}, |
diff --git a/src/core/hle/service/am/applet_ae.h b/src/core/hle/service/am/applet_ae.h index 761844a1f..adb207349 100644 --- a/src/core/hle/service/am/applet_ae.h +++ b/src/core/hle/service/am/applet_ae.h | |||
| @@ -23,8 +23,8 @@ class AppletMessageQueue; | |||
| 23 | 23 | ||
| 24 | class AppletAE final : public ServiceFramework<AppletAE> { | 24 | class AppletAE final : public ServiceFramework<AppletAE> { |
| 25 | public: | 25 | public: |
| 26 | explicit AppletAE(NVFlinger::NVFlinger& nvflinger, | 26 | explicit AppletAE(NVFlinger::NVFlinger& nvflinger_, |
| 27 | std::shared_ptr<AppletMessageQueue> msg_queue, Core::System& system); | 27 | std::shared_ptr<AppletMessageQueue> msg_queue_, Core::System& system_); |
| 28 | ~AppletAE() override; | 28 | ~AppletAE() override; |
| 29 | 29 | ||
| 30 | const std::shared_ptr<AppletMessageQueue>& GetMessageQueue() const; | 30 | const std::shared_ptr<AppletMessageQueue>& GetMessageQueue() const; |
| @@ -36,7 +36,6 @@ private: | |||
| 36 | 36 | ||
| 37 | NVFlinger::NVFlinger& nvflinger; | 37 | NVFlinger::NVFlinger& nvflinger; |
| 38 | std::shared_ptr<AppletMessageQueue> msg_queue; | 38 | std::shared_ptr<AppletMessageQueue> msg_queue; |
| 39 | Core::System& system; | ||
| 40 | }; | 39 | }; |
| 41 | 40 | ||
| 42 | } // namespace AM | 41 | } // namespace AM |
diff --git a/src/core/hle/service/am/applet_oe.cpp b/src/core/hle/service/am/applet_oe.cpp index 7bed86ec4..f9eba8f52 100644 --- a/src/core/hle/service/am/applet_oe.cpp +++ b/src/core/hle/service/am/applet_oe.cpp | |||
| @@ -12,10 +12,11 @@ namespace Service::AM { | |||
| 12 | 12 | ||
| 13 | class IApplicationProxy final : public ServiceFramework<IApplicationProxy> { | 13 | class IApplicationProxy final : public ServiceFramework<IApplicationProxy> { |
| 14 | public: | 14 | public: |
| 15 | explicit IApplicationProxy(NVFlinger::NVFlinger& nvflinger, | 15 | explicit IApplicationProxy(NVFlinger::NVFlinger& nvflinger_, |
| 16 | std::shared_ptr<AppletMessageQueue> msg_queue, Core::System& system) | 16 | std::shared_ptr<AppletMessageQueue> msg_queue_, |
| 17 | : ServiceFramework("IApplicationProxy"), nvflinger(nvflinger), | 17 | Core::System& system_) |
| 18 | msg_queue(std::move(msg_queue)), system(system) { | 18 | : ServiceFramework{system_, "IApplicationProxy"}, nvflinger{nvflinger_}, |
| 19 | msg_queue{std::move(msg_queue_)} { | ||
| 19 | // clang-format off | 20 | // clang-format off |
| 20 | static const FunctionInfo functions[] = { | 21 | static const FunctionInfo functions[] = { |
| 21 | {0, &IApplicationProxy::GetCommonStateGetter, "GetCommonStateGetter"}, | 22 | {0, &IApplicationProxy::GetCommonStateGetter, "GetCommonStateGetter"}, |
| @@ -39,7 +40,7 @@ private: | |||
| 39 | 40 | ||
| 40 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 41 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 41 | rb.Push(RESULT_SUCCESS); | 42 | rb.Push(RESULT_SUCCESS); |
| 42 | rb.PushIpcInterface<IAudioController>(); | 43 | rb.PushIpcInterface<IAudioController>(system); |
| 43 | } | 44 | } |
| 44 | 45 | ||
| 45 | void GetDisplayController(Kernel::HLERequestContext& ctx) { | 46 | void GetDisplayController(Kernel::HLERequestContext& ctx) { |
| @@ -47,7 +48,7 @@ private: | |||
| 47 | 48 | ||
| 48 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 49 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 49 | rb.Push(RESULT_SUCCESS); | 50 | rb.Push(RESULT_SUCCESS); |
| 50 | rb.PushIpcInterface<IDisplayController>(); | 51 | rb.PushIpcInterface<IDisplayController>(system); |
| 51 | } | 52 | } |
| 52 | 53 | ||
| 53 | void GetDebugFunctions(Kernel::HLERequestContext& ctx) { | 54 | void GetDebugFunctions(Kernel::HLERequestContext& ctx) { |
| @@ -55,7 +56,7 @@ private: | |||
| 55 | 56 | ||
| 56 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 57 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 57 | rb.Push(RESULT_SUCCESS); | 58 | rb.Push(RESULT_SUCCESS); |
| 58 | rb.PushIpcInterface<IDebugFunctions>(); | 59 | rb.PushIpcInterface<IDebugFunctions>(system); |
| 59 | } | 60 | } |
| 60 | 61 | ||
| 61 | void GetWindowController(Kernel::HLERequestContext& ctx) { | 62 | void GetWindowController(Kernel::HLERequestContext& ctx) { |
| @@ -100,7 +101,6 @@ private: | |||
| 100 | 101 | ||
| 101 | NVFlinger::NVFlinger& nvflinger; | 102 | NVFlinger::NVFlinger& nvflinger; |
| 102 | std::shared_ptr<AppletMessageQueue> msg_queue; | 103 | std::shared_ptr<AppletMessageQueue> msg_queue; |
| 103 | Core::System& system; | ||
| 104 | }; | 104 | }; |
| 105 | 105 | ||
| 106 | void AppletOE::OpenApplicationProxy(Kernel::HLERequestContext& ctx) { | 106 | void AppletOE::OpenApplicationProxy(Kernel::HLERequestContext& ctx) { |
| @@ -111,10 +111,10 @@ void AppletOE::OpenApplicationProxy(Kernel::HLERequestContext& ctx) { | |||
| 111 | rb.PushIpcInterface<IApplicationProxy>(nvflinger, msg_queue, system); | 111 | rb.PushIpcInterface<IApplicationProxy>(nvflinger, msg_queue, system); |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | AppletOE::AppletOE(NVFlinger::NVFlinger& nvflinger, std::shared_ptr<AppletMessageQueue> msg_queue, | 114 | AppletOE::AppletOE(NVFlinger::NVFlinger& nvflinger_, std::shared_ptr<AppletMessageQueue> msg_queue_, |
| 115 | Core::System& system) | 115 | Core::System& system_) |
| 116 | : ServiceFramework("appletOE"), nvflinger(nvflinger), msg_queue(std::move(msg_queue)), | 116 | : ServiceFramework{system_, "appletOE"}, nvflinger{nvflinger_}, msg_queue{ |
| 117 | system(system) { | 117 | std::move(msg_queue_)} { |
| 118 | static const FunctionInfo functions[] = { | 118 | static const FunctionInfo functions[] = { |
| 119 | {0, &AppletOE::OpenApplicationProxy, "OpenApplicationProxy"}, | 119 | {0, &AppletOE::OpenApplicationProxy, "OpenApplicationProxy"}, |
| 120 | }; | 120 | }; |
diff --git a/src/core/hle/service/am/applet_oe.h b/src/core/hle/service/am/applet_oe.h index 88906d354..6c1aa255a 100644 --- a/src/core/hle/service/am/applet_oe.h +++ b/src/core/hle/service/am/applet_oe.h | |||
| @@ -23,8 +23,8 @@ class AppletMessageQueue; | |||
| 23 | 23 | ||
| 24 | class AppletOE final : public ServiceFramework<AppletOE> { | 24 | class AppletOE final : public ServiceFramework<AppletOE> { |
| 25 | public: | 25 | public: |
| 26 | explicit AppletOE(NVFlinger::NVFlinger& nvflinger, | 26 | explicit AppletOE(NVFlinger::NVFlinger& nvflinger_, |
| 27 | std::shared_ptr<AppletMessageQueue> msg_queue, Core::System& system); | 27 | std::shared_ptr<AppletMessageQueue> msg_queue_, Core::System& system_); |
| 28 | ~AppletOE() override; | 28 | ~AppletOE() override; |
| 29 | 29 | ||
| 30 | const std::shared_ptr<AppletMessageQueue>& GetMessageQueue() const; | 30 | const std::shared_ptr<AppletMessageQueue>& GetMessageQueue() const; |
| @@ -34,7 +34,6 @@ private: | |||
| 34 | 34 | ||
| 35 | NVFlinger::NVFlinger& nvflinger; | 35 | NVFlinger::NVFlinger& nvflinger; |
| 36 | std::shared_ptr<AppletMessageQueue> msg_queue; | 36 | std::shared_ptr<AppletMessageQueue> msg_queue; |
| 37 | Core::System& system; | ||
| 38 | }; | 37 | }; |
| 39 | 38 | ||
| 40 | } // namespace AM | 39 | } // namespace AM |
diff --git a/src/core/hle/service/am/applets/controller.cpp b/src/core/hle/service/am/applets/controller.cpp index 3ca63f020..e8ea4248b 100644 --- a/src/core/hle/service/am/applets/controller.cpp +++ b/src/core/hle/service/am/applets/controller.cpp | |||
| @@ -46,7 +46,7 @@ static Core::Frontend::ControllerParameters ConvertToFrontendParameters( | |||
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | Controller::Controller(Core::System& system_, const Core::Frontend::ControllerApplet& frontend_) | 48 | Controller::Controller(Core::System& system_, const Core::Frontend::ControllerApplet& frontend_) |
| 49 | : Applet{system_.Kernel()}, frontend(frontend_) {} | 49 | : Applet{system_.Kernel()}, frontend{frontend_}, system{system_} {} |
| 50 | 50 | ||
| 51 | Controller::~Controller() = default; | 51 | Controller::~Controller() = default; |
| 52 | 52 | ||
| @@ -245,7 +245,7 @@ void Controller::ConfigurationComplete() { | |||
| 245 | complete = true; | 245 | complete = true; |
| 246 | out_data = std::vector<u8>(sizeof(ControllerSupportResultInfo)); | 246 | out_data = std::vector<u8>(sizeof(ControllerSupportResultInfo)); |
| 247 | std::memcpy(out_data.data(), &result_info, out_data.size()); | 247 | std::memcpy(out_data.data(), &result_info, out_data.size()); |
| 248 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::move(out_data))); | 248 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(out_data))); |
| 249 | broker.SignalStateChanged(); | 249 | broker.SignalStateChanged(); |
| 250 | } | 250 | } |
| 251 | 251 | ||
diff --git a/src/core/hle/service/am/applets/controller.h b/src/core/hle/service/am/applets/controller.h index a7a1f2b65..d4c9da7b1 100644 --- a/src/core/hle/service/am/applets/controller.h +++ b/src/core/hle/service/am/applets/controller.h | |||
| @@ -120,6 +120,7 @@ public: | |||
| 120 | 120 | ||
| 121 | private: | 121 | private: |
| 122 | const Core::Frontend::ControllerApplet& frontend; | 122 | const Core::Frontend::ControllerApplet& frontend; |
| 123 | Core::System& system; | ||
| 123 | 124 | ||
| 124 | ControllerAppletVersion controller_applet_version; | 125 | ControllerAppletVersion controller_applet_version; |
| 125 | ControllerSupportArgPrivate controller_private_arg; | 126 | ControllerSupportArgPrivate controller_private_arg; |
diff --git a/src/core/hle/service/am/applets/error.cpp b/src/core/hle/service/am/applets/error.cpp index f12fd7f89..dcd4b2a35 100644 --- a/src/core/hle/service/am/applets/error.cpp +++ b/src/core/hle/service/am/applets/error.cpp | |||
| @@ -87,7 +87,7 @@ ResultCode Decode64BitError(u64 error) { | |||
| 87 | } // Anonymous namespace | 87 | } // Anonymous namespace |
| 88 | 88 | ||
| 89 | Error::Error(Core::System& system_, const Core::Frontend::ErrorApplet& frontend_) | 89 | Error::Error(Core::System& system_, const Core::Frontend::ErrorApplet& frontend_) |
| 90 | : Applet{system_.Kernel()}, frontend(frontend_), system{system_} {} | 90 | : Applet{system_.Kernel()}, frontend{frontend_}, system{system_} {} |
| 91 | 91 | ||
| 92 | Error::~Error() = default; | 92 | Error::~Error() = default; |
| 93 | 93 | ||
| @@ -186,7 +186,7 @@ void Error::Execute() { | |||
| 186 | 186 | ||
| 187 | void Error::DisplayCompleted() { | 187 | void Error::DisplayCompleted() { |
| 188 | complete = true; | 188 | complete = true; |
| 189 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::vector<u8>{})); | 189 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::vector<u8>{})); |
| 190 | broker.SignalStateChanged(); | 190 | broker.SignalStateChanged(); |
| 191 | } | 191 | } |
| 192 | 192 | ||
diff --git a/src/core/hle/service/am/applets/general_backend.cpp b/src/core/hle/service/am/applets/general_backend.cpp index 104501ac5..bdb6fd464 100644 --- a/src/core/hle/service/am/applets/general_backend.cpp +++ b/src/core/hle/service/am/applets/general_backend.cpp | |||
| @@ -38,7 +38,7 @@ static void LogCurrentStorage(AppletDataBroker& broker, std::string_view prefix) | |||
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | Auth::Auth(Core::System& system_, Core::Frontend::ParentalControlsApplet& frontend_) | 40 | Auth::Auth(Core::System& system_, Core::Frontend::ParentalControlsApplet& frontend_) |
| 41 | : Applet{system_.Kernel()}, frontend(frontend_) {} | 41 | : Applet{system_.Kernel()}, frontend{frontend_}, system{system_} {} |
| 42 | 42 | ||
| 43 | Auth::~Auth() = default; | 43 | Auth::~Auth() = default; |
| 44 | 44 | ||
| @@ -135,8 +135,8 @@ void Auth::Execute() { | |||
| 135 | } | 135 | } |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | void Auth::AuthFinished(bool successful) { | 138 | void Auth::AuthFinished(bool is_successful) { |
| 139 | this->successful = successful; | 139 | this->successful = is_successful; |
| 140 | 140 | ||
| 141 | struct Return { | 141 | struct Return { |
| 142 | ResultCode result_code; | 142 | ResultCode result_code; |
| @@ -148,12 +148,12 @@ void Auth::AuthFinished(bool successful) { | |||
| 148 | std::vector<u8> out(sizeof(Return)); | 148 | std::vector<u8> out(sizeof(Return)); |
| 149 | std::memcpy(out.data(), &return_, sizeof(Return)); | 149 | std::memcpy(out.data(), &return_, sizeof(Return)); |
| 150 | 150 | ||
| 151 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::move(out))); | 151 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(out))); |
| 152 | broker.SignalStateChanged(); | 152 | broker.SignalStateChanged(); |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | PhotoViewer::PhotoViewer(Core::System& system_, const Core::Frontend::PhotoViewerApplet& frontend_) | 155 | PhotoViewer::PhotoViewer(Core::System& system_, const Core::Frontend::PhotoViewerApplet& frontend_) |
| 156 | : Applet{system_.Kernel()}, frontend(frontend_), system{system_} {} | 156 | : Applet{system_.Kernel()}, frontend{frontend_}, system{system_} {} |
| 157 | 157 | ||
| 158 | PhotoViewer::~PhotoViewer() = default; | 158 | PhotoViewer::~PhotoViewer() = default; |
| 159 | 159 | ||
| @@ -198,12 +198,12 @@ void PhotoViewer::Execute() { | |||
| 198 | } | 198 | } |
| 199 | 199 | ||
| 200 | void PhotoViewer::ViewFinished() { | 200 | void PhotoViewer::ViewFinished() { |
| 201 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::vector<u8>{})); | 201 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::vector<u8>{})); |
| 202 | broker.SignalStateChanged(); | 202 | broker.SignalStateChanged(); |
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | StubApplet::StubApplet(Core::System& system_, AppletId id_) | 205 | StubApplet::StubApplet(Core::System& system_, AppletId id_) |
| 206 | : Applet{system_.Kernel()}, id(id_), system{system_} {} | 206 | : Applet{system_.Kernel()}, id{id_}, system{system_} {} |
| 207 | 207 | ||
| 208 | StubApplet::~StubApplet() = default; | 208 | StubApplet::~StubApplet() = default; |
| 209 | 209 | ||
| @@ -234,8 +234,9 @@ void StubApplet::ExecuteInteractive() { | |||
| 234 | LOG_WARNING(Service_AM, "called (STUBBED)"); | 234 | LOG_WARNING(Service_AM, "called (STUBBED)"); |
| 235 | LogCurrentStorage(broker, "ExecuteInteractive"); | 235 | LogCurrentStorage(broker, "ExecuteInteractive"); |
| 236 | 236 | ||
| 237 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::vector<u8>(0x1000))); | 237 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::vector<u8>(0x1000))); |
| 238 | broker.PushInteractiveDataFromApplet(std::make_shared<IStorage>(std::vector<u8>(0x1000))); | 238 | broker.PushInteractiveDataFromApplet( |
| 239 | std::make_shared<IStorage>(system, std::vector<u8>(0x1000))); | ||
| 239 | broker.SignalStateChanged(); | 240 | broker.SignalStateChanged(); |
| 240 | } | 241 | } |
| 241 | 242 | ||
| @@ -243,8 +244,9 @@ void StubApplet::Execute() { | |||
| 243 | LOG_WARNING(Service_AM, "called (STUBBED)"); | 244 | LOG_WARNING(Service_AM, "called (STUBBED)"); |
| 244 | LogCurrentStorage(broker, "Execute"); | 245 | LogCurrentStorage(broker, "Execute"); |
| 245 | 246 | ||
| 246 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::vector<u8>(0x1000))); | 247 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::vector<u8>(0x1000))); |
| 247 | broker.PushInteractiveDataFromApplet(std::make_shared<IStorage>(std::vector<u8>(0x1000))); | 248 | broker.PushInteractiveDataFromApplet( |
| 249 | std::make_shared<IStorage>(system, std::vector<u8>(0x1000))); | ||
| 248 | broker.SignalStateChanged(); | 250 | broker.SignalStateChanged(); |
| 249 | } | 251 | } |
| 250 | 252 | ||
diff --git a/src/core/hle/service/am/applets/general_backend.h b/src/core/hle/service/am/applets/general_backend.h index cfa2df369..ba76ae3d3 100644 --- a/src/core/hle/service/am/applets/general_backend.h +++ b/src/core/hle/service/am/applets/general_backend.h | |||
| @@ -29,10 +29,11 @@ public: | |||
| 29 | void ExecuteInteractive() override; | 29 | void ExecuteInteractive() override; |
| 30 | void Execute() override; | 30 | void Execute() override; |
| 31 | 31 | ||
| 32 | void AuthFinished(bool successful = true); | 32 | void AuthFinished(bool is_successful = true); |
| 33 | 33 | ||
| 34 | private: | 34 | private: |
| 35 | Core::Frontend::ParentalControlsApplet& frontend; | 35 | Core::Frontend::ParentalControlsApplet& frontend; |
| 36 | Core::System& system; | ||
| 36 | bool complete = false; | 37 | bool complete = false; |
| 37 | bool successful = false; | 38 | bool successful = false; |
| 38 | 39 | ||
diff --git a/src/core/hle/service/am/applets/profile_select.cpp b/src/core/hle/service/am/applets/profile_select.cpp index 70cc23552..77fba16c7 100644 --- a/src/core/hle/service/am/applets/profile_select.cpp +++ b/src/core/hle/service/am/applets/profile_select.cpp | |||
| @@ -17,7 +17,7 @@ constexpr ResultCode ERR_USER_CANCELLED_SELECTION{ErrorModule::Account, 1}; | |||
| 17 | 17 | ||
| 18 | ProfileSelect::ProfileSelect(Core::System& system_, | 18 | ProfileSelect::ProfileSelect(Core::System& system_, |
| 19 | const Core::Frontend::ProfileSelectApplet& frontend_) | 19 | const Core::Frontend::ProfileSelectApplet& frontend_) |
| 20 | : Applet{system_.Kernel()}, frontend(frontend_) {} | 20 | : Applet{system_.Kernel()}, frontend{frontend_}, system{system_} {} |
| 21 | 21 | ||
| 22 | ProfileSelect::~ProfileSelect() = default; | 22 | ProfileSelect::~ProfileSelect() = default; |
| 23 | 23 | ||
| @@ -50,7 +50,7 @@ void ProfileSelect::ExecuteInteractive() { | |||
| 50 | 50 | ||
| 51 | void ProfileSelect::Execute() { | 51 | void ProfileSelect::Execute() { |
| 52 | if (complete) { | 52 | if (complete) { |
| 53 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::move(final_data))); | 53 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(final_data))); |
| 54 | return; | 54 | return; |
| 55 | } | 55 | } |
| 56 | 56 | ||
| @@ -71,7 +71,7 @@ void ProfileSelect::SelectionComplete(std::optional<Common::UUID> uuid) { | |||
| 71 | 71 | ||
| 72 | final_data = std::vector<u8>(sizeof(UserSelectionOutput)); | 72 | final_data = std::vector<u8>(sizeof(UserSelectionOutput)); |
| 73 | std::memcpy(final_data.data(), &output, final_data.size()); | 73 | std::memcpy(final_data.data(), &output, final_data.size()); |
| 74 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::move(final_data))); | 74 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(final_data))); |
| 75 | broker.SignalStateChanged(); | 75 | broker.SignalStateChanged(); |
| 76 | } | 76 | } |
| 77 | 77 | ||
diff --git a/src/core/hle/service/am/applets/profile_select.h b/src/core/hle/service/am/applets/profile_select.h index 16364ead7..648d33a24 100644 --- a/src/core/hle/service/am/applets/profile_select.h +++ b/src/core/hle/service/am/applets/profile_select.h | |||
| @@ -53,6 +53,7 @@ private: | |||
| 53 | bool complete = false; | 53 | bool complete = false; |
| 54 | ResultCode status = RESULT_SUCCESS; | 54 | ResultCode status = RESULT_SUCCESS; |
| 55 | std::vector<u8> final_data; | 55 | std::vector<u8> final_data; |
| 56 | Core::System& system; | ||
| 56 | }; | 57 | }; |
| 57 | 58 | ||
| 58 | } // namespace Service::AM::Applets | 59 | } // namespace Service::AM::Applets |
diff --git a/src/core/hle/service/am/applets/software_keyboard.cpp b/src/core/hle/service/am/applets/software_keyboard.cpp index bdeb0737a..3022438b1 100644 --- a/src/core/hle/service/am/applets/software_keyboard.cpp +++ b/src/core/hle/service/am/applets/software_keyboard.cpp | |||
| @@ -53,7 +53,7 @@ static Core::Frontend::SoftwareKeyboardParameters ConvertToFrontendParameters( | |||
| 53 | 53 | ||
| 54 | SoftwareKeyboard::SoftwareKeyboard(Core::System& system_, | 54 | SoftwareKeyboard::SoftwareKeyboard(Core::System& system_, |
| 55 | const Core::Frontend::SoftwareKeyboardApplet& frontend_) | 55 | const Core::Frontend::SoftwareKeyboardApplet& frontend_) |
| 56 | : Applet{system_.Kernel()}, frontend(frontend_) {} | 56 | : Applet{system_.Kernel()}, frontend{frontend_}, system{system_} {} |
| 57 | 57 | ||
| 58 | SoftwareKeyboard::~SoftwareKeyboard() = default; | 58 | SoftwareKeyboard::~SoftwareKeyboard() = default; |
| 59 | 59 | ||
| @@ -122,7 +122,7 @@ void SoftwareKeyboard::ExecuteInteractive() { | |||
| 122 | 122 | ||
| 123 | switch (request) { | 123 | switch (request) { |
| 124 | case Request::Calc: { | 124 | case Request::Calc: { |
| 125 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::vector<u8>{1})); | 125 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::vector<u8>{1})); |
| 126 | broker.SignalStateChanged(); | 126 | broker.SignalStateChanged(); |
| 127 | break; | 127 | break; |
| 128 | } | 128 | } |
| @@ -135,7 +135,7 @@ void SoftwareKeyboard::ExecuteInteractive() { | |||
| 135 | 135 | ||
| 136 | void SoftwareKeyboard::Execute() { | 136 | void SoftwareKeyboard::Execute() { |
| 137 | if (complete) { | 137 | if (complete) { |
| 138 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::move(final_data))); | 138 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(final_data))); |
| 139 | broker.SignalStateChanged(); | 139 | broker.SignalStateChanged(); |
| 140 | return; | 140 | return; |
| 141 | } | 141 | } |
| @@ -179,15 +179,17 @@ void SoftwareKeyboard::WriteText(std::optional<std::u16string> text) { | |||
| 179 | final_data = output_main; | 179 | final_data = output_main; |
| 180 | 180 | ||
| 181 | if (complete) { | 181 | if (complete) { |
| 182 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::move(output_main))); | 182 | broker.PushNormalDataFromApplet( |
| 183 | std::make_shared<IStorage>(system, std::move(output_main))); | ||
| 183 | broker.SignalStateChanged(); | 184 | broker.SignalStateChanged(); |
| 184 | } else { | 185 | } else { |
| 185 | broker.PushInteractiveDataFromApplet(std::make_shared<IStorage>(std::move(output_sub))); | 186 | broker.PushInteractiveDataFromApplet( |
| 187 | std::make_shared<IStorage>(system, std::move(output_sub))); | ||
| 186 | } | 188 | } |
| 187 | } else { | 189 | } else { |
| 188 | output_main[0] = 1; | 190 | output_main[0] = 1; |
| 189 | complete = true; | 191 | complete = true; |
| 190 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::move(output_main))); | 192 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(output_main))); |
| 191 | broker.SignalStateChanged(); | 193 | broker.SignalStateChanged(); |
| 192 | } | 194 | } |
| 193 | } | 195 | } |
diff --git a/src/core/hle/service/am/applets/software_keyboard.h b/src/core/hle/service/am/applets/software_keyboard.h index 5a3824b5a..1d260fef8 100644 --- a/src/core/hle/service/am/applets/software_keyboard.h +++ b/src/core/hle/service/am/applets/software_keyboard.h | |||
| @@ -80,6 +80,7 @@ private: | |||
| 80 | bool complete = false; | 80 | bool complete = false; |
| 81 | bool is_inline = false; | 81 | bool is_inline = false; |
| 82 | std::vector<u8> final_data; | 82 | std::vector<u8> final_data; |
| 83 | Core::System& system; | ||
| 83 | }; | 84 | }; |
| 84 | 85 | ||
| 85 | } // namespace Service::AM::Applets | 86 | } // namespace Service::AM::Applets |
diff --git a/src/core/hle/service/am/applets/web_browser.cpp b/src/core/hle/service/am/applets/web_browser.cpp index efe595c4f..c3b6b706a 100644 --- a/src/core/hle/service/am/applets/web_browser.cpp +++ b/src/core/hle/service/am/applets/web_browser.cpp | |||
| @@ -290,7 +290,7 @@ void WebBrowser::Finalize() { | |||
| 290 | std::vector<u8> data(sizeof(WebCommonReturnValue)); | 290 | std::vector<u8> data(sizeof(WebCommonReturnValue)); |
| 291 | std::memcpy(data.data(), &out, sizeof(WebCommonReturnValue)); | 291 | std::memcpy(data.data(), &out, sizeof(WebCommonReturnValue)); |
| 292 | 292 | ||
| 293 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(std::move(data))); | 293 | broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(data))); |
| 294 | broker.SignalStateChanged(); | 294 | broker.SignalStateChanged(); |
| 295 | 295 | ||
| 296 | if (!temporary_dir.empty() && Common::FS::IsDirectory(temporary_dir)) { | 296 | if (!temporary_dir.empty() && Common::FS::IsDirectory(temporary_dir)) { |
diff --git a/src/core/hle/service/am/idle.cpp b/src/core/hle/service/am/idle.cpp index d256d57c8..6196773d5 100644 --- a/src/core/hle/service/am/idle.cpp +++ b/src/core/hle/service/am/idle.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::AM { | 7 | namespace Service::AM { |
| 8 | 8 | ||
| 9 | IdleSys::IdleSys() : ServiceFramework{"idle:sys"} { | 9 | IdleSys::IdleSys(Core::System& system_) : ServiceFramework{system_, "idle:sys"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "GetAutoPowerDownEvent"}, | 12 | {0, nullptr, "GetAutoPowerDownEvent"}, |
diff --git a/src/core/hle/service/am/idle.h b/src/core/hle/service/am/idle.h index c44e856b1..e290c30b1 100644 --- a/src/core/hle/service/am/idle.h +++ b/src/core/hle/service/am/idle.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::AM { | 13 | namespace Service::AM { |
| 10 | 14 | ||
| 11 | class IdleSys final : public ServiceFramework<IdleSys> { | 15 | class IdleSys final : public ServiceFramework<IdleSys> { |
| 12 | public: | 16 | public: |
| 13 | explicit IdleSys(); | 17 | explicit IdleSys(Core::System& system_); |
| 14 | ~IdleSys() override; | 18 | ~IdleSys() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/am/omm.cpp b/src/core/hle/service/am/omm.cpp index 37389ccda..55de67e1d 100644 --- a/src/core/hle/service/am/omm.cpp +++ b/src/core/hle/service/am/omm.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::AM { | 7 | namespace Service::AM { |
| 8 | 8 | ||
| 9 | OMM::OMM() : ServiceFramework{"omm"} { | 9 | OMM::OMM(Core::System& system_) : ServiceFramework{system_, "omm"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "GetOperationMode"}, | 12 | {0, nullptr, "GetOperationMode"}, |
diff --git a/src/core/hle/service/am/omm.h b/src/core/hle/service/am/omm.h index 59dc91b72..3766150fe 100644 --- a/src/core/hle/service/am/omm.h +++ b/src/core/hle/service/am/omm.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::AM { | 13 | namespace Service::AM { |
| 10 | 14 | ||
| 11 | class OMM final : public ServiceFramework<OMM> { | 15 | class OMM final : public ServiceFramework<OMM> { |
| 12 | public: | 16 | public: |
| 13 | explicit OMM(); | 17 | explicit OMM(Core::System& system_); |
| 14 | ~OMM() override; | 18 | ~OMM() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/am/spsm.cpp b/src/core/hle/service/am/spsm.cpp index f27729ce7..95218d9ee 100644 --- a/src/core/hle/service/am/spsm.cpp +++ b/src/core/hle/service/am/spsm.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::AM { | 7 | namespace Service::AM { |
| 8 | 8 | ||
| 9 | SPSM::SPSM() : ServiceFramework{"spsm"} { | 9 | SPSM::SPSM(Core::System& system_) : ServiceFramework{system_, "spsm"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "GetState"}, | 12 | {0, nullptr, "GetState"}, |
diff --git a/src/core/hle/service/am/spsm.h b/src/core/hle/service/am/spsm.h index 3a0b979fa..04bbf9e68 100644 --- a/src/core/hle/service/am/spsm.h +++ b/src/core/hle/service/am/spsm.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::AM { | 13 | namespace Service::AM { |
| 10 | 14 | ||
| 11 | class SPSM final : public ServiceFramework<SPSM> { | 15 | class SPSM final : public ServiceFramework<SPSM> { |
| 12 | public: | 16 | public: |
| 13 | explicit SPSM(); | 17 | explicit SPSM(Core::System& system_); |
| 14 | ~SPSM() override; | 18 | ~SPSM() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/am/tcap.cpp b/src/core/hle/service/am/tcap.cpp index a75cbdda8..4d0971c03 100644 --- a/src/core/hle/service/am/tcap.cpp +++ b/src/core/hle/service/am/tcap.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::AM { | 7 | namespace Service::AM { |
| 8 | 8 | ||
| 9 | TCAP::TCAP() : ServiceFramework{"tcap"} { | 9 | TCAP::TCAP(Core::System& system_) : ServiceFramework{system_, "tcap"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "GetContinuousHighSkinTemperatureEvent"}, | 12 | {0, nullptr, "GetContinuousHighSkinTemperatureEvent"}, |
diff --git a/src/core/hle/service/am/tcap.h b/src/core/hle/service/am/tcap.h index 2021b55d1..e9578f16e 100644 --- a/src/core/hle/service/am/tcap.h +++ b/src/core/hle/service/am/tcap.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::AM { | 13 | namespace Service::AM { |
| 10 | 14 | ||
| 11 | class TCAP final : public ServiceFramework<TCAP> { | 15 | class TCAP final : public ServiceFramework<TCAP> { |
| 12 | public: | 16 | public: |
| 13 | explicit TCAP(); | 17 | explicit TCAP(Core::System& system_); |
| 14 | ~TCAP() override; | 18 | ~TCAP() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp index 173b36da4..6abac3f78 100644 --- a/src/core/hle/service/aoc/aoc_u.cpp +++ b/src/core/hle/service/aoc/aoc_u.cpp | |||
| @@ -48,8 +48,8 @@ static std::vector<u64> AccumulateAOCTitleIDs(Core::System& system) { | |||
| 48 | return add_on_content; | 48 | return add_on_content; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | AOC_U::AOC_U(Core::System& system) | 51 | AOC_U::AOC_U(Core::System& system_) |
| 52 | : ServiceFramework("aoc:u"), add_on_content(AccumulateAOCTitleIDs(system)), system(system) { | 52 | : ServiceFramework{system_, "aoc:u"}, add_on_content{AccumulateAOCTitleIDs(system)} { |
| 53 | // clang-format off | 53 | // clang-format off |
| 54 | static const FunctionInfo functions[] = { | 54 | static const FunctionInfo functions[] = { |
| 55 | {0, nullptr, "CountAddOnContentByApplicationId"}, | 55 | {0, nullptr, "CountAddOnContentByApplicationId"}, |
diff --git a/src/core/hle/service/aoc/aoc_u.h b/src/core/hle/service/aoc/aoc_u.h index 848b2f416..7628f4568 100644 --- a/src/core/hle/service/aoc/aoc_u.h +++ b/src/core/hle/service/aoc/aoc_u.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class WritableEvent; | 14 | class WritableEvent; |
| 11 | } | 15 | } |
| @@ -26,7 +30,6 @@ private: | |||
| 26 | 30 | ||
| 27 | std::vector<u64> add_on_content; | 31 | std::vector<u64> add_on_content; |
| 28 | Kernel::EventPair aoc_change_event; | 32 | Kernel::EventPair aoc_change_event; |
| 29 | Core::System& system; | ||
| 30 | }; | 33 | }; |
| 31 | 34 | ||
| 32 | /// Registers all AOC services with the specified service manager. | 35 | /// Registers all AOC services with the specified service manager. |
diff --git a/src/core/hle/service/apm/apm.cpp b/src/core/hle/service/apm/apm.cpp index e2d8f0027..97d6619dd 100644 --- a/src/core/hle/service/apm/apm.cpp +++ b/src/core/hle/service/apm/apm.cpp | |||
| @@ -14,13 +14,14 @@ Module::~Module() = default; | |||
| 14 | 14 | ||
| 15 | void InstallInterfaces(Core::System& system) { | 15 | void InstallInterfaces(Core::System& system) { |
| 16 | auto module_ = std::make_shared<Module>(); | 16 | auto module_ = std::make_shared<Module>(); |
| 17 | std::make_shared<APM>(module_, system.GetAPMController(), "apm") | 17 | std::make_shared<APM>(system, module_, system.GetAPMController(), "apm") |
| 18 | ->InstallAsService(system.ServiceManager()); | 18 | ->InstallAsService(system.ServiceManager()); |
| 19 | std::make_shared<APM>(module_, system.GetAPMController(), "apm:p") | 19 | std::make_shared<APM>(system, module_, system.GetAPMController(), "apm:p") |
| 20 | ->InstallAsService(system.ServiceManager()); | 20 | ->InstallAsService(system.ServiceManager()); |
| 21 | std::make_shared<APM>(module_, system.GetAPMController(), "apm:am") | 21 | std::make_shared<APM>(system, module_, system.GetAPMController(), "apm:am") |
| 22 | ->InstallAsService(system.ServiceManager()); | ||
| 23 | std::make_shared<APM_Sys>(system, system.GetAPMController()) | ||
| 22 | ->InstallAsService(system.ServiceManager()); | 24 | ->InstallAsService(system.ServiceManager()); |
| 23 | std::make_shared<APM_Sys>(system.GetAPMController())->InstallAsService(system.ServiceManager()); | ||
| 24 | } | 25 | } |
| 25 | 26 | ||
| 26 | } // namespace Service::APM | 27 | } // namespace Service::APM |
diff --git a/src/core/hle/service/apm/apm.h b/src/core/hle/service/apm/apm.h index cf4c2bb11..691fe6c16 100644 --- a/src/core/hle/service/apm/apm.h +++ b/src/core/hle/service/apm/apm.h | |||
| @@ -4,7 +4,9 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | namespace Core { |
| 8 | class System; | ||
| 9 | } | ||
| 8 | 10 | ||
| 9 | namespace Service::APM { | 11 | namespace Service::APM { |
| 10 | 12 | ||
diff --git a/src/core/hle/service/apm/interface.cpp b/src/core/hle/service/apm/interface.cpp index 06f0f8edd..89442e21e 100644 --- a/src/core/hle/service/apm/interface.cpp +++ b/src/core/hle/service/apm/interface.cpp | |||
| @@ -12,7 +12,8 @@ namespace Service::APM { | |||
| 12 | 12 | ||
| 13 | class ISession final : public ServiceFramework<ISession> { | 13 | class ISession final : public ServiceFramework<ISession> { |
| 14 | public: | 14 | public: |
| 15 | ISession(Controller& controller) : ServiceFramework("ISession"), controller(controller) { | 15 | explicit ISession(Core::System& system_, Controller& controller_) |
| 16 | : ServiceFramework{system_, "ISession"}, controller{controller_} { | ||
| 16 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 17 | {0, &ISession::SetPerformanceConfiguration, "SetPerformanceConfiguration"}, | 18 | {0, &ISession::SetPerformanceConfiguration, "SetPerformanceConfiguration"}, |
| 18 | {1, &ISession::GetPerformanceConfiguration, "GetPerformanceConfiguration"}, | 19 | {1, &ISession::GetPerformanceConfiguration, "GetPerformanceConfiguration"}, |
| @@ -50,8 +51,9 @@ private: | |||
| 50 | Controller& controller; | 51 | Controller& controller; |
| 51 | }; | 52 | }; |
| 52 | 53 | ||
| 53 | APM::APM(std::shared_ptr<Module> apm, Controller& controller, const char* name) | 54 | APM::APM(Core::System& system_, std::shared_ptr<Module> apm_, Controller& controller_, |
| 54 | : ServiceFramework(name), apm(std::move(apm)), controller(controller) { | 55 | const char* name) |
| 56 | : ServiceFramework{system_, name}, apm(std::move(apm_)), controller{controller_} { | ||
| 55 | static const FunctionInfo functions[] = { | 57 | static const FunctionInfo functions[] = { |
| 56 | {0, &APM::OpenSession, "OpenSession"}, | 58 | {0, &APM::OpenSession, "OpenSession"}, |
| 57 | {1, &APM::GetPerformanceMode, "GetPerformanceMode"}, | 59 | {1, &APM::GetPerformanceMode, "GetPerformanceMode"}, |
| @@ -67,7 +69,7 @@ void APM::OpenSession(Kernel::HLERequestContext& ctx) { | |||
| 67 | 69 | ||
| 68 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 70 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 69 | rb.Push(RESULT_SUCCESS); | 71 | rb.Push(RESULT_SUCCESS); |
| 70 | rb.PushIpcInterface<ISession>(controller); | 72 | rb.PushIpcInterface<ISession>(system, controller); |
| 71 | } | 73 | } |
| 72 | 74 | ||
| 73 | void APM::GetPerformanceMode(Kernel::HLERequestContext& ctx) { | 75 | void APM::GetPerformanceMode(Kernel::HLERequestContext& ctx) { |
| @@ -77,7 +79,8 @@ void APM::GetPerformanceMode(Kernel::HLERequestContext& ctx) { | |||
| 77 | rb.PushEnum(controller.GetCurrentPerformanceMode()); | 79 | rb.PushEnum(controller.GetCurrentPerformanceMode()); |
| 78 | } | 80 | } |
| 79 | 81 | ||
| 80 | APM_Sys::APM_Sys(Controller& controller) : ServiceFramework{"apm:sys"}, controller(controller) { | 82 | APM_Sys::APM_Sys(Core::System& system_, Controller& controller_) |
| 83 | : ServiceFramework{system_, "apm:sys"}, controller{controller_} { | ||
| 81 | // clang-format off | 84 | // clang-format off |
| 82 | static const FunctionInfo functions[] = { | 85 | static const FunctionInfo functions[] = { |
| 83 | {0, nullptr, "RequestPerformanceMode"}, | 86 | {0, nullptr, "RequestPerformanceMode"}, |
| @@ -101,7 +104,7 @@ void APM_Sys::GetPerformanceEvent(Kernel::HLERequestContext& ctx) { | |||
| 101 | 104 | ||
| 102 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 105 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 103 | rb.Push(RESULT_SUCCESS); | 106 | rb.Push(RESULT_SUCCESS); |
| 104 | rb.PushIpcInterface<ISession>(controller); | 107 | rb.PushIpcInterface<ISession>(system, controller); |
| 105 | } | 108 | } |
| 106 | 109 | ||
| 107 | void APM_Sys::SetCpuBoostMode(Kernel::HLERequestContext& ctx) { | 110 | void APM_Sys::SetCpuBoostMode(Kernel::HLERequestContext& ctx) { |
diff --git a/src/core/hle/service/apm/interface.h b/src/core/hle/service/apm/interface.h index de1b89437..7d57c4978 100644 --- a/src/core/hle/service/apm/interface.h +++ b/src/core/hle/service/apm/interface.h | |||
| @@ -13,7 +13,8 @@ class Module; | |||
| 13 | 13 | ||
| 14 | class APM final : public ServiceFramework<APM> { | 14 | class APM final : public ServiceFramework<APM> { |
| 15 | public: | 15 | public: |
| 16 | explicit APM(std::shared_ptr<Module> apm, Controller& controller, const char* name); | 16 | explicit APM(Core::System& system_, std::shared_ptr<Module> apm_, Controller& controller_, |
| 17 | const char* name); | ||
| 17 | ~APM() override; | 18 | ~APM() override; |
| 18 | 19 | ||
| 19 | private: | 20 | private: |
| @@ -26,7 +27,7 @@ private: | |||
| 26 | 27 | ||
| 27 | class APM_Sys final : public ServiceFramework<APM_Sys> { | 28 | class APM_Sys final : public ServiceFramework<APM_Sys> { |
| 28 | public: | 29 | public: |
| 29 | explicit APM_Sys(Controller& controller); | 30 | explicit APM_Sys(Core::System& system_, Controller& controller); |
| 30 | ~APM_Sys() override; | 31 | ~APM_Sys() override; |
| 31 | 32 | ||
| 32 | void SetCpuBoostMode(Kernel::HLERequestContext& ctx); | 33 | void SetCpuBoostMode(Kernel::HLERequestContext& ctx); |
diff --git a/src/core/hle/service/audio/audctl.cpp b/src/core/hle/service/audio/audctl.cpp index 6ddb547fb..84890be72 100644 --- a/src/core/hle/service/audio/audctl.cpp +++ b/src/core/hle/service/audio/audctl.cpp | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | namespace Service::Audio { | 9 | namespace Service::Audio { |
| 10 | 10 | ||
| 11 | AudCtl::AudCtl() : ServiceFramework{"audctl"} { | 11 | AudCtl::AudCtl(Core::System& system_) : ServiceFramework{system_, "audctl"} { |
| 12 | // clang-format off | 12 | // clang-format off |
| 13 | static const FunctionInfo functions[] = { | 13 | static const FunctionInfo functions[] = { |
| 14 | {0, nullptr, "GetTargetVolume"}, | 14 | {0, nullptr, "GetTargetVolume"}, |
diff --git a/src/core/hle/service/audio/audctl.h b/src/core/hle/service/audio/audctl.h index c7fafc02e..15f6c77a0 100644 --- a/src/core/hle/service/audio/audctl.h +++ b/src/core/hle/service/audio/audctl.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 10 | 14 | ||
| 11 | class AudCtl final : public ServiceFramework<AudCtl> { | 15 | class AudCtl final : public ServiceFramework<AudCtl> { |
| 12 | public: | 16 | public: |
| 13 | explicit AudCtl(); | 17 | explicit AudCtl(Core::System& system_); |
| 14 | ~AudCtl() override; | 18 | ~AudCtl() override; |
| 15 | 19 | ||
| 16 | private: | 20 | private: |
diff --git a/src/core/hle/service/audio/auddbg.cpp b/src/core/hle/service/audio/auddbg.cpp index 8fff3e4b4..6264e4bda 100644 --- a/src/core/hle/service/audio/auddbg.cpp +++ b/src/core/hle/service/audio/auddbg.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Audio { | 7 | namespace Service::Audio { |
| 8 | 8 | ||
| 9 | AudDbg::AudDbg(const char* name) : ServiceFramework{name} { | 9 | AudDbg::AudDbg(Core::System& system_, const char* name) : ServiceFramework{system_, name} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "RequestSuspendForDebug"}, | 12 | {0, nullptr, "RequestSuspendForDebug"}, |
diff --git a/src/core/hle/service/audio/auddbg.h b/src/core/hle/service/audio/auddbg.h index 6689f4759..d1653eedd 100644 --- a/src/core/hle/service/audio/auddbg.h +++ b/src/core/hle/service/audio/auddbg.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 10 | 14 | ||
| 11 | class AudDbg final : public ServiceFramework<AudDbg> { | 15 | class AudDbg final : public ServiceFramework<AudDbg> { |
| 12 | public: | 16 | public: |
| 13 | explicit AudDbg(const char* name); | 17 | explicit AudDbg(Core::System& system_, const char* name); |
| 14 | ~AudDbg() override; | 18 | ~AudDbg() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/audio/audin_a.cpp b/src/core/hle/service/audio/audin_a.cpp index ddd12f35e..79c3aa920 100644 --- a/src/core/hle/service/audio/audin_a.cpp +++ b/src/core/hle/service/audio/audin_a.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Audio { | 7 | namespace Service::Audio { |
| 8 | 8 | ||
| 9 | AudInA::AudInA() : ServiceFramework{"audin:a"} { | 9 | AudInA::AudInA(Core::System& system_) : ServiceFramework{system_, "audin:a"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "RequestSuspendAudioIns"}, | 12 | {0, nullptr, "RequestSuspendAudioIns"}, |
diff --git a/src/core/hle/service/audio/audin_a.h b/src/core/hle/service/audio/audin_a.h index e7623bc29..15120a4b6 100644 --- a/src/core/hle/service/audio/audin_a.h +++ b/src/core/hle/service/audio/audin_a.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 10 | 14 | ||
| 11 | class AudInA final : public ServiceFramework<AudInA> { | 15 | class AudInA final : public ServiceFramework<AudInA> { |
| 12 | public: | 16 | public: |
| 13 | explicit AudInA(); | 17 | explicit AudInA(Core::System& system_); |
| 14 | ~AudInA() override; | 18 | ~AudInA() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/audio/audin_u.cpp b/src/core/hle/service/audio/audin_u.cpp index 3e2299426..26a6deddf 100644 --- a/src/core/hle/service/audio/audin_u.cpp +++ b/src/core/hle/service/audio/audin_u.cpp | |||
| @@ -11,7 +11,7 @@ namespace Service::Audio { | |||
| 11 | 11 | ||
| 12 | class IAudioIn final : public ServiceFramework<IAudioIn> { | 12 | class IAudioIn final : public ServiceFramework<IAudioIn> { |
| 13 | public: | 13 | public: |
| 14 | IAudioIn() : ServiceFramework("IAudioIn") { | 14 | explicit IAudioIn(Core::System& system_) : ServiceFramework{system_, "IAudioIn"} { |
| 15 | // clang-format off | 15 | // clang-format off |
| 16 | static const FunctionInfo functions[] = { | 16 | static const FunctionInfo functions[] = { |
| 17 | {0, nullptr, "GetAudioInState"}, | 17 | {0, nullptr, "GetAudioInState"}, |
| @@ -36,7 +36,7 @@ public: | |||
| 36 | } | 36 | } |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
| 39 | AudInU::AudInU() : ServiceFramework("audin:u") { | 39 | AudInU::AudInU(Core::System& system_) : ServiceFramework{system_, "audin:u"} { |
| 40 | // clang-format off | 40 | // clang-format off |
| 41 | static const FunctionInfo functions[] = { | 41 | static const FunctionInfo functions[] = { |
| 42 | {0, &AudInU::ListAudioIns, "ListAudioIns"}, | 42 | {0, &AudInU::ListAudioIns, "ListAudioIns"}, |
| @@ -96,7 +96,7 @@ void AudInU::OpenInOutImpl(Kernel::HLERequestContext& ctx) { | |||
| 96 | IPC::ResponseBuilder rb{ctx, 6, 0, 1}; | 96 | IPC::ResponseBuilder rb{ctx, 6, 0, 1}; |
| 97 | rb.Push(RESULT_SUCCESS); | 97 | rb.Push(RESULT_SUCCESS); |
| 98 | rb.PushRaw<AudInOutParams>(params); | 98 | rb.PushRaw<AudInOutParams>(params); |
| 99 | rb.PushIpcInterface<IAudioIn>(); | 99 | rb.PushIpcInterface<IAudioIn>(system); |
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | void AudInU::OpenAudioIn(Kernel::HLERequestContext& ctx) { | 102 | void AudInU::OpenAudioIn(Kernel::HLERequestContext& ctx) { |
diff --git a/src/core/hle/service/audio/audin_u.h b/src/core/hle/service/audio/audin_u.h index a599f4a64..0d75ae5ac 100644 --- a/src/core/hle/service/audio/audin_u.h +++ b/src/core/hle/service/audio/audin_u.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class HLERequestContext; | 14 | class HLERequestContext; |
| 11 | } | 15 | } |
| @@ -14,7 +18,7 @@ namespace Service::Audio { | |||
| 14 | 18 | ||
| 15 | class AudInU final : public ServiceFramework<AudInU> { | 19 | class AudInU final : public ServiceFramework<AudInU> { |
| 16 | public: | 20 | public: |
| 17 | explicit AudInU(); | 21 | explicit AudInU(Core::System& system_); |
| 18 | ~AudInU() override; | 22 | ~AudInU() override; |
| 19 | 23 | ||
| 20 | private: | 24 | private: |
diff --git a/src/core/hle/service/audio/audio.cpp b/src/core/hle/service/audio/audio.cpp index 1781bec83..b3f24f9bb 100644 --- a/src/core/hle/service/audio/audio.cpp +++ b/src/core/hle/service/audio/audio.cpp | |||
| @@ -20,22 +20,22 @@ | |||
| 20 | namespace Service::Audio { | 20 | namespace Service::Audio { |
| 21 | 21 | ||
| 22 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { | 22 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 23 | std::make_shared<AudCtl>()->InstallAsService(service_manager); | 23 | std::make_shared<AudCtl>(system)->InstallAsService(service_manager); |
| 24 | std::make_shared<AudOutA>()->InstallAsService(service_manager); | 24 | std::make_shared<AudOutA>(system)->InstallAsService(service_manager); |
| 25 | std::make_shared<AudOutU>(system)->InstallAsService(service_manager); | 25 | std::make_shared<AudOutU>(system)->InstallAsService(service_manager); |
| 26 | std::make_shared<AudInA>()->InstallAsService(service_manager); | 26 | std::make_shared<AudInA>(system)->InstallAsService(service_manager); |
| 27 | std::make_shared<AudInU>()->InstallAsService(service_manager); | 27 | std::make_shared<AudInU>(system)->InstallAsService(service_manager); |
| 28 | std::make_shared<AudRecA>()->InstallAsService(service_manager); | 28 | std::make_shared<AudRecA>(system)->InstallAsService(service_manager); |
| 29 | std::make_shared<AudRecU>()->InstallAsService(service_manager); | 29 | std::make_shared<AudRecU>(system)->InstallAsService(service_manager); |
| 30 | std::make_shared<AudRenA>()->InstallAsService(service_manager); | 30 | std::make_shared<AudRenA>(system)->InstallAsService(service_manager); |
| 31 | std::make_shared<AudRenU>(system)->InstallAsService(service_manager); | 31 | std::make_shared<AudRenU>(system)->InstallAsService(service_manager); |
| 32 | std::make_shared<CodecCtl>()->InstallAsService(service_manager); | 32 | std::make_shared<CodecCtl>(system)->InstallAsService(service_manager); |
| 33 | std::make_shared<HwOpus>()->InstallAsService(service_manager); | 33 | std::make_shared<HwOpus>(system)->InstallAsService(service_manager); |
| 34 | 34 | ||
| 35 | std::make_shared<AudDbg>("audin:d")->InstallAsService(service_manager); | 35 | std::make_shared<AudDbg>(system, "audin:d")->InstallAsService(service_manager); |
| 36 | std::make_shared<AudDbg>("audout:d")->InstallAsService(service_manager); | 36 | std::make_shared<AudDbg>(system, "audout:d")->InstallAsService(service_manager); |
| 37 | std::make_shared<AudDbg>("audrec:d")->InstallAsService(service_manager); | 37 | std::make_shared<AudDbg>(system, "audrec:d")->InstallAsService(service_manager); |
| 38 | std::make_shared<AudDbg>("audren:d")->InstallAsService(service_manager); | 38 | std::make_shared<AudDbg>(system, "audren:d")->InstallAsService(service_manager); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | } // namespace Service::Audio | 41 | } // namespace Service::Audio |
diff --git a/src/core/hle/service/audio/audout_a.cpp b/src/core/hle/service/audio/audout_a.cpp index 85febbca3..19825fd5d 100644 --- a/src/core/hle/service/audio/audout_a.cpp +++ b/src/core/hle/service/audio/audout_a.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Audio { | 7 | namespace Service::Audio { |
| 8 | 8 | ||
| 9 | AudOutA::AudOutA() : ServiceFramework{"audout:a"} { | 9 | AudOutA::AudOutA(Core::System& system_) : ServiceFramework{system_, "audout:a"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "RequestSuspendAudioOuts"}, | 12 | {0, nullptr, "RequestSuspendAudioOuts"}, |
diff --git a/src/core/hle/service/audio/audout_a.h b/src/core/hle/service/audio/audout_a.h index d65b66e8e..2043dfb77 100644 --- a/src/core/hle/service/audio/audout_a.h +++ b/src/core/hle/service/audio/audout_a.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 10 | 14 | ||
| 11 | class AudOutA final : public ServiceFramework<AudOutA> { | 15 | class AudOutA final : public ServiceFramework<AudOutA> { |
| 12 | public: | 16 | public: |
| 13 | explicit AudOutA(); | 17 | explicit AudOutA(Core::System& system_); |
| 14 | ~AudOutA() override; | 18 | ~AudOutA() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index 9b4910e53..145f47ee2 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp | |||
| @@ -40,11 +40,11 @@ enum class AudioState : u32 { | |||
| 40 | 40 | ||
| 41 | class IAudioOut final : public ServiceFramework<IAudioOut> { | 41 | class IAudioOut final : public ServiceFramework<IAudioOut> { |
| 42 | public: | 42 | public: |
| 43 | IAudioOut(Core::System& system, AudoutParams audio_params, AudioCore::AudioOut& audio_core, | 43 | IAudioOut(Core::System& system_, AudoutParams audio_params_, AudioCore::AudioOut& audio_core_, |
| 44 | std::string&& device_name, std::string&& unique_name) | 44 | std::string&& device_name_, std::string&& unique_name) |
| 45 | : ServiceFramework("IAudioOut"), audio_core(audio_core), | 45 | : ServiceFramework{system_, "IAudioOut"}, audio_core{audio_core_}, |
| 46 | device_name(std::move(device_name)), | 46 | device_name{std::move(device_name_)}, audio_params{audio_params_}, main_memory{ |
| 47 | audio_params(audio_params), main_memory{system.Memory()} { | 47 | system.Memory()} { |
| 48 | // clang-format off | 48 | // clang-format off |
| 49 | static const FunctionInfo functions[] = { | 49 | static const FunctionInfo functions[] = { |
| 50 | {0, &IAudioOut::GetAudioOutState, "GetAudioOutState"}, | 50 | {0, &IAudioOut::GetAudioOutState, "GetAudioOutState"}, |
| @@ -213,7 +213,7 @@ private: | |||
| 213 | Core::Memory::Memory& main_memory; | 213 | Core::Memory::Memory& main_memory; |
| 214 | }; | 214 | }; |
| 215 | 215 | ||
| 216 | AudOutU::AudOutU(Core::System& system_) : ServiceFramework("audout:u"), system{system_} { | 216 | AudOutU::AudOutU(Core::System& system_) : ServiceFramework{system_, "audout:u"} { |
| 217 | // clang-format off | 217 | // clang-format off |
| 218 | static const FunctionInfo functions[] = { | 218 | static const FunctionInfo functions[] = { |
| 219 | {0, &AudOutU::ListAudioOutsImpl, "ListAudioOuts"}, | 219 | {0, &AudOutU::ListAudioOutsImpl, "ListAudioOuts"}, |
diff --git a/src/core/hle/service/audio/audout_u.h b/src/core/hle/service/audio/audout_u.h index c9f532ccd..f7ae2f2bf 100644 --- a/src/core/hle/service/audio/audout_u.h +++ b/src/core/hle/service/audio/audout_u.h | |||
| @@ -34,8 +34,6 @@ private: | |||
| 34 | 34 | ||
| 35 | std::vector<std::shared_ptr<IAudioOut>> audio_out_interfaces; | 35 | std::vector<std::shared_ptr<IAudioOut>> audio_out_interfaces; |
| 36 | std::unique_ptr<AudioCore::AudioOut> audio_core; | 36 | std::unique_ptr<AudioCore::AudioOut> audio_core; |
| 37 | |||
| 38 | Core::System& system; | ||
| 39 | }; | 37 | }; |
| 40 | 38 | ||
| 41 | } // namespace Service::Audio | 39 | } // namespace Service::Audio |
diff --git a/src/core/hle/service/audio/audrec_a.cpp b/src/core/hle/service/audio/audrec_a.cpp index ce1bfb48d..c5ab7cad4 100644 --- a/src/core/hle/service/audio/audrec_a.cpp +++ b/src/core/hle/service/audio/audrec_a.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Audio { | 7 | namespace Service::Audio { |
| 8 | 8 | ||
| 9 | AudRecA::AudRecA() : ServiceFramework{"audrec:a"} { | 9 | AudRecA::AudRecA(Core::System& system_) : ServiceFramework{system_, "audrec:a"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "RequestSuspendFinalOutputRecorders"}, | 12 | {0, nullptr, "RequestSuspendFinalOutputRecorders"}, |
diff --git a/src/core/hle/service/audio/audrec_a.h b/src/core/hle/service/audio/audrec_a.h index 384d24c69..2cce90b1d 100644 --- a/src/core/hle/service/audio/audrec_a.h +++ b/src/core/hle/service/audio/audrec_a.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 10 | 14 | ||
| 11 | class AudRecA final : public ServiceFramework<AudRecA> { | 15 | class AudRecA final : public ServiceFramework<AudRecA> { |
| 12 | public: | 16 | public: |
| 13 | explicit AudRecA(); | 17 | explicit AudRecA(Core::System& system_); |
| 14 | ~AudRecA() override; | 18 | ~AudRecA() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/audio/audrec_u.cpp b/src/core/hle/service/audio/audrec_u.cpp index 1a5aed9ed..eb5c63c62 100644 --- a/src/core/hle/service/audio/audrec_u.cpp +++ b/src/core/hle/service/audio/audrec_u.cpp | |||
| @@ -8,7 +8,8 @@ namespace Service::Audio { | |||
| 8 | 8 | ||
| 9 | class IFinalOutputRecorder final : public ServiceFramework<IFinalOutputRecorder> { | 9 | class IFinalOutputRecorder final : public ServiceFramework<IFinalOutputRecorder> { |
| 10 | public: | 10 | public: |
| 11 | IFinalOutputRecorder() : ServiceFramework("IFinalOutputRecorder") { | 11 | explicit IFinalOutputRecorder(Core::System& system_) |
| 12 | : ServiceFramework{system_, "IFinalOutputRecorder"} { | ||
| 12 | // clang-format off | 13 | // clang-format off |
| 13 | static const FunctionInfo functions[] = { | 14 | static const FunctionInfo functions[] = { |
| 14 | {0, nullptr, "GetFinalOutputRecorderState"}, | 15 | {0, nullptr, "GetFinalOutputRecorderState"}, |
| @@ -29,7 +30,7 @@ public: | |||
| 29 | } | 30 | } |
| 30 | }; | 31 | }; |
| 31 | 32 | ||
| 32 | AudRecU::AudRecU() : ServiceFramework("audrec:u") { | 33 | AudRecU::AudRecU(Core::System& system_) : ServiceFramework{system_, "audrec:u"} { |
| 33 | static const FunctionInfo functions[] = { | 34 | static const FunctionInfo functions[] = { |
| 34 | {0, nullptr, "OpenFinalOutputRecorder"}, | 35 | {0, nullptr, "OpenFinalOutputRecorder"}, |
| 35 | }; | 36 | }; |
diff --git a/src/core/hle/service/audio/audrec_u.h b/src/core/hle/service/audio/audrec_u.h index ca3d638e8..f79d49e5c 100644 --- a/src/core/hle/service/audio/audrec_u.h +++ b/src/core/hle/service/audio/audrec_u.h | |||
| @@ -6,15 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Kernel { | 9 | namespace Core { |
| 10 | class HLERequestContext; | 10 | class System; |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 14 | 14 | ||
| 15 | class AudRecU final : public ServiceFramework<AudRecU> { | 15 | class AudRecU final : public ServiceFramework<AudRecU> { |
| 16 | public: | 16 | public: |
| 17 | explicit AudRecU(); | 17 | explicit AudRecU(Core::System& system_); |
| 18 | ~AudRecU() override; | 18 | ~AudRecU() override; |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
diff --git a/src/core/hle/service/audio/audren_a.cpp b/src/core/hle/service/audio/audren_a.cpp index edb66d985..5e9f866f0 100644 --- a/src/core/hle/service/audio/audren_a.cpp +++ b/src/core/hle/service/audio/audren_a.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Audio { | 7 | namespace Service::Audio { |
| 8 | 8 | ||
| 9 | AudRenA::AudRenA() : ServiceFramework{"audren:a"} { | 9 | AudRenA::AudRenA(Core::System& system_) : ServiceFramework{system_, "audren:a"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "RequestSuspendAudioRenderers"}, | 12 | {0, nullptr, "RequestSuspendAudioRenderers"}, |
diff --git a/src/core/hle/service/audio/audren_a.h b/src/core/hle/service/audio/audren_a.h index 81fef0ffe..5d0a626ad 100644 --- a/src/core/hle/service/audio/audren_a.h +++ b/src/core/hle/service/audio/audren_a.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 10 | 14 | ||
| 11 | class AudRenA final : public ServiceFramework<AudRenA> { | 15 | class AudRenA final : public ServiceFramework<AudRenA> { |
| 12 | public: | 16 | public: |
| 13 | explicit AudRenA(); | 17 | explicit AudRenA(Core::System& system_); |
| 14 | ~AudRenA() override; | 18 | ~AudRenA() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp index a2d3ded7b..6e7b7316c 100644 --- a/src/core/hle/service/audio/audren_u.cpp +++ b/src/core/hle/service/audio/audren_u.cpp | |||
| @@ -28,7 +28,7 @@ class IAudioRenderer final : public ServiceFramework<IAudioRenderer> { | |||
| 28 | public: | 28 | public: |
| 29 | explicit IAudioRenderer(Core::System& system, AudioCommon::AudioRendererParameter audren_params, | 29 | explicit IAudioRenderer(Core::System& system, AudioCommon::AudioRendererParameter audren_params, |
| 30 | const std::size_t instance_number) | 30 | const std::size_t instance_number) |
| 31 | : ServiceFramework("IAudioRenderer") { | 31 | : ServiceFramework{system, "IAudioRenderer"} { |
| 32 | // clang-format off | 32 | // clang-format off |
| 33 | static const FunctionInfo functions[] = { | 33 | static const FunctionInfo functions[] = { |
| 34 | {0, &IAudioRenderer::GetSampleRate, "GetSampleRate"}, | 34 | {0, &IAudioRenderer::GetSampleRate, "GetSampleRate"}, |
| @@ -167,8 +167,8 @@ private: | |||
| 167 | 167 | ||
| 168 | class IAudioDevice final : public ServiceFramework<IAudioDevice> { | 168 | class IAudioDevice final : public ServiceFramework<IAudioDevice> { |
| 169 | public: | 169 | public: |
| 170 | explicit IAudioDevice(Core::System& system, u32_le revision_num) | 170 | explicit IAudioDevice(Core::System& system_, u32_le revision_num) |
| 171 | : ServiceFramework("IAudioDevice"), revision{revision_num} { | 171 | : ServiceFramework{system_, "IAudioDevice"}, revision{revision_num} { |
| 172 | static const FunctionInfo functions[] = { | 172 | static const FunctionInfo functions[] = { |
| 173 | {0, &IAudioDevice::ListAudioDeviceName, "ListAudioDeviceName"}, | 173 | {0, &IAudioDevice::ListAudioDeviceName, "ListAudioDeviceName"}, |
| 174 | {1, &IAudioDevice::SetAudioDeviceOutputVolume, "SetAudioDeviceOutputVolume"}, | 174 | {1, &IAudioDevice::SetAudioDeviceOutputVolume, "SetAudioDeviceOutputVolume"}, |
| @@ -325,7 +325,7 @@ private: | |||
| 325 | 325 | ||
| 326 | }; // namespace Audio | 326 | }; // namespace Audio |
| 327 | 327 | ||
| 328 | AudRenU::AudRenU(Core::System& system_) : ServiceFramework("audren:u"), system{system_} { | 328 | AudRenU::AudRenU(Core::System& system_) : ServiceFramework{system_, "audren:u"} { |
| 329 | // clang-format off | 329 | // clang-format off |
| 330 | static const FunctionInfo functions[] = { | 330 | static const FunctionInfo functions[] = { |
| 331 | {0, &AudRenU::OpenAudioRenderer, "OpenAudioRenderer"}, | 331 | {0, &AudRenU::OpenAudioRenderer, "OpenAudioRenderer"}, |
diff --git a/src/core/hle/service/audio/audren_u.h b/src/core/hle/service/audio/audren_u.h index 4e0ccc792..d693dc406 100644 --- a/src/core/hle/service/audio/audren_u.h +++ b/src/core/hle/service/audio/audren_u.h | |||
| @@ -31,7 +31,6 @@ private: | |||
| 31 | void OpenAudioRendererImpl(Kernel::HLERequestContext& ctx); | 31 | void OpenAudioRendererImpl(Kernel::HLERequestContext& ctx); |
| 32 | 32 | ||
| 33 | std::size_t audren_instance_count = 0; | 33 | std::size_t audren_instance_count = 0; |
| 34 | Core::System& system; | ||
| 35 | }; | 34 | }; |
| 36 | 35 | ||
| 37 | // Describes a particular audio feature that may be supported in a particular revision. | 36 | // Describes a particular audio feature that may be supported in a particular revision. |
diff --git a/src/core/hle/service/audio/codecctl.cpp b/src/core/hle/service/audio/codecctl.cpp index c6864146d..94afec1b6 100644 --- a/src/core/hle/service/audio/codecctl.cpp +++ b/src/core/hle/service/audio/codecctl.cpp | |||
| @@ -2,14 +2,11 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/audio/codecctl.h" | 5 | #include "core/hle/service/audio/codecctl.h" |
| 9 | 6 | ||
| 10 | namespace Service::Audio { | 7 | namespace Service::Audio { |
| 11 | 8 | ||
| 12 | CodecCtl::CodecCtl() : ServiceFramework("codecctl") { | 9 | CodecCtl::CodecCtl(Core::System& system_) : ServiceFramework{system_, "codecctl"} { |
| 13 | static const FunctionInfo functions[] = { | 10 | static const FunctionInfo functions[] = { |
| 14 | {0, nullptr, "InitializeCodecController"}, | 11 | {0, nullptr, "InitializeCodecController"}, |
| 15 | {1, nullptr, "FinalizeCodecController"}, | 12 | {1, nullptr, "FinalizeCodecController"}, |
diff --git a/src/core/hle/service/audio/codecctl.h b/src/core/hle/service/audio/codecctl.h index 2fe75b6e2..58e53259e 100644 --- a/src/core/hle/service/audio/codecctl.h +++ b/src/core/hle/service/audio/codecctl.h | |||
| @@ -6,15 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Kernel { | 9 | namespace Core { |
| 10 | class HLERequestContext; | 10 | class System; |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 14 | 14 | ||
| 15 | class CodecCtl final : public ServiceFramework<CodecCtl> { | 15 | class CodecCtl final : public ServiceFramework<CodecCtl> { |
| 16 | public: | 16 | public: |
| 17 | explicit CodecCtl(); | 17 | explicit CodecCtl(Core::System& system_); |
| 18 | ~CodecCtl() override; | 18 | ~CodecCtl() override; |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp index f1d81602c..ea3414fd2 100644 --- a/src/core/hle/service/audio/hwopus.cpp +++ b/src/core/hle/service/audio/hwopus.cpp | |||
| @@ -160,8 +160,9 @@ private: | |||
| 160 | 160 | ||
| 161 | class IHardwareOpusDecoderManager final : public ServiceFramework<IHardwareOpusDecoderManager> { | 161 | class IHardwareOpusDecoderManager final : public ServiceFramework<IHardwareOpusDecoderManager> { |
| 162 | public: | 162 | public: |
| 163 | explicit IHardwareOpusDecoderManager(OpusDecoderState decoder_state) | 163 | explicit IHardwareOpusDecoderManager(Core::System& system_, OpusDecoderState decoder_state) |
| 164 | : ServiceFramework("IHardwareOpusDecoderManager"), decoder_state{std::move(decoder_state)} { | 164 | : ServiceFramework{system_, "IHardwareOpusDecoderManager"}, decoder_state{ |
| 165 | std::move(decoder_state)} { | ||
| 165 | // clang-format off | 166 | // clang-format off |
| 166 | static const FunctionInfo functions[] = { | 167 | static const FunctionInfo functions[] = { |
| 167 | {0, &IHardwareOpusDecoderManager::DecodeInterleavedOld, "DecodeInterleavedOld"}, | 168 | {0, &IHardwareOpusDecoderManager::DecodeInterleavedOld, "DecodeInterleavedOld"}, |
| @@ -287,10 +288,10 @@ void HwOpus::OpenOpusDecoder(Kernel::HLERequestContext& ctx) { | |||
| 287 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 288 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 288 | rb.Push(RESULT_SUCCESS); | 289 | rb.Push(RESULT_SUCCESS); |
| 289 | rb.PushIpcInterface<IHardwareOpusDecoderManager>( | 290 | rb.PushIpcInterface<IHardwareOpusDecoderManager>( |
| 290 | OpusDecoderState{std::move(decoder), sample_rate, channel_count}); | 291 | system, OpusDecoderState{std::move(decoder), sample_rate, channel_count}); |
| 291 | } | 292 | } |
| 292 | 293 | ||
| 293 | HwOpus::HwOpus() : ServiceFramework("hwopus") { | 294 | HwOpus::HwOpus(Core::System& system_) : ServiceFramework{system_, "hwopus"} { |
| 294 | static const FunctionInfo functions[] = { | 295 | static const FunctionInfo functions[] = { |
| 295 | {0, &HwOpus::OpenOpusDecoder, "OpenOpusDecoder"}, | 296 | {0, &HwOpus::OpenOpusDecoder, "OpenOpusDecoder"}, |
| 296 | {1, &HwOpus::GetWorkBufferSize, "GetWorkBufferSize"}, | 297 | {1, &HwOpus::GetWorkBufferSize, "GetWorkBufferSize"}, |
diff --git a/src/core/hle/service/audio/hwopus.h b/src/core/hle/service/audio/hwopus.h index 602ede8ba..4f921f18e 100644 --- a/src/core/hle/service/audio/hwopus.h +++ b/src/core/hle/service/audio/hwopus.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Audio { | 13 | namespace Service::Audio { |
| 10 | 14 | ||
| 11 | class HwOpus final : public ServiceFramework<HwOpus> { | 15 | class HwOpus final : public ServiceFramework<HwOpus> { |
| 12 | public: | 16 | public: |
| 13 | explicit HwOpus(); | 17 | explicit HwOpus(Core::System& system_); |
| 14 | ~HwOpus() override; | 18 | ~HwOpus() override; |
| 15 | 19 | ||
| 16 | private: | 20 | private: |
diff --git a/src/core/hle/service/bcat/module.cpp b/src/core/hle/service/bcat/module.cpp index 68deb0600..b8696a395 100644 --- a/src/core/hle/service/bcat/module.cpp +++ b/src/core/hle/service/bcat/module.cpp | |||
| @@ -88,9 +88,11 @@ struct DeliveryCacheDirectoryEntry { | |||
| 88 | 88 | ||
| 89 | class IDeliveryCacheProgressService final : public ServiceFramework<IDeliveryCacheProgressService> { | 89 | class IDeliveryCacheProgressService final : public ServiceFramework<IDeliveryCacheProgressService> { |
| 90 | public: | 90 | public: |
| 91 | IDeliveryCacheProgressService(std::shared_ptr<Kernel::ReadableEvent> event, | 91 | explicit IDeliveryCacheProgressService(Core::System& system_, |
| 92 | const DeliveryCacheProgressImpl& impl) | 92 | std::shared_ptr<Kernel::ReadableEvent> event_, |
| 93 | : ServiceFramework{"IDeliveryCacheProgressService"}, event(std::move(event)), impl(impl) { | 93 | const DeliveryCacheProgressImpl& impl_) |
| 94 | : ServiceFramework{system_, "IDeliveryCacheProgressService"}, event{std::move(event_)}, | ||
| 95 | impl{impl_} { | ||
| 94 | // clang-format off | 96 | // clang-format off |
| 95 | static const FunctionInfo functions[] = { | 97 | static const FunctionInfo functions[] = { |
| 96 | {0, &IDeliveryCacheProgressService::GetEvent, "GetEvent"}, | 98 | {0, &IDeliveryCacheProgressService::GetEvent, "GetEvent"}, |
| @@ -126,7 +128,7 @@ private: | |||
| 126 | class IBcatService final : public ServiceFramework<IBcatService> { | 128 | class IBcatService final : public ServiceFramework<IBcatService> { |
| 127 | public: | 129 | public: |
| 128 | explicit IBcatService(Core::System& system_, Backend& backend_) | 130 | explicit IBcatService(Core::System& system_, Backend& backend_) |
| 129 | : ServiceFramework("IBcatService"), system{system_}, backend{backend_}, | 131 | : ServiceFramework{system_, "IBcatService"}, backend{backend_}, |
| 130 | progress{{ | 132 | progress{{ |
| 131 | ProgressServiceBackend{system_.Kernel(), "Normal"}, | 133 | ProgressServiceBackend{system_.Kernel(), "Normal"}, |
| 132 | ProgressServiceBackend{system_.Kernel(), "Directory"}, | 134 | ProgressServiceBackend{system_.Kernel(), "Directory"}, |
| @@ -171,7 +173,7 @@ private: | |||
| 171 | 173 | ||
| 172 | std::shared_ptr<IDeliveryCacheProgressService> CreateProgressService(SyncType type) { | 174 | std::shared_ptr<IDeliveryCacheProgressService> CreateProgressService(SyncType type) { |
| 173 | auto& backend{progress.at(static_cast<std::size_t>(type))}; | 175 | auto& backend{progress.at(static_cast<std::size_t>(type))}; |
| 174 | return std::make_shared<IDeliveryCacheProgressService>(backend.GetEvent(), | 176 | return std::make_shared<IDeliveryCacheProgressService>(system, backend.GetEvent(), |
| 175 | backend.GetImpl()); | 177 | backend.GetImpl()); |
| 176 | } | 178 | } |
| 177 | 179 | ||
| @@ -261,7 +263,6 @@ private: | |||
| 261 | rb.Push(RESULT_SUCCESS); | 263 | rb.Push(RESULT_SUCCESS); |
| 262 | } | 264 | } |
| 263 | 265 | ||
| 264 | Core::System& system; | ||
| 265 | Backend& backend; | 266 | Backend& backend; |
| 266 | 267 | ||
| 267 | std::array<ProgressServiceBackend, static_cast<std::size_t>(SyncType::Count)> progress; | 268 | std::array<ProgressServiceBackend, static_cast<std::size_t>(SyncType::Count)> progress; |
| @@ -277,8 +278,8 @@ void Module::Interface::CreateBcatService(Kernel::HLERequestContext& ctx) { | |||
| 277 | 278 | ||
| 278 | class IDeliveryCacheFileService final : public ServiceFramework<IDeliveryCacheFileService> { | 279 | class IDeliveryCacheFileService final : public ServiceFramework<IDeliveryCacheFileService> { |
| 279 | public: | 280 | public: |
| 280 | IDeliveryCacheFileService(FileSys::VirtualDir root_) | 281 | explicit IDeliveryCacheFileService(Core::System& system_, FileSys::VirtualDir root_) |
| 281 | : ServiceFramework{"IDeliveryCacheFileService"}, root(std::move(root_)) { | 282 | : ServiceFramework{system_, "IDeliveryCacheFileService"}, root(std::move(root_)) { |
| 282 | // clang-format off | 283 | // clang-format off |
| 283 | static const FunctionInfo functions[] = { | 284 | static const FunctionInfo functions[] = { |
| 284 | {0, &IDeliveryCacheFileService::Open, "Open"}, | 285 | {0, &IDeliveryCacheFileService::Open, "Open"}, |
| @@ -394,8 +395,8 @@ private: | |||
| 394 | class IDeliveryCacheDirectoryService final | 395 | class IDeliveryCacheDirectoryService final |
| 395 | : public ServiceFramework<IDeliveryCacheDirectoryService> { | 396 | : public ServiceFramework<IDeliveryCacheDirectoryService> { |
| 396 | public: | 397 | public: |
| 397 | IDeliveryCacheDirectoryService(FileSys::VirtualDir root_) | 398 | explicit IDeliveryCacheDirectoryService(Core::System& system_, FileSys::VirtualDir root_) |
| 398 | : ServiceFramework{"IDeliveryCacheDirectoryService"}, root(std::move(root_)) { | 399 | : ServiceFramework{system_, "IDeliveryCacheDirectoryService"}, root(std::move(root_)) { |
| 399 | // clang-format off | 400 | // clang-format off |
| 400 | static const FunctionInfo functions[] = { | 401 | static const FunctionInfo functions[] = { |
| 401 | {0, &IDeliveryCacheDirectoryService::Open, "Open"}, | 402 | {0, &IDeliveryCacheDirectoryService::Open, "Open"}, |
| @@ -492,8 +493,8 @@ private: | |||
| 492 | 493 | ||
| 493 | class IDeliveryCacheStorageService final : public ServiceFramework<IDeliveryCacheStorageService> { | 494 | class IDeliveryCacheStorageService final : public ServiceFramework<IDeliveryCacheStorageService> { |
| 494 | public: | 495 | public: |
| 495 | IDeliveryCacheStorageService(FileSys::VirtualDir root_) | 496 | explicit IDeliveryCacheStorageService(Core::System& system_, FileSys::VirtualDir root_) |
| 496 | : ServiceFramework{"IDeliveryCacheStorageService"}, root(std::move(root_)) { | 497 | : ServiceFramework{system_, "IDeliveryCacheStorageService"}, root(std::move(root_)) { |
| 497 | // clang-format off | 498 | // clang-format off |
| 498 | static const FunctionInfo functions[] = { | 499 | static const FunctionInfo functions[] = { |
| 499 | {0, &IDeliveryCacheStorageService::CreateFileService, "CreateFileService"}, | 500 | {0, &IDeliveryCacheStorageService::CreateFileService, "CreateFileService"}, |
| @@ -518,7 +519,7 @@ private: | |||
| 518 | 519 | ||
| 519 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 520 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 520 | rb.Push(RESULT_SUCCESS); | 521 | rb.Push(RESULT_SUCCESS); |
| 521 | rb.PushIpcInterface<IDeliveryCacheFileService>(root); | 522 | rb.PushIpcInterface<IDeliveryCacheFileService>(system, root); |
| 522 | } | 523 | } |
| 523 | 524 | ||
| 524 | void CreateDirectoryService(Kernel::HLERequestContext& ctx) { | 525 | void CreateDirectoryService(Kernel::HLERequestContext& ctx) { |
| @@ -526,7 +527,7 @@ private: | |||
| 526 | 527 | ||
| 527 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 528 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 528 | rb.Push(RESULT_SUCCESS); | 529 | rb.Push(RESULT_SUCCESS); |
| 529 | rb.PushIpcInterface<IDeliveryCacheDirectoryService>(root); | 530 | rb.PushIpcInterface<IDeliveryCacheDirectoryService>(system, root); |
| 530 | } | 531 | } |
| 531 | 532 | ||
| 532 | void EnumerateDeliveryCacheDirectory(Kernel::HLERequestContext& ctx) { | 533 | void EnumerateDeliveryCacheDirectory(Kernel::HLERequestContext& ctx) { |
| @@ -551,10 +552,10 @@ private: | |||
| 551 | void Module::Interface::CreateDeliveryCacheStorageService(Kernel::HLERequestContext& ctx) { | 552 | void Module::Interface::CreateDeliveryCacheStorageService(Kernel::HLERequestContext& ctx) { |
| 552 | LOG_DEBUG(Service_BCAT, "called"); | 553 | LOG_DEBUG(Service_BCAT, "called"); |
| 553 | 554 | ||
| 555 | const auto title_id = system.CurrentProcess()->GetTitleID(); | ||
| 554 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 556 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 555 | rb.Push(RESULT_SUCCESS); | 557 | rb.Push(RESULT_SUCCESS); |
| 556 | rb.PushIpcInterface<IDeliveryCacheStorageService>( | 558 | rb.PushIpcInterface<IDeliveryCacheStorageService>(system, fsc.GetBCATDirectory(title_id)); |
| 557 | fsc.GetBCATDirectory(system.CurrentProcess()->GetTitleID())); | ||
| 558 | } | 559 | } |
| 559 | 560 | ||
| 560 | void Module::Interface::CreateDeliveryCacheStorageServiceWithApplicationId( | 561 | void Module::Interface::CreateDeliveryCacheStorageServiceWithApplicationId( |
| @@ -566,7 +567,7 @@ void Module::Interface::CreateDeliveryCacheStorageServiceWithApplicationId( | |||
| 566 | 567 | ||
| 567 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 568 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 568 | rb.Push(RESULT_SUCCESS); | 569 | rb.Push(RESULT_SUCCESS); |
| 569 | rb.PushIpcInterface<IDeliveryCacheStorageService>(fsc.GetBCATDirectory(title_id)); | 570 | rb.PushIpcInterface<IDeliveryCacheStorageService>(system, fsc.GetBCATDirectory(title_id)); |
| 570 | } | 571 | } |
| 571 | 572 | ||
| 572 | std::unique_ptr<Backend> CreateBackendFromSettings([[maybe_unused]] Core::System& system, | 573 | std::unique_ptr<Backend> CreateBackendFromSettings([[maybe_unused]] Core::System& system, |
| @@ -582,10 +583,9 @@ std::unique_ptr<Backend> CreateBackendFromSettings([[maybe_unused]] Core::System | |||
| 582 | 583 | ||
| 583 | Module::Interface::Interface(Core::System& system_, std::shared_ptr<Module> module_, | 584 | Module::Interface::Interface(Core::System& system_, std::shared_ptr<Module> module_, |
| 584 | FileSystem::FileSystemController& fsc_, const char* name) | 585 | FileSystem::FileSystemController& fsc_, const char* name) |
| 585 | : ServiceFramework(name), fsc{fsc_}, module{std::move(module_)}, | 586 | : ServiceFramework{system_, name}, fsc{fsc_}, module{std::move(module_)}, |
| 586 | backend{CreateBackendFromSettings(system_, | 587 | backend{CreateBackendFromSettings(system_, |
| 587 | [&fsc_](u64 tid) { return fsc_.GetBCATDirectory(tid); })}, | 588 | [&fsc_](u64 tid) { return fsc_.GetBCATDirectory(tid); })} {} |
| 588 | system{system_} {} | ||
| 589 | 589 | ||
| 590 | Module::Interface::~Interface() = default; | 590 | Module::Interface::~Interface() = default; |
| 591 | 591 | ||
diff --git a/src/core/hle/service/bcat/module.h b/src/core/hle/service/bcat/module.h index e4ba23ba0..738731c06 100644 --- a/src/core/hle/service/bcat/module.h +++ b/src/core/hle/service/bcat/module.h | |||
| @@ -37,9 +37,6 @@ public: | |||
| 37 | 37 | ||
| 38 | std::shared_ptr<Module> module; | 38 | std::shared_ptr<Module> module; |
| 39 | std::unique_ptr<Backend> backend; | 39 | std::unique_ptr<Backend> backend; |
| 40 | |||
| 41 | private: | ||
| 42 | Core::System& system; | ||
| 43 | }; | 40 | }; |
| 44 | }; | 41 | }; |
| 45 | 42 | ||
diff --git a/src/core/hle/service/bpc/bpc.cpp b/src/core/hle/service/bpc/bpc.cpp index fac6b2f9c..e4630320e 100644 --- a/src/core/hle/service/bpc/bpc.cpp +++ b/src/core/hle/service/bpc/bpc.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::BPC { | |||
| 12 | 12 | ||
| 13 | class BPC final : public ServiceFramework<BPC> { | 13 | class BPC final : public ServiceFramework<BPC> { |
| 14 | public: | 14 | public: |
| 15 | explicit BPC() : ServiceFramework{"bpc"} { | 15 | explicit BPC(Core::System& system_) : ServiceFramework{system_, "bpc"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {0, nullptr, "ShutdownSystem"}, | 18 | {0, nullptr, "ShutdownSystem"}, |
| @@ -40,7 +40,7 @@ public: | |||
| 40 | 40 | ||
| 41 | class BPC_R final : public ServiceFramework<BPC_R> { | 41 | class BPC_R final : public ServiceFramework<BPC_R> { |
| 42 | public: | 42 | public: |
| 43 | explicit BPC_R() : ServiceFramework{"bpc:r"} { | 43 | explicit BPC_R(Core::System& system_) : ServiceFramework{system_, "bpc:r"} { |
| 44 | // clang-format off | 44 | // clang-format off |
| 45 | static const FunctionInfo functions[] = { | 45 | static const FunctionInfo functions[] = { |
| 46 | {0, nullptr, "GetRtcTime"}, | 46 | {0, nullptr, "GetRtcTime"}, |
| @@ -55,9 +55,9 @@ public: | |||
| 55 | } | 55 | } |
| 56 | }; | 56 | }; |
| 57 | 57 | ||
| 58 | void InstallInterfaces(SM::ServiceManager& sm) { | 58 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 59 | std::make_shared<BPC>()->InstallAsService(sm); | 59 | std::make_shared<BPC>(system)->InstallAsService(sm); |
| 60 | std::make_shared<BPC_R>()->InstallAsService(sm); | 60 | std::make_shared<BPC_R>(system)->InstallAsService(sm); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | } // namespace Service::BPC | 63 | } // namespace Service::BPC |
diff --git a/src/core/hle/service/bpc/bpc.h b/src/core/hle/service/bpc/bpc.h index eaa37be8d..6ec25aa9b 100644 --- a/src/core/hle/service/bpc/bpc.h +++ b/src/core/hle/service/bpc/bpc.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::BPC { | 15 | namespace Service::BPC { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::BPC | 19 | } // namespace Service::BPC |
diff --git a/src/core/hle/service/btdrv/btdrv.cpp b/src/core/hle/service/btdrv/btdrv.cpp index d4f0dd1ab..2de86f1f1 100644 --- a/src/core/hle/service/btdrv/btdrv.cpp +++ b/src/core/hle/service/btdrv/btdrv.cpp | |||
| @@ -17,7 +17,7 @@ namespace Service::BtDrv { | |||
| 17 | 17 | ||
| 18 | class Bt final : public ServiceFramework<Bt> { | 18 | class Bt final : public ServiceFramework<Bt> { |
| 19 | public: | 19 | public: |
| 20 | explicit Bt(Core::System& system) : ServiceFramework{"bt"} { | 20 | explicit Bt(Core::System& system_) : ServiceFramework{system_, "bt"} { |
| 21 | // clang-format off | 21 | // clang-format off |
| 22 | static const FunctionInfo functions[] = { | 22 | static const FunctionInfo functions[] = { |
| 23 | {0, nullptr, "LeClientReadCharacteristic"}, | 23 | {0, nullptr, "LeClientReadCharacteristic"}, |
| @@ -52,7 +52,7 @@ private: | |||
| 52 | 52 | ||
| 53 | class BtDrv final : public ServiceFramework<BtDrv> { | 53 | class BtDrv final : public ServiceFramework<BtDrv> { |
| 54 | public: | 54 | public: |
| 55 | explicit BtDrv() : ServiceFramework{"btdrv"} { | 55 | explicit BtDrv(Core::System& system_) : ServiceFramework{system_, "btdrv"} { |
| 56 | // clang-format off | 56 | // clang-format off |
| 57 | static const FunctionInfo functions[] = { | 57 | static const FunctionInfo functions[] = { |
| 58 | {0, nullptr, "InitializeBluetoothDriver"}, | 58 | {0, nullptr, "InitializeBluetoothDriver"}, |
| @@ -166,7 +166,7 @@ public: | |||
| 166 | }; | 166 | }; |
| 167 | 167 | ||
| 168 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { | 168 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 169 | std::make_shared<BtDrv>()->InstallAsService(sm); | 169 | std::make_shared<BtDrv>(system)->InstallAsService(sm); |
| 170 | std::make_shared<Bt>(system)->InstallAsService(sm); | 170 | std::make_shared<Bt>(system)->InstallAsService(sm); |
| 171 | } | 171 | } |
| 172 | 172 | ||
diff --git a/src/core/hle/service/btm/btm.cpp b/src/core/hle/service/btm/btm.cpp index c8f8ddbd5..38b55300e 100644 --- a/src/core/hle/service/btm/btm.cpp +++ b/src/core/hle/service/btm/btm.cpp | |||
| @@ -18,7 +18,7 @@ namespace Service::BTM { | |||
| 18 | 18 | ||
| 19 | class IBtmUserCore final : public ServiceFramework<IBtmUserCore> { | 19 | class IBtmUserCore final : public ServiceFramework<IBtmUserCore> { |
| 20 | public: | 20 | public: |
| 21 | explicit IBtmUserCore(Core::System& system) : ServiceFramework{"IBtmUserCore"} { | 21 | explicit IBtmUserCore(Core::System& system_) : ServiceFramework{system_, "IBtmUserCore"} { |
| 22 | // clang-format off | 22 | // clang-format off |
| 23 | static const FunctionInfo functions[] = { | 23 | static const FunctionInfo functions[] = { |
| 24 | {0, &IBtmUserCore::AcquireBleScanEvent, "AcquireBleScanEvent"}, | 24 | {0, &IBtmUserCore::AcquireBleScanEvent, "AcquireBleScanEvent"}, |
| @@ -107,7 +107,7 @@ private: | |||
| 107 | 107 | ||
| 108 | class BTM_USR final : public ServiceFramework<BTM_USR> { | 108 | class BTM_USR final : public ServiceFramework<BTM_USR> { |
| 109 | public: | 109 | public: |
| 110 | explicit BTM_USR(Core::System& system) : ServiceFramework{"btm:u"}, system(system) { | 110 | explicit BTM_USR(Core::System& system_) : ServiceFramework{system_, "btm:u"} { |
| 111 | // clang-format off | 111 | // clang-format off |
| 112 | static const FunctionInfo functions[] = { | 112 | static const FunctionInfo functions[] = { |
| 113 | {0, &BTM_USR::GetCore, "GetCore"}, | 113 | {0, &BTM_USR::GetCore, "GetCore"}, |
| @@ -124,13 +124,11 @@ private: | |||
| 124 | rb.Push(RESULT_SUCCESS); | 124 | rb.Push(RESULT_SUCCESS); |
| 125 | rb.PushIpcInterface<IBtmUserCore>(system); | 125 | rb.PushIpcInterface<IBtmUserCore>(system); |
| 126 | } | 126 | } |
| 127 | |||
| 128 | Core::System& system; | ||
| 129 | }; | 127 | }; |
| 130 | 128 | ||
| 131 | class BTM final : public ServiceFramework<BTM> { | 129 | class BTM final : public ServiceFramework<BTM> { |
| 132 | public: | 130 | public: |
| 133 | explicit BTM() : ServiceFramework{"btm"} { | 131 | explicit BTM(Core::System& system_) : ServiceFramework{system_, "btm"} { |
| 134 | // clang-format off | 132 | // clang-format off |
| 135 | static const FunctionInfo functions[] = { | 133 | static const FunctionInfo functions[] = { |
| 136 | {0, nullptr, "GetState"}, | 134 | {0, nullptr, "GetState"}, |
| @@ -207,7 +205,7 @@ public: | |||
| 207 | 205 | ||
| 208 | class BTM_DBG final : public ServiceFramework<BTM_DBG> { | 206 | class BTM_DBG final : public ServiceFramework<BTM_DBG> { |
| 209 | public: | 207 | public: |
| 210 | explicit BTM_DBG() : ServiceFramework{"btm:dbg"} { | 208 | explicit BTM_DBG(Core::System& system_) : ServiceFramework{system_, "btm:dbg"} { |
| 211 | // clang-format off | 209 | // clang-format off |
| 212 | static const FunctionInfo functions[] = { | 210 | static const FunctionInfo functions[] = { |
| 213 | {0, nullptr, "AcquireDiscoveryEvent"}, | 211 | {0, nullptr, "AcquireDiscoveryEvent"}, |
| @@ -232,7 +230,7 @@ public: | |||
| 232 | 230 | ||
| 233 | class IBtmSystemCore final : public ServiceFramework<IBtmSystemCore> { | 231 | class IBtmSystemCore final : public ServiceFramework<IBtmSystemCore> { |
| 234 | public: | 232 | public: |
| 235 | explicit IBtmSystemCore() : ServiceFramework{"IBtmSystemCore"} { | 233 | explicit IBtmSystemCore(Core::System& system_) : ServiceFramework{system_, "IBtmSystemCore"} { |
| 236 | // clang-format off | 234 | // clang-format off |
| 237 | static const FunctionInfo functions[] = { | 235 | static const FunctionInfo functions[] = { |
| 238 | {0, nullptr, "StartGamepadPairing"}, | 236 | {0, nullptr, "StartGamepadPairing"}, |
| @@ -254,7 +252,7 @@ public: | |||
| 254 | 252 | ||
| 255 | class BTM_SYS final : public ServiceFramework<BTM_SYS> { | 253 | class BTM_SYS final : public ServiceFramework<BTM_SYS> { |
| 256 | public: | 254 | public: |
| 257 | explicit BTM_SYS() : ServiceFramework{"btm:sys"} { | 255 | explicit BTM_SYS(Core::System& system_) : ServiceFramework{system_, "btm:sys"} { |
| 258 | // clang-format off | 256 | // clang-format off |
| 259 | static const FunctionInfo functions[] = { | 257 | static const FunctionInfo functions[] = { |
| 260 | {0, &BTM_SYS::GetCore, "GetCore"}, | 258 | {0, &BTM_SYS::GetCore, "GetCore"}, |
| @@ -270,14 +268,14 @@ private: | |||
| 270 | 268 | ||
| 271 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 269 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 272 | rb.Push(RESULT_SUCCESS); | 270 | rb.Push(RESULT_SUCCESS); |
| 273 | rb.PushIpcInterface<IBtmSystemCore>(); | 271 | rb.PushIpcInterface<IBtmSystemCore>(system); |
| 274 | } | 272 | } |
| 275 | }; | 273 | }; |
| 276 | 274 | ||
| 277 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { | 275 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 278 | std::make_shared<BTM>()->InstallAsService(sm); | 276 | std::make_shared<BTM>(system)->InstallAsService(sm); |
| 279 | std::make_shared<BTM_DBG>()->InstallAsService(sm); | 277 | std::make_shared<BTM_DBG>(system)->InstallAsService(sm); |
| 280 | std::make_shared<BTM_SYS>()->InstallAsService(sm); | 278 | std::make_shared<BTM_SYS>(system)->InstallAsService(sm); |
| 281 | std::make_shared<BTM_USR>(system)->InstallAsService(sm); | 279 | std::make_shared<BTM_USR>(system)->InstallAsService(sm); |
| 282 | } | 280 | } |
| 283 | 281 | ||
diff --git a/src/core/hle/service/caps/caps.cpp b/src/core/hle/service/caps/caps.cpp index ba5749b84..5b7fe8e9b 100644 --- a/src/core/hle/service/caps/caps.cpp +++ b/src/core/hle/service/caps/caps.cpp | |||
| @@ -13,13 +13,13 @@ | |||
| 13 | 13 | ||
| 14 | namespace Service::Capture { | 14 | namespace Service::Capture { |
| 15 | 15 | ||
| 16 | void InstallInterfaces(SM::ServiceManager& sm) { | 16 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 17 | std::make_shared<CAPS_A>()->InstallAsService(sm); | 17 | std::make_shared<CAPS_A>(system)->InstallAsService(sm); |
| 18 | std::make_shared<CAPS_C>()->InstallAsService(sm); | 18 | std::make_shared<CAPS_C>(system)->InstallAsService(sm); |
| 19 | std::make_shared<CAPS_U>()->InstallAsService(sm); | 19 | std::make_shared<CAPS_U>(system)->InstallAsService(sm); |
| 20 | std::make_shared<CAPS_SC>()->InstallAsService(sm); | 20 | std::make_shared<CAPS_SC>(system)->InstallAsService(sm); |
| 21 | std::make_shared<CAPS_SS>()->InstallAsService(sm); | 21 | std::make_shared<CAPS_SS>(system)->InstallAsService(sm); |
| 22 | std::make_shared<CAPS_SU>()->InstallAsService(sm); | 22 | std::make_shared<CAPS_SU>(system)->InstallAsService(sm); |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | } // namespace Service::Capture | 25 | } // namespace Service::Capture |
diff --git a/src/core/hle/service/caps/caps.h b/src/core/hle/service/caps/caps.h index b8c67b6e2..3c4290c88 100644 --- a/src/core/hle/service/caps/caps.h +++ b/src/core/hle/service/caps/caps.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::SM { | 13 | namespace Service::SM { |
| 10 | class ServiceManager; | 14 | class ServiceManager; |
| 11 | } | 15 | } |
| @@ -87,6 +91,6 @@ static_assert(sizeof(ApplicationAlbumFileEntry) == 0x30, | |||
| 87 | "ApplicationAlbumFileEntry has incorrect size."); | 91 | "ApplicationAlbumFileEntry has incorrect size."); |
| 88 | 92 | ||
| 89 | /// Registers all Capture services with the specified service manager. | 93 | /// Registers all Capture services with the specified service manager. |
| 90 | void InstallInterfaces(SM::ServiceManager& sm); | 94 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 91 | 95 | ||
| 92 | } // namespace Service::Capture | 96 | } // namespace Service::Capture |
diff --git a/src/core/hle/service/caps/caps_a.cpp b/src/core/hle/service/caps/caps_a.cpp index a0a3b2ae3..1fe4f0e14 100644 --- a/src/core/hle/service/caps/caps_a.cpp +++ b/src/core/hle/service/caps/caps_a.cpp | |||
| @@ -8,7 +8,8 @@ namespace Service::Capture { | |||
| 8 | 8 | ||
| 9 | class IAlbumAccessorSession final : public ServiceFramework<IAlbumAccessorSession> { | 9 | class IAlbumAccessorSession final : public ServiceFramework<IAlbumAccessorSession> { |
| 10 | public: | 10 | public: |
| 11 | explicit IAlbumAccessorSession() : ServiceFramework{"IAlbumAccessorSession"} { | 11 | explicit IAlbumAccessorSession(Core::System& system_) |
| 12 | : ServiceFramework{system_, "IAlbumAccessorSession"} { | ||
| 12 | // clang-format off | 13 | // clang-format off |
| 13 | static const FunctionInfo functions[] = { | 14 | static const FunctionInfo functions[] = { |
| 14 | {2001, nullptr, "OpenAlbumMovieReadStream"}, | 15 | {2001, nullptr, "OpenAlbumMovieReadStream"}, |
| @@ -26,7 +27,7 @@ public: | |||
| 26 | } | 27 | } |
| 27 | }; | 28 | }; |
| 28 | 29 | ||
| 29 | CAPS_A::CAPS_A() : ServiceFramework("caps:a") { | 30 | CAPS_A::CAPS_A(Core::System& system_) : ServiceFramework{system_, "caps:a"} { |
| 30 | // clang-format off | 31 | // clang-format off |
| 31 | static const FunctionInfo functions[] = { | 32 | static const FunctionInfo functions[] = { |
| 32 | {0, nullptr, "GetAlbumFileCount"}, | 33 | {0, nullptr, "GetAlbumFileCount"}, |
diff --git a/src/core/hle/service/caps/caps_a.h b/src/core/hle/service/caps/caps_a.h index cb93aad5b..389cc6dbe 100644 --- a/src/core/hle/service/caps/caps_a.h +++ b/src/core/hle/service/caps/caps_a.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class HLERequestContext; | 14 | class HLERequestContext; |
| 11 | } | 15 | } |
| @@ -14,7 +18,7 @@ namespace Service::Capture { | |||
| 14 | 18 | ||
| 15 | class CAPS_A final : public ServiceFramework<CAPS_A> { | 19 | class CAPS_A final : public ServiceFramework<CAPS_A> { |
| 16 | public: | 20 | public: |
| 17 | explicit CAPS_A(); | 21 | explicit CAPS_A(Core::System& system_); |
| 18 | ~CAPS_A() override; | 22 | ~CAPS_A() override; |
| 19 | }; | 23 | }; |
| 20 | 24 | ||
diff --git a/src/core/hle/service/caps/caps_c.cpp b/src/core/hle/service/caps/caps_c.cpp index a0ee116fa..45c1c9d30 100644 --- a/src/core/hle/service/caps/caps_c.cpp +++ b/src/core/hle/service/caps/caps_c.cpp | |||
| @@ -10,7 +10,8 @@ namespace Service::Capture { | |||
| 10 | 10 | ||
| 11 | class IAlbumControlSession final : public ServiceFramework<IAlbumControlSession> { | 11 | class IAlbumControlSession final : public ServiceFramework<IAlbumControlSession> { |
| 12 | public: | 12 | public: |
| 13 | explicit IAlbumControlSession() : ServiceFramework{"IAlbumControlSession"} { | 13 | explicit IAlbumControlSession(Core::System& system_) |
| 14 | : ServiceFramework{system_, "IAlbumControlSession"} { | ||
| 14 | // clang-format off | 15 | // clang-format off |
| 15 | static const FunctionInfo functions[] = { | 16 | static const FunctionInfo functions[] = { |
| 16 | {2001, nullptr, "OpenAlbumMovieReadStream"}, | 17 | {2001, nullptr, "OpenAlbumMovieReadStream"}, |
| @@ -44,7 +45,7 @@ public: | |||
| 44 | } | 45 | } |
| 45 | }; | 46 | }; |
| 46 | 47 | ||
| 47 | CAPS_C::CAPS_C() : ServiceFramework("caps:c") { | 48 | CAPS_C::CAPS_C(Core::System& system_) : ServiceFramework{system_, "caps:c"} { |
| 48 | // clang-format off | 49 | // clang-format off |
| 49 | static const FunctionInfo functions[] = { | 50 | static const FunctionInfo functions[] = { |
| 50 | {1, nullptr, "CaptureRawImage"}, | 51 | {1, nullptr, "CaptureRawImage"}, |
diff --git a/src/core/hle/service/caps/caps_c.h b/src/core/hle/service/caps/caps_c.h index b110301d4..c6d1dfdce 100644 --- a/src/core/hle/service/caps/caps_c.h +++ b/src/core/hle/service/caps/caps_c.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class HLERequestContext; | 14 | class HLERequestContext; |
| 11 | } | 15 | } |
| @@ -14,7 +18,7 @@ namespace Service::Capture { | |||
| 14 | 18 | ||
| 15 | class CAPS_C final : public ServiceFramework<CAPS_C> { | 19 | class CAPS_C final : public ServiceFramework<CAPS_C> { |
| 16 | public: | 20 | public: |
| 17 | explicit CAPS_C(); | 21 | explicit CAPS_C(Core::System& system_); |
| 18 | ~CAPS_C() override; | 22 | ~CAPS_C() override; |
| 19 | 23 | ||
| 20 | private: | 24 | private: |
diff --git a/src/core/hle/service/caps/caps_sc.cpp b/src/core/hle/service/caps/caps_sc.cpp index 822ee96c8..d91e18e80 100644 --- a/src/core/hle/service/caps/caps_sc.cpp +++ b/src/core/hle/service/caps/caps_sc.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Capture { | 7 | namespace Service::Capture { |
| 8 | 8 | ||
| 9 | CAPS_SC::CAPS_SC() : ServiceFramework("caps:sc") { | 9 | CAPS_SC::CAPS_SC(Core::System& system_) : ServiceFramework{system_, "caps:sc"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {1, nullptr, "CaptureRawImage"}, | 12 | {1, nullptr, "CaptureRawImage"}, |
diff --git a/src/core/hle/service/caps/caps_sc.h b/src/core/hle/service/caps/caps_sc.h index ac3e929ca..e79a33ee5 100644 --- a/src/core/hle/service/caps/caps_sc.h +++ b/src/core/hle/service/caps/caps_sc.h | |||
| @@ -6,15 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Kernel { | 9 | namespace Core { |
| 10 | class HLERequestContext; | 10 | class System; |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | namespace Service::Capture { | 13 | namespace Service::Capture { |
| 14 | 14 | ||
| 15 | class CAPS_SC final : public ServiceFramework<CAPS_SC> { | 15 | class CAPS_SC final : public ServiceFramework<CAPS_SC> { |
| 16 | public: | 16 | public: |
| 17 | explicit CAPS_SC(); | 17 | explicit CAPS_SC(Core::System& system_); |
| 18 | ~CAPS_SC() override; | 18 | ~CAPS_SC() override; |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
diff --git a/src/core/hle/service/caps/caps_ss.cpp b/src/core/hle/service/caps/caps_ss.cpp index 24dc716e7..2b5314691 100644 --- a/src/core/hle/service/caps/caps_ss.cpp +++ b/src/core/hle/service/caps/caps_ss.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Capture { | 7 | namespace Service::Capture { |
| 8 | 8 | ||
| 9 | CAPS_SS::CAPS_SS() : ServiceFramework("caps:ss") { | 9 | CAPS_SS::CAPS_SS(Core::System& system_) : ServiceFramework{system_, "caps:ss"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {201, nullptr, "SaveScreenShot"}, | 12 | {201, nullptr, "SaveScreenShot"}, |
diff --git a/src/core/hle/service/caps/caps_ss.h b/src/core/hle/service/caps/caps_ss.h index 450686e4f..1816f7885 100644 --- a/src/core/hle/service/caps/caps_ss.h +++ b/src/core/hle/service/caps/caps_ss.h | |||
| @@ -6,15 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Kernel { | 9 | namespace Core { |
| 10 | class HLERequestContext; | 10 | class System; |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | namespace Service::Capture { | 13 | namespace Service::Capture { |
| 14 | 14 | ||
| 15 | class CAPS_SS final : public ServiceFramework<CAPS_SS> { | 15 | class CAPS_SS final : public ServiceFramework<CAPS_SS> { |
| 16 | public: | 16 | public: |
| 17 | explicit CAPS_SS(); | 17 | explicit CAPS_SS(Core::System& system_); |
| 18 | ~CAPS_SS() override; | 18 | ~CAPS_SS() override; |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
diff --git a/src/core/hle/service/caps/caps_su.cpp b/src/core/hle/service/caps/caps_su.cpp index e386470f7..eae39eb7b 100644 --- a/src/core/hle/service/caps/caps_su.cpp +++ b/src/core/hle/service/caps/caps_su.cpp | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | namespace Service::Capture { | 9 | namespace Service::Capture { |
| 10 | 10 | ||
| 11 | CAPS_SU::CAPS_SU() : ServiceFramework("caps:su") { | 11 | CAPS_SU::CAPS_SU(Core::System& system_) : ServiceFramework{system_, "caps:su"} { |
| 12 | // clang-format off | 12 | // clang-format off |
| 13 | static const FunctionInfo functions[] = { | 13 | static const FunctionInfo functions[] = { |
| 14 | {32, &CAPS_SU::SetShimLibraryVersion, "SetShimLibraryVersion"}, | 14 | {32, &CAPS_SU::SetShimLibraryVersion, "SetShimLibraryVersion"}, |
diff --git a/src/core/hle/service/caps/caps_su.h b/src/core/hle/service/caps/caps_su.h index 62c9603a9..b366fdb13 100644 --- a/src/core/hle/service/caps/caps_su.h +++ b/src/core/hle/service/caps/caps_su.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class HLERequestContext; | 14 | class HLERequestContext; |
| 11 | } | 15 | } |
| @@ -14,7 +18,7 @@ namespace Service::Capture { | |||
| 14 | 18 | ||
| 15 | class CAPS_SU final : public ServiceFramework<CAPS_SU> { | 19 | class CAPS_SU final : public ServiceFramework<CAPS_SU> { |
| 16 | public: | 20 | public: |
| 17 | explicit CAPS_SU(); | 21 | explicit CAPS_SU(Core::System& system_); |
| 18 | ~CAPS_SU() override; | 22 | ~CAPS_SU() override; |
| 19 | 23 | ||
| 20 | private: | 24 | private: |
diff --git a/src/core/hle/service/caps/caps_u.cpp b/src/core/hle/service/caps/caps_u.cpp index f9479bdb3..842316a2e 100644 --- a/src/core/hle/service/caps/caps_u.cpp +++ b/src/core/hle/service/caps/caps_u.cpp | |||
| @@ -12,8 +12,8 @@ namespace Service::Capture { | |||
| 12 | class IAlbumAccessorApplicationSession final | 12 | class IAlbumAccessorApplicationSession final |
| 13 | : public ServiceFramework<IAlbumAccessorApplicationSession> { | 13 | : public ServiceFramework<IAlbumAccessorApplicationSession> { |
| 14 | public: | 14 | public: |
| 15 | explicit IAlbumAccessorApplicationSession() | 15 | explicit IAlbumAccessorApplicationSession(Core::System& system_) |
| 16 | : ServiceFramework{"IAlbumAccessorApplicationSession"} { | 16 | : ServiceFramework{system_, "IAlbumAccessorApplicationSession"} { |
| 17 | // clang-format off | 17 | // clang-format off |
| 18 | static const FunctionInfo functions[] = { | 18 | static const FunctionInfo functions[] = { |
| 19 | {2001, nullptr, "OpenAlbumMovieReadStream"}, | 19 | {2001, nullptr, "OpenAlbumMovieReadStream"}, |
| @@ -28,7 +28,7 @@ public: | |||
| 28 | } | 28 | } |
| 29 | }; | 29 | }; |
| 30 | 30 | ||
| 31 | CAPS_U::CAPS_U() : ServiceFramework("caps:u") { | 31 | CAPS_U::CAPS_U(Core::System& system_) : ServiceFramework{system_, "caps:u"} { |
| 32 | // clang-format off | 32 | // clang-format off |
| 33 | static const FunctionInfo functions[] = { | 33 | static const FunctionInfo functions[] = { |
| 34 | {32, &CAPS_U::SetShimLibraryVersion, "SetShimLibraryVersion"}, | 34 | {32, &CAPS_U::SetShimLibraryVersion, "SetShimLibraryVersion"}, |
diff --git a/src/core/hle/service/caps/caps_u.h b/src/core/hle/service/caps/caps_u.h index 4b80f3156..e7e0d8775 100644 --- a/src/core/hle/service/caps/caps_u.h +++ b/src/core/hle/service/caps/caps_u.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class HLERequestContext; | 14 | class HLERequestContext; |
| 11 | } | 15 | } |
| @@ -14,7 +18,7 @@ namespace Service::Capture { | |||
| 14 | 18 | ||
| 15 | class CAPS_U final : public ServiceFramework<CAPS_U> { | 19 | class CAPS_U final : public ServiceFramework<CAPS_U> { |
| 16 | public: | 20 | public: |
| 17 | explicit CAPS_U(); | 21 | explicit CAPS_U(Core::System& system_); |
| 18 | ~CAPS_U() override; | 22 | ~CAPS_U() override; |
| 19 | 23 | ||
| 20 | private: | 24 | private: |
diff --git a/src/core/hle/service/erpt/erpt.cpp b/src/core/hle/service/erpt/erpt.cpp index 4ec8c3093..4924c61c3 100644 --- a/src/core/hle/service/erpt/erpt.cpp +++ b/src/core/hle/service/erpt/erpt.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::ERPT { | |||
| 12 | 12 | ||
| 13 | class ErrorReportContext final : public ServiceFramework<ErrorReportContext> { | 13 | class ErrorReportContext final : public ServiceFramework<ErrorReportContext> { |
| 14 | public: | 14 | public: |
| 15 | explicit ErrorReportContext() : ServiceFramework{"erpt:c"} { | 15 | explicit ErrorReportContext(Core::System& system_) : ServiceFramework{system_, "erpt:c"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {0, nullptr, "SubmitContext"}, | 18 | {0, nullptr, "SubmitContext"}, |
| @@ -35,7 +35,7 @@ public: | |||
| 35 | 35 | ||
| 36 | class ErrorReportSession final : public ServiceFramework<ErrorReportSession> { | 36 | class ErrorReportSession final : public ServiceFramework<ErrorReportSession> { |
| 37 | public: | 37 | public: |
| 38 | explicit ErrorReportSession() : ServiceFramework{"erpt:r"} { | 38 | explicit ErrorReportSession(Core::System& system_) : ServiceFramework{system_, "erpt:r"} { |
| 39 | // clang-format off | 39 | // clang-format off |
| 40 | static const FunctionInfo functions[] = { | 40 | static const FunctionInfo functions[] = { |
| 41 | {0, nullptr, "OpenReport"}, | 41 | {0, nullptr, "OpenReport"}, |
| @@ -48,9 +48,9 @@ public: | |||
| 48 | } | 48 | } |
| 49 | }; | 49 | }; |
| 50 | 50 | ||
| 51 | void InstallInterfaces(SM::ServiceManager& sm) { | 51 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 52 | std::make_shared<ErrorReportContext>()->InstallAsService(sm); | 52 | std::make_shared<ErrorReportContext>(system)->InstallAsService(sm); |
| 53 | std::make_shared<ErrorReportSession>()->InstallAsService(sm); | 53 | std::make_shared<ErrorReportSession>(system)->InstallAsService(sm); |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | } // namespace Service::ERPT | 56 | } // namespace Service::ERPT |
diff --git a/src/core/hle/service/erpt/erpt.h b/src/core/hle/service/erpt/erpt.h index de439ab6d..8cd5c081f 100644 --- a/src/core/hle/service/erpt/erpt.h +++ b/src/core/hle/service/erpt/erpt.h | |||
| @@ -4,6 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| @@ -11,6 +15,6 @@ class ServiceManager; | |||
| 11 | namespace Service::ERPT { | 15 | namespace Service::ERPT { |
| 12 | 16 | ||
| 13 | /// Registers all ERPT services with the specified service manager. | 17 | /// Registers all ERPT services with the specified service manager. |
| 14 | void InstallInterfaces(SM::ServiceManager& sm); | 18 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 15 | 19 | ||
| 16 | } // namespace Service::ERPT | 20 | } // namespace Service::ERPT |
diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index c2737a365..26d1e3306 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp | |||
| @@ -14,7 +14,7 @@ constexpr ResultCode ERROR_INVALID_RIGHTS_ID{ErrorModule::ETicket, 3}; | |||
| 14 | 14 | ||
| 15 | class ETicket final : public ServiceFramework<ETicket> { | 15 | class ETicket final : public ServiceFramework<ETicket> { |
| 16 | public: | 16 | public: |
| 17 | explicit ETicket() : ServiceFramework{"es"} { | 17 | explicit ETicket(Core::System& system_) : ServiceFramework{system_, "es"} { |
| 18 | // clang-format off | 18 | // clang-format off |
| 19 | static const FunctionInfo functions[] = { | 19 | static const FunctionInfo functions[] = { |
| 20 | {1, &ETicket::ImportTicket, "ImportTicket"}, | 20 | {1, &ETicket::ImportTicket, "ImportTicket"}, |
| @@ -305,8 +305,8 @@ private: | |||
| 305 | Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); | 305 | Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); |
| 306 | }; | 306 | }; |
| 307 | 307 | ||
| 308 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 308 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 309 | std::make_shared<ETicket>()->InstallAsService(service_manager); | 309 | std::make_shared<ETicket>(system)->InstallAsService(service_manager); |
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | } // namespace Service::ES | 312 | } // namespace Service::ES |
diff --git a/src/core/hle/service/es/es.h b/src/core/hle/service/es/es.h index afe70465b..2a7b27d12 100644 --- a/src/core/hle/service/es/es.h +++ b/src/core/hle/service/es/es.h | |||
| @@ -4,6 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| @@ -11,6 +15,6 @@ class ServiceManager; | |||
| 11 | namespace Service::ES { | 15 | namespace Service::ES { |
| 12 | 16 | ||
| 13 | /// Registers all ES services with the specified service manager. | 17 | /// Registers all ES services with the specified service manager. |
| 14 | void InstallInterfaces(SM::ServiceManager& service_manager); | 18 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
| 15 | 19 | ||
| 16 | } // namespace Service::ES | 20 | } // namespace Service::ES |
diff --git a/src/core/hle/service/eupld/eupld.cpp b/src/core/hle/service/eupld/eupld.cpp index 0d6d244f4..2d650b1b7 100644 --- a/src/core/hle/service/eupld/eupld.cpp +++ b/src/core/hle/service/eupld/eupld.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::EUPLD { | |||
| 12 | 12 | ||
| 13 | class ErrorUploadContext final : public ServiceFramework<ErrorUploadContext> { | 13 | class ErrorUploadContext final : public ServiceFramework<ErrorUploadContext> { |
| 14 | public: | 14 | public: |
| 15 | explicit ErrorUploadContext() : ServiceFramework{"eupld:c"} { | 15 | explicit ErrorUploadContext(Core::System& system_) : ServiceFramework{system_, "eupld:c"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {0, nullptr, "SetUrl"}, | 18 | {0, nullptr, "SetUrl"}, |
| @@ -29,7 +29,7 @@ public: | |||
| 29 | 29 | ||
| 30 | class ErrorUploadRequest final : public ServiceFramework<ErrorUploadRequest> { | 30 | class ErrorUploadRequest final : public ServiceFramework<ErrorUploadRequest> { |
| 31 | public: | 31 | public: |
| 32 | explicit ErrorUploadRequest() : ServiceFramework{"eupld:r"} { | 32 | explicit ErrorUploadRequest(Core::System& system_) : ServiceFramework{system_, "eupld:r"} { |
| 33 | // clang-format off | 33 | // clang-format off |
| 34 | static const FunctionInfo functions[] = { | 34 | static const FunctionInfo functions[] = { |
| 35 | {0, nullptr, "Initialize"}, | 35 | {0, nullptr, "Initialize"}, |
| @@ -45,9 +45,9 @@ public: | |||
| 45 | } | 45 | } |
| 46 | }; | 46 | }; |
| 47 | 47 | ||
| 48 | void InstallInterfaces(SM::ServiceManager& sm) { | 48 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 49 | std::make_shared<ErrorUploadContext>()->InstallAsService(sm); | 49 | std::make_shared<ErrorUploadContext>(system)->InstallAsService(sm); |
| 50 | std::make_shared<ErrorUploadRequest>()->InstallAsService(sm); | 50 | std::make_shared<ErrorUploadRequest>(system)->InstallAsService(sm); |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | } // namespace Service::EUPLD | 53 | } // namespace Service::EUPLD |
diff --git a/src/core/hle/service/eupld/eupld.h b/src/core/hle/service/eupld/eupld.h index 6eef2c15f..539993a9d 100644 --- a/src/core/hle/service/eupld/eupld.h +++ b/src/core/hle/service/eupld/eupld.h | |||
| @@ -4,6 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| @@ -11,6 +15,6 @@ class ServiceManager; | |||
| 11 | namespace Service::EUPLD { | 15 | namespace Service::EUPLD { |
| 12 | 16 | ||
| 13 | /// Registers all EUPLD services with the specified service manager. | 17 | /// Registers all EUPLD services with the specified service manager. |
| 14 | void InstallInterfaces(SM::ServiceManager& sm); | 18 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 15 | 19 | ||
| 16 | } // namespace Service::EUPLD | 20 | } // namespace Service::EUPLD |
diff --git a/src/core/hle/service/fatal/fatal.cpp b/src/core/hle/service/fatal/fatal.cpp index 2546d7595..9b7672a91 100644 --- a/src/core/hle/service/fatal/fatal.cpp +++ b/src/core/hle/service/fatal/fatal.cpp | |||
| @@ -20,8 +20,9 @@ | |||
| 20 | 20 | ||
| 21 | namespace Service::Fatal { | 21 | namespace Service::Fatal { |
| 22 | 22 | ||
| 23 | Module::Interface::Interface(std::shared_ptr<Module> module, Core::System& system, const char* name) | 23 | Module::Interface::Interface(std::shared_ptr<Module> module_, Core::System& system_, |
| 24 | : ServiceFramework(name), module(std::move(module)), system(system) {} | 24 | const char* name) |
| 25 | : ServiceFramework{system_, name}, module{std::move(module_)} {} | ||
| 25 | 26 | ||
| 26 | Module::Interface::~Interface() = default; | 27 | Module::Interface::~Interface() = default; |
| 27 | 28 | ||
diff --git a/src/core/hle/service/fatal/fatal.h b/src/core/hle/service/fatal/fatal.h index bd9339dfc..2095bf89f 100644 --- a/src/core/hle/service/fatal/fatal.h +++ b/src/core/hle/service/fatal/fatal.h | |||
| @@ -16,7 +16,8 @@ class Module final { | |||
| 16 | public: | 16 | public: |
| 17 | class Interface : public ServiceFramework<Interface> { | 17 | class Interface : public ServiceFramework<Interface> { |
| 18 | public: | 18 | public: |
| 19 | explicit Interface(std::shared_ptr<Module> module, Core::System& system, const char* name); | 19 | explicit Interface(std::shared_ptr<Module> module_, Core::System& system_, |
| 20 | const char* name); | ||
| 20 | ~Interface() override; | 21 | ~Interface() override; |
| 21 | 22 | ||
| 22 | void ThrowFatal(Kernel::HLERequestContext& ctx); | 23 | void ThrowFatal(Kernel::HLERequestContext& ctx); |
| @@ -25,7 +26,6 @@ public: | |||
| 25 | 26 | ||
| 26 | protected: | 27 | protected: |
| 27 | std::shared_ptr<Module> module; | 28 | std::shared_ptr<Module> module; |
| 28 | Core::System& system; | ||
| 29 | }; | 29 | }; |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
diff --git a/src/core/hle/service/fatal/fatal_p.cpp b/src/core/hle/service/fatal/fatal_p.cpp index 066ccf6b0..8672b85dc 100644 --- a/src/core/hle/service/fatal/fatal_p.cpp +++ b/src/core/hle/service/fatal/fatal_p.cpp | |||
| @@ -6,8 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Fatal { | 7 | namespace Service::Fatal { |
| 8 | 8 | ||
| 9 | Fatal_P::Fatal_P(std::shared_ptr<Module> module, Core::System& system) | 9 | Fatal_P::Fatal_P(std::shared_ptr<Module> module_, Core::System& system_) |
| 10 | : Module::Interface(std::move(module), system, "fatal:p") {} | 10 | : Interface(std::move(module_), system_, "fatal:p") {} |
| 11 | 11 | ||
| 12 | Fatal_P::~Fatal_P() = default; | 12 | Fatal_P::~Fatal_P() = default; |
| 13 | 13 | ||
diff --git a/src/core/hle/service/fatal/fatal_p.h b/src/core/hle/service/fatal/fatal_p.h index c6d953cb5..ffa5b7b98 100644 --- a/src/core/hle/service/fatal/fatal_p.h +++ b/src/core/hle/service/fatal/fatal_p.h | |||
| @@ -10,7 +10,7 @@ namespace Service::Fatal { | |||
| 10 | 10 | ||
| 11 | class Fatal_P final : public Module::Interface { | 11 | class Fatal_P final : public Module::Interface { |
| 12 | public: | 12 | public: |
| 13 | explicit Fatal_P(std::shared_ptr<Module> module, Core::System& system); | 13 | explicit Fatal_P(std::shared_ptr<Module> module_, Core::System& system_); |
| 14 | ~Fatal_P() override; | 14 | ~Fatal_P() override; |
| 15 | }; | 15 | }; |
| 16 | 16 | ||
diff --git a/src/core/hle/service/fatal/fatal_u.cpp b/src/core/hle/service/fatal/fatal_u.cpp index 8d72ed485..82993938a 100644 --- a/src/core/hle/service/fatal/fatal_u.cpp +++ b/src/core/hle/service/fatal/fatal_u.cpp | |||
| @@ -6,8 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Fatal { | 7 | namespace Service::Fatal { |
| 8 | 8 | ||
| 9 | Fatal_U::Fatal_U(std::shared_ptr<Module> module, Core::System& system) | 9 | Fatal_U::Fatal_U(std::shared_ptr<Module> module_, Core::System& system_) |
| 10 | : Module::Interface(std::move(module), system, "fatal:u") { | 10 | : Interface(std::move(module_), system_, "fatal:u") { |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, &Fatal_U::ThrowFatal, "ThrowFatal"}, | 12 | {0, &Fatal_U::ThrowFatal, "ThrowFatal"}, |
| 13 | {1, &Fatal_U::ThrowFatalWithPolicy, "ThrowFatalWithPolicy"}, | 13 | {1, &Fatal_U::ThrowFatalWithPolicy, "ThrowFatalWithPolicy"}, |
diff --git a/src/core/hle/service/fatal/fatal_u.h b/src/core/hle/service/fatal/fatal_u.h index 34c5c7f95..0b58c9112 100644 --- a/src/core/hle/service/fatal/fatal_u.h +++ b/src/core/hle/service/fatal/fatal_u.h | |||
| @@ -10,7 +10,7 @@ namespace Service::Fatal { | |||
| 10 | 10 | ||
| 11 | class Fatal_U final : public Module::Interface { | 11 | class Fatal_U final : public Module::Interface { |
| 12 | public: | 12 | public: |
| 13 | explicit Fatal_U(std::shared_ptr<Module> module, Core::System& system); | 13 | explicit Fatal_U(std::shared_ptr<Module> module_, Core::System& system_); |
| 14 | ~Fatal_U() override; | 14 | ~Fatal_U() override; |
| 15 | }; | 15 | }; |
| 16 | 16 | ||
diff --git a/src/core/hle/service/fgm/fgm.cpp b/src/core/hle/service/fgm/fgm.cpp index e461274c1..9dc1bc52e 100644 --- a/src/core/hle/service/fgm/fgm.cpp +++ b/src/core/hle/service/fgm/fgm.cpp | |||
| @@ -14,7 +14,7 @@ namespace Service::FGM { | |||
| 14 | 14 | ||
| 15 | class IRequest final : public ServiceFramework<IRequest> { | 15 | class IRequest final : public ServiceFramework<IRequest> { |
| 16 | public: | 16 | public: |
| 17 | explicit IRequest() : ServiceFramework{"IRequest"} { | 17 | explicit IRequest(Core::System& system_) : ServiceFramework{system_, "IRequest"} { |
| 18 | // clang-format off | 18 | // clang-format off |
| 19 | static const FunctionInfo functions[] = { | 19 | static const FunctionInfo functions[] = { |
| 20 | {0, nullptr, "Initialize"}, | 20 | {0, nullptr, "Initialize"}, |
| @@ -30,7 +30,7 @@ public: | |||
| 30 | 30 | ||
| 31 | class FGM final : public ServiceFramework<FGM> { | 31 | class FGM final : public ServiceFramework<FGM> { |
| 32 | public: | 32 | public: |
| 33 | explicit FGM(const char* name) : ServiceFramework{name} { | 33 | explicit FGM(Core::System& system_, const char* name) : ServiceFramework{system_, name} { |
| 34 | // clang-format off | 34 | // clang-format off |
| 35 | static const FunctionInfo functions[] = { | 35 | static const FunctionInfo functions[] = { |
| 36 | {0, &FGM::Initialize, "Initialize"}, | 36 | {0, &FGM::Initialize, "Initialize"}, |
| @@ -46,13 +46,13 @@ private: | |||
| 46 | 46 | ||
| 47 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 47 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 48 | rb.Push(RESULT_SUCCESS); | 48 | rb.Push(RESULT_SUCCESS); |
| 49 | rb.PushIpcInterface<IRequest>(); | 49 | rb.PushIpcInterface<IRequest>(system); |
| 50 | } | 50 | } |
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | class FGM_DBG final : public ServiceFramework<FGM_DBG> { | 53 | class FGM_DBG final : public ServiceFramework<FGM_DBG> { |
| 54 | public: | 54 | public: |
| 55 | explicit FGM_DBG() : ServiceFramework{"fgm:dbg"} { | 55 | explicit FGM_DBG(Core::System& system_) : ServiceFramework{system_, "fgm:dbg"} { |
| 56 | // clang-format off | 56 | // clang-format off |
| 57 | static const FunctionInfo functions[] = { | 57 | static const FunctionInfo functions[] = { |
| 58 | {0, nullptr, "Initialize"}, | 58 | {0, nullptr, "Initialize"}, |
| @@ -65,11 +65,11 @@ public: | |||
| 65 | } | 65 | } |
| 66 | }; | 66 | }; |
| 67 | 67 | ||
| 68 | void InstallInterfaces(SM::ServiceManager& sm) { | 68 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 69 | std::make_shared<FGM>("fgm")->InstallAsService(sm); | 69 | std::make_shared<FGM>(system, "fgm")->InstallAsService(sm); |
| 70 | std::make_shared<FGM>("fgm:0")->InstallAsService(sm); | 70 | std::make_shared<FGM>(system, "fgm:0")->InstallAsService(sm); |
| 71 | std::make_shared<FGM>("fgm:9")->InstallAsService(sm); | 71 | std::make_shared<FGM>(system, "fgm:9")->InstallAsService(sm); |
| 72 | std::make_shared<FGM_DBG>()->InstallAsService(sm); | 72 | std::make_shared<FGM_DBG>(system)->InstallAsService(sm); |
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | } // namespace Service::FGM | 75 | } // namespace Service::FGM |
diff --git a/src/core/hle/service/fgm/fgm.h b/src/core/hle/service/fgm/fgm.h index e59691264..75978f2ed 100644 --- a/src/core/hle/service/fgm/fgm.h +++ b/src/core/hle/service/fgm/fgm.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::FGM { | 15 | namespace Service::FGM { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::FGM | 19 | } // namespace Service::FGM |
diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp index 2e53cae5b..af97561e4 100644 --- a/src/core/hle/service/filesystem/filesystem.cpp +++ b/src/core/hle/service/filesystem/filesystem.cpp | |||
| @@ -728,11 +728,9 @@ void FileSystemController::CreateFactories(FileSys::VfsFilesystem& vfs, bool ove | |||
| 728 | } | 728 | } |
| 729 | 729 | ||
| 730 | void InstallInterfaces(Core::System& system) { | 730 | void InstallInterfaces(Core::System& system) { |
| 731 | std::make_shared<FSP_LDR>()->InstallAsService(system.ServiceManager()); | 731 | std::make_shared<FSP_LDR>(system)->InstallAsService(system.ServiceManager()); |
| 732 | std::make_shared<FSP_PR>()->InstallAsService(system.ServiceManager()); | 732 | std::make_shared<FSP_PR>(system)->InstallAsService(system.ServiceManager()); |
| 733 | std::make_shared<FSP_SRV>(system.GetFileSystemController(), system.GetContentProvider(), | 733 | std::make_shared<FSP_SRV>(system)->InstallAsService(system.ServiceManager()); |
| 734 | system.GetReporter()) | ||
| 735 | ->InstallAsService(system.ServiceManager()); | ||
| 736 | } | 734 | } |
| 737 | 735 | ||
| 738 | } // namespace Service::FileSystem | 736 | } // namespace Service::FileSystem |
diff --git a/src/core/hle/service/filesystem/fsp_ldr.cpp b/src/core/hle/service/filesystem/fsp_ldr.cpp index fb487d5bc..1f6c17ba5 100644 --- a/src/core/hle/service/filesystem/fsp_ldr.cpp +++ b/src/core/hle/service/filesystem/fsp_ldr.cpp | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | namespace Service::FileSystem { | 8 | namespace Service::FileSystem { |
| 9 | 9 | ||
| 10 | FSP_LDR::FSP_LDR() : ServiceFramework{"fsp:ldr"} { | 10 | FSP_LDR::FSP_LDR(Core::System& system_) : ServiceFramework{system_, "fsp:ldr"} { |
| 11 | // clang-format off | 11 | // clang-format off |
| 12 | static const FunctionInfo functions[] = { | 12 | static const FunctionInfo functions[] = { |
| 13 | {0, nullptr, "OpenCodeFileSystem"}, | 13 | {0, nullptr, "OpenCodeFileSystem"}, |
diff --git a/src/core/hle/service/filesystem/fsp_ldr.h b/src/core/hle/service/filesystem/fsp_ldr.h index 8210b7729..d6432a0e1 100644 --- a/src/core/hle/service/filesystem/fsp_ldr.h +++ b/src/core/hle/service/filesystem/fsp_ldr.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::FileSystem { | 13 | namespace Service::FileSystem { |
| 10 | 14 | ||
| 11 | class FSP_LDR final : public ServiceFramework<FSP_LDR> { | 15 | class FSP_LDR final : public ServiceFramework<FSP_LDR> { |
| 12 | public: | 16 | public: |
| 13 | explicit FSP_LDR(); | 17 | explicit FSP_LDR(Core::System& system_); |
| 14 | ~FSP_LDR() override; | 18 | ~FSP_LDR() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/filesystem/fsp_pr.cpp b/src/core/hle/service/filesystem/fsp_pr.cpp index 378201610..00e4d1662 100644 --- a/src/core/hle/service/filesystem/fsp_pr.cpp +++ b/src/core/hle/service/filesystem/fsp_pr.cpp | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | namespace Service::FileSystem { | 8 | namespace Service::FileSystem { |
| 9 | 9 | ||
| 10 | FSP_PR::FSP_PR() : ServiceFramework{"fsp:pr"} { | 10 | FSP_PR::FSP_PR(Core::System& system_) : ServiceFramework{system_, "fsp:pr"} { |
| 11 | // clang-format off | 11 | // clang-format off |
| 12 | static const FunctionInfo functions[] = { | 12 | static const FunctionInfo functions[] = { |
| 13 | {0, nullptr, "RegisterProgram"}, | 13 | {0, nullptr, "RegisterProgram"}, |
diff --git a/src/core/hle/service/filesystem/fsp_pr.h b/src/core/hle/service/filesystem/fsp_pr.h index 556ae5ce9..9e622518c 100644 --- a/src/core/hle/service/filesystem/fsp_pr.h +++ b/src/core/hle/service/filesystem/fsp_pr.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::FileSystem { | 13 | namespace Service::FileSystem { |
| 10 | 14 | ||
| 11 | class FSP_PR final : public ServiceFramework<FSP_PR> { | 15 | class FSP_PR final : public ServiceFramework<FSP_PR> { |
| 12 | public: | 16 | public: |
| 13 | explicit FSP_PR(); | 17 | explicit FSP_PR(Core::System& system_); |
| 14 | ~FSP_PR() override; | 18 | ~FSP_PR() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/filesystem/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp_srv.cpp index 031c6dbf6..b3480494c 100644 --- a/src/core/hle/service/filesystem/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp_srv.cpp | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include "common/hex_util.h" | 14 | #include "common/hex_util.h" |
| 15 | #include "common/logging/log.h" | 15 | #include "common/logging/log.h" |
| 16 | #include "common/string_util.h" | 16 | #include "common/string_util.h" |
| 17 | #include "core/core.h" | ||
| 17 | #include "core/file_sys/directory.h" | 18 | #include "core/file_sys/directory.h" |
| 18 | #include "core/file_sys/errors.h" | 19 | #include "core/file_sys/errors.h" |
| 19 | #include "core/file_sys/mode.h" | 20 | #include "core/file_sys/mode.h" |
| @@ -56,8 +57,8 @@ enum class FileSystemType : u8 { | |||
| 56 | 57 | ||
| 57 | class IStorage final : public ServiceFramework<IStorage> { | 58 | class IStorage final : public ServiceFramework<IStorage> { |
| 58 | public: | 59 | public: |
| 59 | explicit IStorage(FileSys::VirtualFile backend_) | 60 | explicit IStorage(Core::System& system_, FileSys::VirtualFile backend_) |
| 60 | : ServiceFramework("IStorage"), backend(std::move(backend_)) { | 61 | : ServiceFramework{system_, "IStorage"}, backend(std::move(backend_)) { |
| 61 | static const FunctionInfo functions[] = { | 62 | static const FunctionInfo functions[] = { |
| 62 | {0, &IStorage::Read, "Read"}, | 63 | {0, &IStorage::Read, "Read"}, |
| 63 | {1, nullptr, "Write"}, | 64 | {1, nullptr, "Write"}, |
| @@ -114,8 +115,8 @@ private: | |||
| 114 | 115 | ||
| 115 | class IFile final : public ServiceFramework<IFile> { | 116 | class IFile final : public ServiceFramework<IFile> { |
| 116 | public: | 117 | public: |
| 117 | explicit IFile(FileSys::VirtualFile backend_) | 118 | explicit IFile(Core::System& system_, FileSys::VirtualFile backend_) |
| 118 | : ServiceFramework("IFile"), backend(std::move(backend_)) { | 119 | : ServiceFramework{system_, "IFile"}, backend(std::move(backend_)) { |
| 119 | static const FunctionInfo functions[] = { | 120 | static const FunctionInfo functions[] = { |
| 120 | {0, &IFile::Read, "Read"}, {1, &IFile::Write, "Write"}, | 121 | {0, &IFile::Read, "Read"}, {1, &IFile::Write, "Write"}, |
| 121 | {2, &IFile::Flush, "Flush"}, {3, &IFile::SetSize, "SetSize"}, | 122 | {2, &IFile::Flush, "Flush"}, {3, &IFile::SetSize, "SetSize"}, |
| @@ -246,8 +247,8 @@ static void BuildEntryIndex(std::vector<FileSys::Entry>& entries, const std::vec | |||
| 246 | 247 | ||
| 247 | class IDirectory final : public ServiceFramework<IDirectory> { | 248 | class IDirectory final : public ServiceFramework<IDirectory> { |
| 248 | public: | 249 | public: |
| 249 | explicit IDirectory(FileSys::VirtualDir backend_) | 250 | explicit IDirectory(Core::System& system_, FileSys::VirtualDir backend_) |
| 250 | : ServiceFramework("IDirectory"), backend(std::move(backend_)) { | 251 | : ServiceFramework{system_, "IDirectory"}, backend(std::move(backend_)) { |
| 251 | static const FunctionInfo functions[] = { | 252 | static const FunctionInfo functions[] = { |
| 252 | {0, &IDirectory::Read, "Read"}, | 253 | {0, &IDirectory::Read, "Read"}, |
| 253 | {1, &IDirectory::GetEntryCount, "GetEntryCount"}, | 254 | {1, &IDirectory::GetEntryCount, "GetEntryCount"}, |
| @@ -302,8 +303,9 @@ private: | |||
| 302 | 303 | ||
| 303 | class IFileSystem final : public ServiceFramework<IFileSystem> { | 304 | class IFileSystem final : public ServiceFramework<IFileSystem> { |
| 304 | public: | 305 | public: |
| 305 | explicit IFileSystem(FileSys::VirtualDir backend, SizeGetter size) | 306 | explicit IFileSystem(Core::System& system_, FileSys::VirtualDir backend_, SizeGetter size_) |
| 306 | : ServiceFramework("IFileSystem"), backend(std::move(backend)), size(std::move(size)) { | 307 | : ServiceFramework{system_, "IFileSystem"}, backend{std::move(backend_)}, size{std::move( |
| 308 | size_)} { | ||
| 307 | static const FunctionInfo functions[] = { | 309 | static const FunctionInfo functions[] = { |
| 308 | {0, &IFileSystem::CreateFile, "CreateFile"}, | 310 | {0, &IFileSystem::CreateFile, "CreateFile"}, |
| 309 | {1, &IFileSystem::DeleteFile, "DeleteFile"}, | 311 | {1, &IFileSystem::DeleteFile, "DeleteFile"}, |
| @@ -420,7 +422,7 @@ public: | |||
| 420 | return; | 422 | return; |
| 421 | } | 423 | } |
| 422 | 424 | ||
| 423 | auto file = std::make_shared<IFile>(result.Unwrap()); | 425 | auto file = std::make_shared<IFile>(system, result.Unwrap()); |
| 424 | 426 | ||
| 425 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 427 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 426 | rb.Push(RESULT_SUCCESS); | 428 | rb.Push(RESULT_SUCCESS); |
| @@ -445,7 +447,7 @@ public: | |||
| 445 | return; | 447 | return; |
| 446 | } | 448 | } |
| 447 | 449 | ||
| 448 | auto directory = std::make_shared<IDirectory>(result.Unwrap()); | 450 | auto directory = std::make_shared<IDirectory>(system, result.Unwrap()); |
| 449 | 451 | ||
| 450 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 452 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 451 | rb.Push(RESULT_SUCCESS); | 453 | rb.Push(RESULT_SUCCESS); |
| @@ -500,8 +502,9 @@ private: | |||
| 500 | 502 | ||
| 501 | class ISaveDataInfoReader final : public ServiceFramework<ISaveDataInfoReader> { | 503 | class ISaveDataInfoReader final : public ServiceFramework<ISaveDataInfoReader> { |
| 502 | public: | 504 | public: |
| 503 | explicit ISaveDataInfoReader(FileSys::SaveDataSpaceId space, FileSystemController& fsc) | 505 | explicit ISaveDataInfoReader(Core::System& system_, FileSys::SaveDataSpaceId space, |
| 504 | : ServiceFramework("ISaveDataInfoReader"), fsc(fsc) { | 506 | FileSystemController& fsc_) |
| 507 | : ServiceFramework{system_, "ISaveDataInfoReader"}, fsc{fsc_} { | ||
| 505 | static const FunctionInfo functions[] = { | 508 | static const FunctionInfo functions[] = { |
| 506 | {0, &ISaveDataInfoReader::ReadSaveDataInfo, "ReadSaveDataInfo"}, | 509 | {0, &ISaveDataInfoReader::ReadSaveDataInfo, "ReadSaveDataInfo"}, |
| 507 | }; | 510 | }; |
| @@ -650,10 +653,9 @@ private: | |||
| 650 | u64 next_entry_index = 0; | 653 | u64 next_entry_index = 0; |
| 651 | }; | 654 | }; |
| 652 | 655 | ||
| 653 | FSP_SRV::FSP_SRV(FileSystemController& fsc_, const FileSys::ContentProvider& content_provider_, | 656 | FSP_SRV::FSP_SRV(Core::System& system_) |
| 654 | const Core::Reporter& reporter_) | 657 | : ServiceFramework{system_, "fsp-srv"}, fsc{system.GetFileSystemController()}, |
| 655 | : ServiceFramework("fsp-srv"), fsc(fsc_), content_provider{content_provider_}, | 658 | content_provider{system.GetContentProvider()}, reporter{system.GetReporter()} { |
| 656 | reporter(reporter_) { | ||
| 657 | // clang-format off | 659 | // clang-format off |
| 658 | static const FunctionInfo functions[] = { | 660 | static const FunctionInfo functions[] = { |
| 659 | {0, nullptr, "OpenFileSystem"}, | 661 | {0, nullptr, "OpenFileSystem"}, |
| @@ -803,8 +805,9 @@ void FSP_SRV::OpenFileSystemWithPatch(Kernel::HLERequestContext& ctx) { | |||
| 803 | void FSP_SRV::OpenSdCardFileSystem(Kernel::HLERequestContext& ctx) { | 805 | void FSP_SRV::OpenSdCardFileSystem(Kernel::HLERequestContext& ctx) { |
| 804 | LOG_DEBUG(Service_FS, "called"); | 806 | LOG_DEBUG(Service_FS, "called"); |
| 805 | 807 | ||
| 806 | auto filesystem = std::make_shared<IFileSystem>( | 808 | auto filesystem = |
| 807 | fsc.OpenSDMC().Unwrap(), SizeGetter::FromStorageId(fsc, FileSys::StorageId::SdCard)); | 809 | std::make_shared<IFileSystem>(system, fsc.OpenSDMC().Unwrap(), |
| 810 | SizeGetter::FromStorageId(fsc, FileSys::StorageId::SdCard)); | ||
| 808 | 811 | ||
| 809 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 812 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 810 | rb.Push(RESULT_SUCCESS); | 813 | rb.Push(RESULT_SUCCESS); |
| @@ -864,8 +867,8 @@ void FSP_SRV::OpenSaveDataFileSystem(Kernel::HLERequestContext& ctx) { | |||
| 864 | UNREACHABLE(); | 867 | UNREACHABLE(); |
| 865 | } | 868 | } |
| 866 | 869 | ||
| 867 | auto filesystem = | 870 | auto filesystem = std::make_shared<IFileSystem>(system, std::move(dir.Unwrap()), |
| 868 | std::make_shared<IFileSystem>(std::move(dir.Unwrap()), SizeGetter::FromStorageId(fsc, id)); | 871 | SizeGetter::FromStorageId(fsc, id)); |
| 869 | 872 | ||
| 870 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 873 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 871 | rb.Push(RESULT_SUCCESS); | 874 | rb.Push(RESULT_SUCCESS); |
| @@ -884,7 +887,8 @@ void FSP_SRV::OpenSaveDataInfoReaderBySaveDataSpaceId(Kernel::HLERequestContext& | |||
| 884 | 887 | ||
| 885 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 888 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 886 | rb.Push(RESULT_SUCCESS); | 889 | rb.Push(RESULT_SUCCESS); |
| 887 | rb.PushIpcInterface<ISaveDataInfoReader>(std::make_shared<ISaveDataInfoReader>(space, fsc)); | 890 | rb.PushIpcInterface<ISaveDataInfoReader>( |
| 891 | std::make_shared<ISaveDataInfoReader>(system, space, fsc)); | ||
| 888 | } | 892 | } |
| 889 | 893 | ||
| 890 | void FSP_SRV::WriteSaveDataFileSystemExtraDataBySaveDataAttribute(Kernel::HLERequestContext& ctx) { | 894 | void FSP_SRV::WriteSaveDataFileSystemExtraDataBySaveDataAttribute(Kernel::HLERequestContext& ctx) { |
| @@ -933,7 +937,7 @@ void FSP_SRV::OpenDataStorageByCurrentProcess(Kernel::HLERequestContext& ctx) { | |||
| 933 | return; | 937 | return; |
| 934 | } | 938 | } |
| 935 | 939 | ||
| 936 | auto storage = std::make_shared<IStorage>(std::move(romfs.Unwrap())); | 940 | auto storage = std::make_shared<IStorage>(system, std::move(romfs.Unwrap())); |
| 937 | 941 | ||
| 938 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 942 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 939 | rb.Push(RESULT_SUCCESS); | 943 | rb.Push(RESULT_SUCCESS); |
| @@ -957,7 +961,7 @@ void FSP_SRV::OpenDataStorageByDataId(Kernel::HLERequestContext& ctx) { | |||
| 957 | if (archive != nullptr) { | 961 | if (archive != nullptr) { |
| 958 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 962 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 959 | rb.Push(RESULT_SUCCESS); | 963 | rb.Push(RESULT_SUCCESS); |
| 960 | rb.PushIpcInterface(std::make_shared<IStorage>(archive)); | 964 | rb.PushIpcInterface(std::make_shared<IStorage>(system, archive)); |
| 961 | return; | 965 | return; |
| 962 | } | 966 | } |
| 963 | 967 | ||
| @@ -973,7 +977,7 @@ void FSP_SRV::OpenDataStorageByDataId(Kernel::HLERequestContext& ctx) { | |||
| 973 | const FileSys::PatchManager pm{title_id, fsc, content_provider}; | 977 | const FileSys::PatchManager pm{title_id, fsc, content_provider}; |
| 974 | 978 | ||
| 975 | auto storage = std::make_shared<IStorage>( | 979 | auto storage = std::make_shared<IStorage>( |
| 976 | pm.PatchRomFS(std::move(data.Unwrap()), 0, FileSys::ContentRecordType::Data)); | 980 | system, pm.PatchRomFS(std::move(data.Unwrap()), 0, FileSys::ContentRecordType::Data)); |
| 977 | 981 | ||
| 978 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 982 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 979 | rb.Push(RESULT_SUCCESS); | 983 | rb.Push(RESULT_SUCCESS); |
| @@ -1035,7 +1039,8 @@ void FSP_SRV::GetAccessLogVersionInfo(Kernel::HLERequestContext& ctx) { | |||
| 1035 | 1039 | ||
| 1036 | class IMultiCommitManager final : public ServiceFramework<IMultiCommitManager> { | 1040 | class IMultiCommitManager final : public ServiceFramework<IMultiCommitManager> { |
| 1037 | public: | 1041 | public: |
| 1038 | explicit IMultiCommitManager() : ServiceFramework("IMultiCommitManager") { | 1042 | explicit IMultiCommitManager(Core::System& system_) |
| 1043 | : ServiceFramework{system_, "IMultiCommitManager"} { | ||
| 1039 | static const FunctionInfo functions[] = { | 1044 | static const FunctionInfo functions[] = { |
| 1040 | {1, &IMultiCommitManager::Add, "Add"}, | 1045 | {1, &IMultiCommitManager::Add, "Add"}, |
| 1041 | {2, &IMultiCommitManager::Commit, "Commit"}, | 1046 | {2, &IMultiCommitManager::Commit, "Commit"}, |
| @@ -1066,7 +1071,7 @@ void FSP_SRV::OpenMultiCommitManager(Kernel::HLERequestContext& ctx) { | |||
| 1066 | 1071 | ||
| 1067 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 1072 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 1068 | rb.Push(RESULT_SUCCESS); | 1073 | rb.Push(RESULT_SUCCESS); |
| 1069 | rb.PushIpcInterface<IMultiCommitManager>(std::make_shared<IMultiCommitManager>()); | 1074 | rb.PushIpcInterface<IMultiCommitManager>(std::make_shared<IMultiCommitManager>(system)); |
| 1070 | } | 1075 | } |
| 1071 | 1076 | ||
| 1072 | } // namespace Service::FileSystem | 1077 | } // namespace Service::FileSystem |
diff --git a/src/core/hle/service/filesystem/fsp_srv.h b/src/core/hle/service/filesystem/fsp_srv.h index 6c7239e6a..472286d6e 100644 --- a/src/core/hle/service/filesystem/fsp_srv.h +++ b/src/core/hle/service/filesystem/fsp_srv.h | |||
| @@ -33,8 +33,7 @@ enum class LogMode : u32 { | |||
| 33 | 33 | ||
| 34 | class FSP_SRV final : public ServiceFramework<FSP_SRV> { | 34 | class FSP_SRV final : public ServiceFramework<FSP_SRV> { |
| 35 | public: | 35 | public: |
| 36 | explicit FSP_SRV(FileSystemController& fsc_, const FileSys::ContentProvider& content_provider_, | 36 | explicit FSP_SRV(Core::System& system_); |
| 37 | const Core::Reporter& reporter_); | ||
| 38 | ~FSP_SRV() override; | 37 | ~FSP_SRV() override; |
| 39 | 38 | ||
| 40 | private: | 39 | private: |
diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp index ebb323da2..40a289594 100644 --- a/src/core/hle/service/friend/friend.cpp +++ b/src/core/hle/service/friend/friend.cpp | |||
| @@ -17,7 +17,7 @@ namespace Service::Friend { | |||
| 17 | 17 | ||
| 18 | class IFriendService final : public ServiceFramework<IFriendService> { | 18 | class IFriendService final : public ServiceFramework<IFriendService> { |
| 19 | public: | 19 | public: |
| 20 | IFriendService() : ServiceFramework("IFriendService") { | 20 | explicit IFriendService(Core::System& system_) : ServiceFramework{system_, "IFriendService"} { |
| 21 | // clang-format off | 21 | // clang-format off |
| 22 | static const FunctionInfo functions[] = { | 22 | static const FunctionInfo functions[] = { |
| 23 | {0, nullptr, "GetCompletionEvent"}, | 23 | {0, nullptr, "GetCompletionEvent"}, |
| @@ -171,8 +171,8 @@ private: | |||
| 171 | 171 | ||
| 172 | class INotificationService final : public ServiceFramework<INotificationService> { | 172 | class INotificationService final : public ServiceFramework<INotificationService> { |
| 173 | public: | 173 | public: |
| 174 | INotificationService(Common::UUID uuid, Core::System& system) | 174 | explicit INotificationService(Common::UUID uuid_, Core::System& system_) |
| 175 | : ServiceFramework("INotificationService"), uuid(uuid) { | 175 | : ServiceFramework{system_, "INotificationService"}, uuid{uuid_} { |
| 176 | // clang-format off | 176 | // clang-format off |
| 177 | static const FunctionInfo functions[] = { | 177 | static const FunctionInfo functions[] = { |
| 178 | {0, &INotificationService::GetEvent, "GetEvent"}, | 178 | {0, &INotificationService::GetEvent, "GetEvent"}, |
| @@ -267,7 +267,7 @@ private: | |||
| 267 | void Module::Interface::CreateFriendService(Kernel::HLERequestContext& ctx) { | 267 | void Module::Interface::CreateFriendService(Kernel::HLERequestContext& ctx) { |
| 268 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 268 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 269 | rb.Push(RESULT_SUCCESS); | 269 | rb.Push(RESULT_SUCCESS); |
| 270 | rb.PushIpcInterface<IFriendService>(); | 270 | rb.PushIpcInterface<IFriendService>(system); |
| 271 | LOG_DEBUG(Service_ACC, "called"); | 271 | LOG_DEBUG(Service_ACC, "called"); |
| 272 | } | 272 | } |
| 273 | 273 | ||
| @@ -282,8 +282,9 @@ void Module::Interface::CreateNotificationService(Kernel::HLERequestContext& ctx | |||
| 282 | rb.PushIpcInterface<INotificationService>(uuid, system); | 282 | rb.PushIpcInterface<INotificationService>(uuid, system); |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | Module::Interface::Interface(std::shared_ptr<Module> module, Core::System& system, const char* name) | 285 | Module::Interface::Interface(std::shared_ptr<Module> module_, Core::System& system_, |
| 286 | : ServiceFramework(name), module(std::move(module)), system(system) {} | 286 | const char* name) |
| 287 | : ServiceFramework{system_, name}, module{std::move(module_)} {} | ||
| 287 | 288 | ||
| 288 | Module::Interface::~Interface() = default; | 289 | Module::Interface::~Interface() = default; |
| 289 | 290 | ||
diff --git a/src/core/hle/service/friend/friend.h b/src/core/hle/service/friend/friend.h index 24f3fc969..8be3321db 100644 --- a/src/core/hle/service/friend/friend.h +++ b/src/core/hle/service/friend/friend.h | |||
| @@ -16,7 +16,8 @@ class Module final { | |||
| 16 | public: | 16 | public: |
| 17 | class Interface : public ServiceFramework<Interface> { | 17 | class Interface : public ServiceFramework<Interface> { |
| 18 | public: | 18 | public: |
| 19 | explicit Interface(std::shared_ptr<Module> module, Core::System& system, const char* name); | 19 | explicit Interface(std::shared_ptr<Module> module_, Core::System& system_, |
| 20 | const char* name); | ||
| 20 | ~Interface() override; | 21 | ~Interface() override; |
| 21 | 22 | ||
| 22 | void CreateFriendService(Kernel::HLERequestContext& ctx); | 23 | void CreateFriendService(Kernel::HLERequestContext& ctx); |
| @@ -24,7 +25,6 @@ public: | |||
| 24 | 25 | ||
| 25 | protected: | 26 | protected: |
| 26 | std::shared_ptr<Module> module; | 27 | std::shared_ptr<Module> module; |
| 27 | Core::System& system; | ||
| 28 | }; | 28 | }; |
| 29 | }; | 29 | }; |
| 30 | 30 | ||
diff --git a/src/core/hle/service/friend/interface.cpp b/src/core/hle/service/friend/interface.cpp index 58155f652..7368ccec2 100644 --- a/src/core/hle/service/friend/interface.cpp +++ b/src/core/hle/service/friend/interface.cpp | |||
| @@ -6,8 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Friend { | 7 | namespace Service::Friend { |
| 8 | 8 | ||
| 9 | Friend::Friend(std::shared_ptr<Module> module, Core::System& system, const char* name) | 9 | Friend::Friend(std::shared_ptr<Module> module_, Core::System& system_, const char* name) |
| 10 | : Interface(std::move(module), system, name) { | 10 | : Interface(std::move(module_), system_, name) { |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, &Friend::CreateFriendService, "CreateFriendService"}, | 12 | {0, &Friend::CreateFriendService, "CreateFriendService"}, |
| 13 | {1, &Friend::CreateNotificationService, "CreateNotificationService"}, | 13 | {1, &Friend::CreateNotificationService, "CreateNotificationService"}, |
diff --git a/src/core/hle/service/friend/interface.h b/src/core/hle/service/friend/interface.h index 465a35770..43d914b32 100644 --- a/src/core/hle/service/friend/interface.h +++ b/src/core/hle/service/friend/interface.h | |||
| @@ -10,7 +10,7 @@ namespace Service::Friend { | |||
| 10 | 10 | ||
| 11 | class Friend final : public Module::Interface { | 11 | class Friend final : public Module::Interface { |
| 12 | public: | 12 | public: |
| 13 | explicit Friend(std::shared_ptr<Module> module, Core::System& system, const char* name); | 13 | explicit Friend(std::shared_ptr<Module> module_, Core::System& system_, const char* name); |
| 14 | ~Friend() override; | 14 | ~Friend() override; |
| 15 | }; | 15 | }; |
| 16 | 16 | ||
diff --git a/src/core/hle/service/glue/arp.cpp b/src/core/hle/service/glue/arp.cpp index c6252ff89..fc77e7286 100644 --- a/src/core/hle/service/glue/arp.cpp +++ b/src/core/hle/service/glue/arp.cpp | |||
| @@ -33,8 +33,8 @@ std::optional<u64> GetTitleIDForProcessID(const Core::System& system, u64 proces | |||
| 33 | } | 33 | } |
| 34 | } // Anonymous namespace | 34 | } // Anonymous namespace |
| 35 | 35 | ||
| 36 | ARP_R::ARP_R(const Core::System& system, const ARPManager& manager) | 36 | ARP_R::ARP_R(Core::System& system_, const ARPManager& manager_) |
| 37 | : ServiceFramework{"arp:r"}, system(system), manager(manager) { | 37 | : ServiceFramework{system_, "arp:r"}, manager{manager_} { |
| 38 | // clang-format off | 38 | // clang-format off |
| 39 | static const FunctionInfo functions[] = { | 39 | static const FunctionInfo functions[] = { |
| 40 | {0, &ARP_R::GetApplicationLaunchProperty, "GetApplicationLaunchProperty"}, | 40 | {0, &ARP_R::GetApplicationLaunchProperty, "GetApplicationLaunchProperty"}, |
| @@ -152,8 +152,9 @@ class IRegistrar final : public ServiceFramework<IRegistrar> { | |||
| 152 | 152 | ||
| 153 | public: | 153 | public: |
| 154 | explicit IRegistrar( | 154 | explicit IRegistrar( |
| 155 | Core::System& system_, | ||
| 155 | std::function<ResultCode(u64, ApplicationLaunchProperty, std::vector<u8>)> issuer) | 156 | std::function<ResultCode(u64, ApplicationLaunchProperty, std::vector<u8>)> issuer) |
| 156 | : ServiceFramework{"IRegistrar"}, issue_process_id(std::move(issuer)) { | 157 | : ServiceFramework{system_, "IRegistrar"}, issue_process_id{std::move(issuer)} { |
| 157 | // clang-format off | 158 | // clang-format off |
| 158 | static const FunctionInfo functions[] = { | 159 | static const FunctionInfo functions[] = { |
| 159 | {0, &IRegistrar::Issue, "Issue"}, | 160 | {0, &IRegistrar::Issue, "Issue"}, |
| @@ -237,8 +238,8 @@ private: | |||
| 237 | std::vector<u8> control; | 238 | std::vector<u8> control; |
| 238 | }; | 239 | }; |
| 239 | 240 | ||
| 240 | ARP_W::ARP_W(const Core::System& system, ARPManager& manager) | 241 | ARP_W::ARP_W(Core::System& system_, ARPManager& manager_) |
| 241 | : ServiceFramework{"arp:w"}, system(system), manager(manager) { | 242 | : ServiceFramework{system_, "arp:w"}, manager{manager_} { |
| 242 | // clang-format off | 243 | // clang-format off |
| 243 | static const FunctionInfo functions[] = { | 244 | static const FunctionInfo functions[] = { |
| 244 | {0, &ARP_W::AcquireRegistrar, "AcquireRegistrar"}, | 245 | {0, &ARP_W::AcquireRegistrar, "AcquireRegistrar"}, |
| @@ -255,7 +256,7 @@ void ARP_W::AcquireRegistrar(Kernel::HLERequestContext& ctx) { | |||
| 255 | LOG_DEBUG(Service_ARP, "called"); | 256 | LOG_DEBUG(Service_ARP, "called"); |
| 256 | 257 | ||
| 257 | registrar = std::make_shared<IRegistrar>( | 258 | registrar = std::make_shared<IRegistrar>( |
| 258 | [this](u64 process_id, ApplicationLaunchProperty launch, std::vector<u8> control) { | 259 | system, [this](u64 process_id, ApplicationLaunchProperty launch, std::vector<u8> control) { |
| 259 | const auto res = GetTitleIDForProcessID(system, process_id); | 260 | const auto res = GetTitleIDForProcessID(system, process_id); |
| 260 | if (!res.has_value()) { | 261 | if (!res.has_value()) { |
| 261 | return ERR_NOT_REGISTERED; | 262 | return ERR_NOT_REGISTERED; |
diff --git a/src/core/hle/service/glue/arp.h b/src/core/hle/service/glue/arp.h index d5f8a7e7a..34b412e26 100644 --- a/src/core/hle/service/glue/arp.h +++ b/src/core/hle/service/glue/arp.h | |||
| @@ -13,7 +13,7 @@ class IRegistrar; | |||
| 13 | 13 | ||
| 14 | class ARP_R final : public ServiceFramework<ARP_R> { | 14 | class ARP_R final : public ServiceFramework<ARP_R> { |
| 15 | public: | 15 | public: |
| 16 | explicit ARP_R(const Core::System& system, const ARPManager& manager); | 16 | explicit ARP_R(Core::System& system_, const ARPManager& manager_); |
| 17 | ~ARP_R() override; | 17 | ~ARP_R() override; |
| 18 | 18 | ||
| 19 | private: | 19 | private: |
| @@ -22,20 +22,18 @@ private: | |||
| 22 | void GetApplicationControlProperty(Kernel::HLERequestContext& ctx); | 22 | void GetApplicationControlProperty(Kernel::HLERequestContext& ctx); |
| 23 | void GetApplicationControlPropertyWithApplicationId(Kernel::HLERequestContext& ctx); | 23 | void GetApplicationControlPropertyWithApplicationId(Kernel::HLERequestContext& ctx); |
| 24 | 24 | ||
| 25 | const Core::System& system; | ||
| 26 | const ARPManager& manager; | 25 | const ARPManager& manager; |
| 27 | }; | 26 | }; |
| 28 | 27 | ||
| 29 | class ARP_W final : public ServiceFramework<ARP_W> { | 28 | class ARP_W final : public ServiceFramework<ARP_W> { |
| 30 | public: | 29 | public: |
| 31 | explicit ARP_W(const Core::System& system, ARPManager& manager); | 30 | explicit ARP_W(Core::System& system_, ARPManager& manager_); |
| 32 | ~ARP_W() override; | 31 | ~ARP_W() override; |
| 33 | 32 | ||
| 34 | private: | 33 | private: |
| 35 | void AcquireRegistrar(Kernel::HLERequestContext& ctx); | 34 | void AcquireRegistrar(Kernel::HLERequestContext& ctx); |
| 36 | void DeleteProperties(Kernel::HLERequestContext& ctx); | 35 | void DeleteProperties(Kernel::HLERequestContext& ctx); |
| 37 | 36 | ||
| 38 | const Core::System& system; | ||
| 39 | ARPManager& manager; | 37 | ARPManager& manager; |
| 40 | std::shared_ptr<IRegistrar> registrar; | 38 | std::shared_ptr<IRegistrar> registrar; |
| 41 | }; | 39 | }; |
diff --git a/src/core/hle/service/glue/bgtc.cpp b/src/core/hle/service/glue/bgtc.cpp index cd89d088f..a478b68e1 100644 --- a/src/core/hle/service/glue/bgtc.cpp +++ b/src/core/hle/service/glue/bgtc.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Glue { | 7 | namespace Service::Glue { |
| 8 | 8 | ||
| 9 | BGTC_T::BGTC_T() : ServiceFramework{"bgtc:t"} { | 9 | BGTC_T::BGTC_T(Core::System& system_) : ServiceFramework{system_, "bgtc:t"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {1, nullptr, "NotifyTaskStarting"}, | 12 | {1, nullptr, "NotifyTaskStarting"}, |
| @@ -31,7 +31,7 @@ BGTC_T::BGTC_T() : ServiceFramework{"bgtc:t"} { | |||
| 31 | 31 | ||
| 32 | BGTC_T::~BGTC_T() = default; | 32 | BGTC_T::~BGTC_T() = default; |
| 33 | 33 | ||
| 34 | BGTC_SC::BGTC_SC() : ServiceFramework{"bgtc:sc"} { | 34 | BGTC_SC::BGTC_SC(Core::System& system_) : ServiceFramework{system_, "bgtc:sc"} { |
| 35 | // clang-format off | 35 | // clang-format off |
| 36 | static const FunctionInfo functions[] = { | 36 | static const FunctionInfo functions[] = { |
| 37 | {1, nullptr, "GetState"}, | 37 | {1, nullptr, "GetState"}, |
diff --git a/src/core/hle/service/glue/bgtc.h b/src/core/hle/service/glue/bgtc.h index 81844f03e..906116ba6 100644 --- a/src/core/hle/service/glue/bgtc.h +++ b/src/core/hle/service/glue/bgtc.h | |||
| @@ -6,17 +6,21 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Glue { | 13 | namespace Service::Glue { |
| 10 | 14 | ||
| 11 | class BGTC_T final : public ServiceFramework<BGTC_T> { | 15 | class BGTC_T final : public ServiceFramework<BGTC_T> { |
| 12 | public: | 16 | public: |
| 13 | BGTC_T(); | 17 | explicit BGTC_T(Core::System& system_); |
| 14 | ~BGTC_T() override; | 18 | ~BGTC_T() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
| 17 | class BGTC_SC final : public ServiceFramework<BGTC_SC> { | 21 | class BGTC_SC final : public ServiceFramework<BGTC_SC> { |
| 18 | public: | 22 | public: |
| 19 | BGTC_SC(); | 23 | explicit BGTC_SC(Core::System& system_); |
| 20 | ~BGTC_SC() override; | 24 | ~BGTC_SC() override; |
| 21 | }; | 25 | }; |
| 22 | 26 | ||
diff --git a/src/core/hle/service/glue/glue.cpp b/src/core/hle/service/glue/glue.cpp index c728e815c..4eafbe5fa 100644 --- a/src/core/hle/service/glue/glue.cpp +++ b/src/core/hle/service/glue/glue.cpp | |||
| @@ -18,8 +18,8 @@ void InstallInterfaces(Core::System& system) { | |||
| 18 | ->InstallAsService(system.ServiceManager()); | 18 | ->InstallAsService(system.ServiceManager()); |
| 19 | 19 | ||
| 20 | // BackGround Task Controller | 20 | // BackGround Task Controller |
| 21 | std::make_shared<BGTC_T>()->InstallAsService(system.ServiceManager()); | 21 | std::make_shared<BGTC_T>(system)->InstallAsService(system.ServiceManager()); |
| 22 | std::make_shared<BGTC_SC>()->InstallAsService(system.ServiceManager()); | 22 | std::make_shared<BGTC_SC>(system)->InstallAsService(system.ServiceManager()); |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | } // namespace Service::Glue | 25 | } // namespace Service::Glue |
diff --git a/src/core/hle/service/grc/grc.cpp b/src/core/hle/service/grc/grc.cpp index 401e0b208..a502ab47f 100644 --- a/src/core/hle/service/grc/grc.cpp +++ b/src/core/hle/service/grc/grc.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::GRC { | |||
| 12 | 12 | ||
| 13 | class GRC final : public ServiceFramework<GRC> { | 13 | class GRC final : public ServiceFramework<GRC> { |
| 14 | public: | 14 | public: |
| 15 | explicit GRC() : ServiceFramework{"grc:c"} { | 15 | explicit GRC(Core::System& system) : ServiceFramework{system, "grc:c"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {1, nullptr, "OpenContinuousRecorder"}, | 18 | {1, nullptr, "OpenContinuousRecorder"}, |
| @@ -27,8 +27,8 @@ public: | |||
| 27 | } | 27 | } |
| 28 | }; | 28 | }; |
| 29 | 29 | ||
| 30 | void InstallInterfaces(SM::ServiceManager& sm) { | 30 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 31 | std::make_shared<GRC>()->InstallAsService(sm); | 31 | std::make_shared<GRC>(system)->InstallAsService(sm); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | } // namespace Service::GRC | 34 | } // namespace Service::GRC |
diff --git a/src/core/hle/service/grc/grc.h b/src/core/hle/service/grc/grc.h index e0d29e70d..9069fe756 100644 --- a/src/core/hle/service/grc/grc.h +++ b/src/core/hle/service/grc/grc.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::GRC { | 15 | namespace Service::GRC { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::GRC | 19 | } // namespace Service::GRC |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 902516b29..80804b483 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -44,8 +44,8 @@ constexpr auto pad_update_ns = std::chrono::nanoseconds{1000 * 1000}; // | |||
| 44 | constexpr auto motion_update_ns = std::chrono::nanoseconds{15 * 1000 * 1000}; // (15ms, 66.666Hz) | 44 | constexpr auto motion_update_ns = std::chrono::nanoseconds{15 * 1000 * 1000}; // (15ms, 66.666Hz) |
| 45 | constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; | 45 | constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; |
| 46 | 46 | ||
| 47 | IAppletResource::IAppletResource(Core::System& system) | 47 | IAppletResource::IAppletResource(Core::System& system_) |
| 48 | : ServiceFramework("IAppletResource"), system(system) { | 48 | : ServiceFramework{system_, "IAppletResource"} { |
| 49 | static const FunctionInfo functions[] = { | 49 | static const FunctionInfo functions[] = { |
| 50 | {0, &IAppletResource::GetSharedMemoryHandle, "GetSharedMemoryHandle"}, | 50 | {0, &IAppletResource::GetSharedMemoryHandle, "GetSharedMemoryHandle"}, |
| 51 | }; | 51 | }; |
| @@ -139,8 +139,10 @@ void IAppletResource::UpdateMotion(std::uintptr_t user_data, std::chrono::nanose | |||
| 139 | 139 | ||
| 140 | class IActiveVibrationDeviceList final : public ServiceFramework<IActiveVibrationDeviceList> { | 140 | class IActiveVibrationDeviceList final : public ServiceFramework<IActiveVibrationDeviceList> { |
| 141 | public: | 141 | public: |
| 142 | explicit IActiveVibrationDeviceList(std::shared_ptr<IAppletResource> applet_resource_) | 142 | explicit IActiveVibrationDeviceList(Core::System& system_, |
| 143 | : ServiceFramework("IActiveVibrationDeviceList"), applet_resource(applet_resource_) { | 143 | std::shared_ptr<IAppletResource> applet_resource_) |
| 144 | : ServiceFramework{system_, "IActiveVibrationDeviceList"}, | ||
| 145 | applet_resource(applet_resource_) { | ||
| 144 | // clang-format off | 146 | // clang-format off |
| 145 | static const FunctionInfo functions[] = { | 147 | static const FunctionInfo functions[] = { |
| 146 | {0, &IActiveVibrationDeviceList::InitializeVibrationDevice, "InitializeVibrationDevice"}, | 148 | {0, &IActiveVibrationDeviceList::InitializeVibrationDevice, "InitializeVibrationDevice"}, |
| @@ -177,7 +179,7 @@ std::shared_ptr<IAppletResource> Hid::GetAppletResource() { | |||
| 177 | return applet_resource; | 179 | return applet_resource; |
| 178 | } | 180 | } |
| 179 | 181 | ||
| 180 | Hid::Hid(Core::System& system) : ServiceFramework("hid"), system(system) { | 182 | Hid::Hid(Core::System& system_) : ServiceFramework{system_, "hid"} { |
| 181 | // clang-format off | 183 | // clang-format off |
| 182 | static const FunctionInfo functions[] = { | 184 | static const FunctionInfo functions[] = { |
| 183 | {0, &Hid::CreateAppletResource, "CreateAppletResource"}, | 185 | {0, &Hid::CreateAppletResource, "CreateAppletResource"}, |
| @@ -1068,7 +1070,7 @@ void Hid::CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx) { | |||
| 1068 | 1070 | ||
| 1069 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 1071 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 1070 | rb.Push(RESULT_SUCCESS); | 1072 | rb.Push(RESULT_SUCCESS); |
| 1071 | rb.PushIpcInterface<IActiveVibrationDeviceList>(applet_resource); | 1073 | rb.PushIpcInterface<IActiveVibrationDeviceList>(system, applet_resource); |
| 1072 | } | 1074 | } |
| 1073 | 1075 | ||
| 1074 | void Hid::PermitVibration(Kernel::HLERequestContext& ctx) { | 1076 | void Hid::PermitVibration(Kernel::HLERequestContext& ctx) { |
| @@ -1298,7 +1300,7 @@ void Hid::SetPalmaBoostMode(Kernel::HLERequestContext& ctx) { | |||
| 1298 | 1300 | ||
| 1299 | class HidDbg final : public ServiceFramework<HidDbg> { | 1301 | class HidDbg final : public ServiceFramework<HidDbg> { |
| 1300 | public: | 1302 | public: |
| 1301 | explicit HidDbg() : ServiceFramework{"hid:dbg"} { | 1303 | explicit HidDbg(Core::System& system_) : ServiceFramework{system_, "hid:dbg"} { |
| 1302 | // clang-format off | 1304 | // clang-format off |
| 1303 | static const FunctionInfo functions[] = { | 1305 | static const FunctionInfo functions[] = { |
| 1304 | {0, nullptr, "DeactivateDebugPad"}, | 1306 | {0, nullptr, "DeactivateDebugPad"}, |
| @@ -1425,7 +1427,7 @@ public: | |||
| 1425 | 1427 | ||
| 1426 | class HidSys final : public ServiceFramework<HidSys> { | 1428 | class HidSys final : public ServiceFramework<HidSys> { |
| 1427 | public: | 1429 | public: |
| 1428 | explicit HidSys() : ServiceFramework{"hid:sys"} { | 1430 | explicit HidSys(Core::System& system_) : ServiceFramework{system_, "hid:sys"} { |
| 1429 | // clang-format off | 1431 | // clang-format off |
| 1430 | static const FunctionInfo functions[] = { | 1432 | static const FunctionInfo functions[] = { |
| 1431 | {31, nullptr, "SendKeyboardLockKeyEvent"}, | 1433 | {31, nullptr, "SendKeyboardLockKeyEvent"}, |
| @@ -1559,7 +1561,7 @@ public: | |||
| 1559 | 1561 | ||
| 1560 | class HidTmp final : public ServiceFramework<HidTmp> { | 1562 | class HidTmp final : public ServiceFramework<HidTmp> { |
| 1561 | public: | 1563 | public: |
| 1562 | explicit HidTmp() : ServiceFramework{"hid:tmp"} { | 1564 | explicit HidTmp(Core::System& system_) : ServiceFramework{system_, "hid:tmp"} { |
| 1563 | // clang-format off | 1565 | // clang-format off |
| 1564 | static const FunctionInfo functions[] = { | 1566 | static const FunctionInfo functions[] = { |
| 1565 | {0, nullptr, "GetConsoleSixAxisSensorCalibrationValues"}, | 1567 | {0, nullptr, "GetConsoleSixAxisSensorCalibrationValues"}, |
| @@ -1572,7 +1574,7 @@ public: | |||
| 1572 | 1574 | ||
| 1573 | class HidBus final : public ServiceFramework<HidBus> { | 1575 | class HidBus final : public ServiceFramework<HidBus> { |
| 1574 | public: | 1576 | public: |
| 1575 | explicit HidBus() : ServiceFramework{"hidbus"} { | 1577 | explicit HidBus(Core::System& system_) : ServiceFramework{system_, "hidbus"} { |
| 1576 | // clang-format off | 1578 | // clang-format off |
| 1577 | static const FunctionInfo functions[] = { | 1579 | static const FunctionInfo functions[] = { |
| 1578 | {1, nullptr, "GetBusHandle"}, | 1580 | {1, nullptr, "GetBusHandle"}, |
| @@ -1602,15 +1604,15 @@ void ReloadInputDevices() { | |||
| 1602 | 1604 | ||
| 1603 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { | 1605 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 1604 | std::make_shared<Hid>(system)->InstallAsService(service_manager); | 1606 | std::make_shared<Hid>(system)->InstallAsService(service_manager); |
| 1605 | std::make_shared<HidBus>()->InstallAsService(service_manager); | 1607 | std::make_shared<HidBus>(system)->InstallAsService(service_manager); |
| 1606 | std::make_shared<HidDbg>()->InstallAsService(service_manager); | 1608 | std::make_shared<HidDbg>(system)->InstallAsService(service_manager); |
| 1607 | std::make_shared<HidSys>()->InstallAsService(service_manager); | 1609 | std::make_shared<HidSys>(system)->InstallAsService(service_manager); |
| 1608 | std::make_shared<HidTmp>()->InstallAsService(service_manager); | 1610 | std::make_shared<HidTmp>(system)->InstallAsService(service_manager); |
| 1609 | 1611 | ||
| 1610 | std::make_shared<IRS>(system)->InstallAsService(service_manager); | 1612 | std::make_shared<IRS>(system)->InstallAsService(service_manager); |
| 1611 | std::make_shared<IRS_SYS>()->InstallAsService(service_manager); | 1613 | std::make_shared<IRS_SYS>(system)->InstallAsService(service_manager); |
| 1612 | 1614 | ||
| 1613 | std::make_shared<XCD_SYS>()->InstallAsService(service_manager); | 1615 | std::make_shared<XCD_SYS>(system)->InstallAsService(service_manager); |
| 1614 | } | 1616 | } |
| 1615 | 1617 | ||
| 1616 | } // namespace Service::HID | 1618 | } // namespace Service::HID |
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h index c8e4a4b55..1a73b8f73 100644 --- a/src/core/hle/service/hid/hid.h +++ b/src/core/hle/service/hid/hid.h | |||
| @@ -41,7 +41,7 @@ enum class HidController : std::size_t { | |||
| 41 | 41 | ||
| 42 | class IAppletResource final : public ServiceFramework<IAppletResource> { | 42 | class IAppletResource final : public ServiceFramework<IAppletResource> { |
| 43 | public: | 43 | public: |
| 44 | explicit IAppletResource(Core::System& system); | 44 | explicit IAppletResource(Core::System& system_); |
| 45 | ~IAppletResource() override; | 45 | ~IAppletResource() override; |
| 46 | 46 | ||
| 47 | void ActivateController(HidController controller); | 47 | void ActivateController(HidController controller); |
| @@ -71,7 +71,6 @@ private: | |||
| 71 | 71 | ||
| 72 | std::shared_ptr<Core::Timing::EventType> pad_update_event; | 72 | std::shared_ptr<Core::Timing::EventType> pad_update_event; |
| 73 | std::shared_ptr<Core::Timing::EventType> motion_update_event; | 73 | std::shared_ptr<Core::Timing::EventType> motion_update_event; |
| 74 | Core::System& system; | ||
| 75 | 74 | ||
| 76 | std::array<std::unique_ptr<ControllerBase>, static_cast<size_t>(HidController::MaxControllers)> | 75 | std::array<std::unique_ptr<ControllerBase>, static_cast<size_t>(HidController::MaxControllers)> |
| 77 | controllers{}; | 76 | controllers{}; |
| @@ -79,7 +78,7 @@ private: | |||
| 79 | 78 | ||
| 80 | class Hid final : public ServiceFramework<Hid> { | 79 | class Hid final : public ServiceFramework<Hid> { |
| 81 | public: | 80 | public: |
| 82 | explicit Hid(Core::System& system); | 81 | explicit Hid(Core::System& system_); |
| 83 | ~Hid() override; | 82 | ~Hid() override; |
| 84 | 83 | ||
| 85 | std::shared_ptr<IAppletResource> GetAppletResource(); | 84 | std::shared_ptr<IAppletResource> GetAppletResource(); |
| @@ -164,7 +163,6 @@ private: | |||
| 164 | static_assert(sizeof(VibrationDeviceInfo) == 0x8, "VibrationDeviceInfo has incorrect size."); | 163 | static_assert(sizeof(VibrationDeviceInfo) == 0x8, "VibrationDeviceInfo has incorrect size."); |
| 165 | 164 | ||
| 166 | std::shared_ptr<IAppletResource> applet_resource; | 165 | std::shared_ptr<IAppletResource> applet_resource; |
| 167 | Core::System& system; | ||
| 168 | }; | 166 | }; |
| 169 | 167 | ||
| 170 | /// Reload input devices. Used when input configuration changed | 168 | /// Reload input devices. Used when input configuration changed |
diff --git a/src/core/hle/service/hid/irs.cpp b/src/core/hle/service/hid/irs.cpp index e82fd031b..c8413099f 100644 --- a/src/core/hle/service/hid/irs.cpp +++ b/src/core/hle/service/hid/irs.cpp | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | namespace Service::HID { | 13 | namespace Service::HID { |
| 14 | 14 | ||
| 15 | IRS::IRS(Core::System& system) : ServiceFramework{"irs"}, system(system) { | 15 | IRS::IRS(Core::System& system_) : ServiceFramework{system_, "irs"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {302, &IRS::ActivateIrsensor, "ActivateIrsensor"}, | 18 | {302, &IRS::ActivateIrsensor, "ActivateIrsensor"}, |
| @@ -175,7 +175,7 @@ void IRS::ActivateIrsensorWithFunctionLevel(Kernel::HLERequestContext& ctx) { | |||
| 175 | 175 | ||
| 176 | IRS::~IRS() = default; | 176 | IRS::~IRS() = default; |
| 177 | 177 | ||
| 178 | IRS_SYS::IRS_SYS() : ServiceFramework{"irs:sys"} { | 178 | IRS_SYS::IRS_SYS(Core::System& system_) : ServiceFramework{system_, "irs:sys"} { |
| 179 | // clang-format off | 179 | // clang-format off |
| 180 | static const FunctionInfo functions[] = { | 180 | static const FunctionInfo functions[] = { |
| 181 | {500, nullptr, "SetAppletResourceUserId"}, | 181 | {500, nullptr, "SetAppletResourceUserId"}, |
diff --git a/src/core/hle/service/hid/irs.h b/src/core/hle/service/hid/irs.h index 8918ad6ca..be0c486ba 100644 --- a/src/core/hle/service/hid/irs.h +++ b/src/core/hle/service/hid/irs.h | |||
| @@ -7,6 +7,10 @@ | |||
| 7 | #include "core/hle/kernel/object.h" | 7 | #include "core/hle/kernel/object.h" |
| 8 | #include "core/hle/service/service.h" | 8 | #include "core/hle/service/service.h" |
| 9 | 9 | ||
| 10 | namespace Core { | ||
| 11 | class System; | ||
| 12 | } | ||
| 13 | |||
| 10 | namespace Kernel { | 14 | namespace Kernel { |
| 11 | class SharedMemory; | 15 | class SharedMemory; |
| 12 | } | 16 | } |
| @@ -15,7 +19,7 @@ namespace Service::HID { | |||
| 15 | 19 | ||
| 16 | class IRS final : public ServiceFramework<IRS> { | 20 | class IRS final : public ServiceFramework<IRS> { |
| 17 | public: | 21 | public: |
| 18 | explicit IRS(Core::System& system); | 22 | explicit IRS(Core::System& system_); |
| 19 | ~IRS() override; | 23 | ~IRS() override; |
| 20 | 24 | ||
| 21 | private: | 25 | private: |
| @@ -37,14 +41,14 @@ private: | |||
| 37 | void RunIrLedProcessor(Kernel::HLERequestContext& ctx); | 41 | void RunIrLedProcessor(Kernel::HLERequestContext& ctx); |
| 38 | void StopImageProcessorAsync(Kernel::HLERequestContext& ctx); | 42 | void StopImageProcessorAsync(Kernel::HLERequestContext& ctx); |
| 39 | void ActivateIrsensorWithFunctionLevel(Kernel::HLERequestContext& ctx); | 43 | void ActivateIrsensorWithFunctionLevel(Kernel::HLERequestContext& ctx); |
| 44 | |||
| 40 | std::shared_ptr<Kernel::SharedMemory> shared_mem; | 45 | std::shared_ptr<Kernel::SharedMemory> shared_mem; |
| 41 | const u32 device_handle{0xABCD}; | 46 | const u32 device_handle{0xABCD}; |
| 42 | Core::System& system; | ||
| 43 | }; | 47 | }; |
| 44 | 48 | ||
| 45 | class IRS_SYS final : public ServiceFramework<IRS_SYS> { | 49 | class IRS_SYS final : public ServiceFramework<IRS_SYS> { |
| 46 | public: | 50 | public: |
| 47 | explicit IRS_SYS(); | 51 | explicit IRS_SYS(Core::System& system); |
| 48 | ~IRS_SYS() override; | 52 | ~IRS_SYS() override; |
| 49 | }; | 53 | }; |
| 50 | 54 | ||
diff --git a/src/core/hle/service/hid/xcd.cpp b/src/core/hle/service/hid/xcd.cpp index c8e9125f6..43a8840d0 100644 --- a/src/core/hle/service/hid/xcd.cpp +++ b/src/core/hle/service/hid/xcd.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::HID { | 7 | namespace Service::HID { |
| 8 | 8 | ||
| 9 | XCD_SYS::XCD_SYS() : ServiceFramework{"xcd:sys"} { | 9 | XCD_SYS::XCD_SYS(Core::System& system_) : ServiceFramework{system_, "xcd:sys"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "GetDataFormat"}, | 12 | {0, nullptr, "GetDataFormat"}, |
diff --git a/src/core/hle/service/hid/xcd.h b/src/core/hle/service/hid/xcd.h index fd506d303..54932c228 100644 --- a/src/core/hle/service/hid/xcd.h +++ b/src/core/hle/service/hid/xcd.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::HID { | 13 | namespace Service::HID { |
| 10 | 14 | ||
| 11 | class XCD_SYS final : public ServiceFramework<XCD_SYS> { | 15 | class XCD_SYS final : public ServiceFramework<XCD_SYS> { |
| 12 | public: | 16 | public: |
| 13 | explicit XCD_SYS(); | 17 | explicit XCD_SYS(Core::System& system_); |
| 14 | ~XCD_SYS() override; | 18 | ~XCD_SYS() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/lbl/lbl.cpp b/src/core/hle/service/lbl/lbl.cpp index 17350b403..6ad3a2877 100644 --- a/src/core/hle/service/lbl/lbl.cpp +++ b/src/core/hle/service/lbl/lbl.cpp | |||
| @@ -15,7 +15,7 @@ namespace Service::LBL { | |||
| 15 | 15 | ||
| 16 | class LBL final : public ServiceFramework<LBL> { | 16 | class LBL final : public ServiceFramework<LBL> { |
| 17 | public: | 17 | public: |
| 18 | explicit LBL() : ServiceFramework{"lbl"} { | 18 | explicit LBL(Core::System& system_) : ServiceFramework{system_, "lbl"} { |
| 19 | // clang-format off | 19 | // clang-format off |
| 20 | static const FunctionInfo functions[] = { | 20 | static const FunctionInfo functions[] = { |
| 21 | {0, nullptr, "SaveCurrentSetting"}, | 21 | {0, nullptr, "SaveCurrentSetting"}, |
| @@ -84,8 +84,8 @@ private: | |||
| 84 | bool vr_mode_enabled = false; | 84 | bool vr_mode_enabled = false; |
| 85 | }; | 85 | }; |
| 86 | 86 | ||
| 87 | void InstallInterfaces(SM::ServiceManager& sm) { | 87 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 88 | std::make_shared<LBL>()->InstallAsService(sm); | 88 | std::make_shared<LBL>(system)->InstallAsService(sm); |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | } // namespace Service::LBL | 91 | } // namespace Service::LBL |
diff --git a/src/core/hle/service/lbl/lbl.h b/src/core/hle/service/lbl/lbl.h index bf6f400f8..9c2021026 100644 --- a/src/core/hle/service/lbl/lbl.h +++ b/src/core/hle/service/lbl/lbl.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::LBL { | 15 | namespace Service::LBL { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::LBL | 19 | } // namespace Service::LBL |
diff --git a/src/core/hle/service/ldn/ldn.cpp b/src/core/hle/service/ldn/ldn.cpp index 49972cd69..ee908f399 100644 --- a/src/core/hle/service/ldn/ldn.cpp +++ b/src/core/hle/service/ldn/ldn.cpp | |||
| @@ -13,7 +13,7 @@ namespace Service::LDN { | |||
| 13 | 13 | ||
| 14 | class IMonitorService final : public ServiceFramework<IMonitorService> { | 14 | class IMonitorService final : public ServiceFramework<IMonitorService> { |
| 15 | public: | 15 | public: |
| 16 | explicit IMonitorService() : ServiceFramework{"IMonitorService"} { | 16 | explicit IMonitorService(Core::System& system_) : ServiceFramework{system_, "IMonitorService"} { |
| 17 | // clang-format off | 17 | // clang-format off |
| 18 | static const FunctionInfo functions[] = { | 18 | static const FunctionInfo functions[] = { |
| 19 | {0, nullptr, "GetStateForMonitor"}, | 19 | {0, nullptr, "GetStateForMonitor"}, |
| @@ -33,7 +33,7 @@ public: | |||
| 33 | 33 | ||
| 34 | class LDNM final : public ServiceFramework<LDNM> { | 34 | class LDNM final : public ServiceFramework<LDNM> { |
| 35 | public: | 35 | public: |
| 36 | explicit LDNM() : ServiceFramework{"ldn:m"} { | 36 | explicit LDNM(Core::System& system_) : ServiceFramework{system_, "ldn:m"} { |
| 37 | // clang-format off | 37 | // clang-format off |
| 38 | static const FunctionInfo functions[] = { | 38 | static const FunctionInfo functions[] = { |
| 39 | {0, &LDNM::CreateMonitorService, "CreateMonitorService"} | 39 | {0, &LDNM::CreateMonitorService, "CreateMonitorService"} |
| @@ -48,15 +48,15 @@ public: | |||
| 48 | 48 | ||
| 49 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 49 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 50 | rb.Push(RESULT_SUCCESS); | 50 | rb.Push(RESULT_SUCCESS); |
| 51 | rb.PushIpcInterface<IMonitorService>(); | 51 | rb.PushIpcInterface<IMonitorService>(system); |
| 52 | } | 52 | } |
| 53 | }; | 53 | }; |
| 54 | 54 | ||
| 55 | class ISystemLocalCommunicationService final | 55 | class ISystemLocalCommunicationService final |
| 56 | : public ServiceFramework<ISystemLocalCommunicationService> { | 56 | : public ServiceFramework<ISystemLocalCommunicationService> { |
| 57 | public: | 57 | public: |
| 58 | explicit ISystemLocalCommunicationService() | 58 | explicit ISystemLocalCommunicationService(Core::System& system_) |
| 59 | : ServiceFramework{"ISystemLocalCommunicationService"} { | 59 | : ServiceFramework{system_, "ISystemLocalCommunicationService"} { |
| 60 | // clang-format off | 60 | // clang-format off |
| 61 | static const FunctionInfo functions[] = { | 61 | static const FunctionInfo functions[] = { |
| 62 | {0, nullptr, "GetState"}, | 62 | {0, nullptr, "GetState"}, |
| @@ -99,7 +99,8 @@ public: | |||
| 99 | class IUserLocalCommunicationService final | 99 | class IUserLocalCommunicationService final |
| 100 | : public ServiceFramework<IUserLocalCommunicationService> { | 100 | : public ServiceFramework<IUserLocalCommunicationService> { |
| 101 | public: | 101 | public: |
| 102 | explicit IUserLocalCommunicationService() : ServiceFramework{"IUserLocalCommunicationService"} { | 102 | explicit IUserLocalCommunicationService(Core::System& system_) |
| 103 | : ServiceFramework{system_, "IUserLocalCommunicationService"} { | ||
| 103 | // clang-format off | 104 | // clang-format off |
| 104 | static const FunctionInfo functions[] = { | 105 | static const FunctionInfo functions[] = { |
| 105 | {0, nullptr, "GetState"}, | 106 | {0, nullptr, "GetState"}, |
| @@ -148,7 +149,7 @@ public: | |||
| 148 | 149 | ||
| 149 | class LDNS final : public ServiceFramework<LDNS> { | 150 | class LDNS final : public ServiceFramework<LDNS> { |
| 150 | public: | 151 | public: |
| 151 | explicit LDNS() : ServiceFramework{"ldn:s"} { | 152 | explicit LDNS(Core::System& system_) : ServiceFramework{system_, "ldn:s"} { |
| 152 | // clang-format off | 153 | // clang-format off |
| 153 | static const FunctionInfo functions[] = { | 154 | static const FunctionInfo functions[] = { |
| 154 | {0, &LDNS::CreateSystemLocalCommunicationService, "CreateSystemLocalCommunicationService"}, | 155 | {0, &LDNS::CreateSystemLocalCommunicationService, "CreateSystemLocalCommunicationService"}, |
| @@ -163,13 +164,13 @@ public: | |||
| 163 | 164 | ||
| 164 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 165 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 165 | rb.Push(RESULT_SUCCESS); | 166 | rb.Push(RESULT_SUCCESS); |
| 166 | rb.PushIpcInterface<ISystemLocalCommunicationService>(); | 167 | rb.PushIpcInterface<ISystemLocalCommunicationService>(system); |
| 167 | } | 168 | } |
| 168 | }; | 169 | }; |
| 169 | 170 | ||
| 170 | class LDNU final : public ServiceFramework<LDNU> { | 171 | class LDNU final : public ServiceFramework<LDNU> { |
| 171 | public: | 172 | public: |
| 172 | explicit LDNU() : ServiceFramework{"ldn:u"} { | 173 | explicit LDNU(Core::System& system_) : ServiceFramework{system_, "ldn:u"} { |
| 173 | // clang-format off | 174 | // clang-format off |
| 174 | static const FunctionInfo functions[] = { | 175 | static const FunctionInfo functions[] = { |
| 175 | {0, &LDNU::CreateUserLocalCommunicationService, "CreateUserLocalCommunicationService"}, | 176 | {0, &LDNU::CreateUserLocalCommunicationService, "CreateUserLocalCommunicationService"}, |
| @@ -184,14 +185,14 @@ public: | |||
| 184 | 185 | ||
| 185 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 186 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 186 | rb.Push(RESULT_SUCCESS); | 187 | rb.Push(RESULT_SUCCESS); |
| 187 | rb.PushIpcInterface<IUserLocalCommunicationService>(); | 188 | rb.PushIpcInterface<IUserLocalCommunicationService>(system); |
| 188 | } | 189 | } |
| 189 | }; | 190 | }; |
| 190 | 191 | ||
| 191 | void InstallInterfaces(SM::ServiceManager& sm) { | 192 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 192 | std::make_shared<LDNM>()->InstallAsService(sm); | 193 | std::make_shared<LDNM>(system)->InstallAsService(sm); |
| 193 | std::make_shared<LDNS>()->InstallAsService(sm); | 194 | std::make_shared<LDNS>(system)->InstallAsService(sm); |
| 194 | std::make_shared<LDNU>()->InstallAsService(sm); | 195 | std::make_shared<LDNU>(system)->InstallAsService(sm); |
| 195 | } | 196 | } |
| 196 | 197 | ||
| 197 | } // namespace Service::LDN | 198 | } // namespace Service::LDN |
diff --git a/src/core/hle/service/ldn/ldn.h b/src/core/hle/service/ldn/ldn.h index 6b2a3c2b2..3ccd9738b 100644 --- a/src/core/hle/service/ldn/ldn.h +++ b/src/core/hle/service/ldn/ldn.h | |||
| @@ -4,6 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| @@ -11,6 +15,6 @@ class ServiceManager; | |||
| 11 | namespace Service::LDN { | 15 | namespace Service::LDN { |
| 12 | 16 | ||
| 13 | /// Registers all LDN services with the specified service manager. | 17 | /// Registers all LDN services with the specified service manager. |
| 14 | void InstallInterfaces(SM::ServiceManager& sm); | 18 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 15 | 19 | ||
| 16 | } // namespace Service::LDN | 20 | } // namespace Service::LDN |
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp index 65c209725..fff68326b 100644 --- a/src/core/hle/service/ldr/ldr.cpp +++ b/src/core/hle/service/ldr/ldr.cpp | |||
| @@ -115,7 +115,7 @@ static_assert(sizeof(NROInfo) == 0x60, "NROInfo has invalid size."); | |||
| 115 | 115 | ||
| 116 | class DebugMonitor final : public ServiceFramework<DebugMonitor> { | 116 | class DebugMonitor final : public ServiceFramework<DebugMonitor> { |
| 117 | public: | 117 | public: |
| 118 | explicit DebugMonitor() : ServiceFramework{"ldr:dmnt"} { | 118 | explicit DebugMonitor(Core::System& system_) : ServiceFramework{system_, "ldr:dmnt"} { |
| 119 | // clang-format off | 119 | // clang-format off |
| 120 | static const FunctionInfo functions[] = { | 120 | static const FunctionInfo functions[] = { |
| 121 | {0, nullptr, "AddProcessToDebugLaunchQueue"}, | 121 | {0, nullptr, "AddProcessToDebugLaunchQueue"}, |
| @@ -130,7 +130,7 @@ public: | |||
| 130 | 130 | ||
| 131 | class ProcessManager final : public ServiceFramework<ProcessManager> { | 131 | class ProcessManager final : public ServiceFramework<ProcessManager> { |
| 132 | public: | 132 | public: |
| 133 | explicit ProcessManager() : ServiceFramework{"ldr:pm"} { | 133 | explicit ProcessManager(Core::System& system_) : ServiceFramework{system_, "ldr:pm"} { |
| 134 | // clang-format off | 134 | // clang-format off |
| 135 | static const FunctionInfo functions[] = { | 135 | static const FunctionInfo functions[] = { |
| 136 | {0, nullptr, "CreateProcess"}, | 136 | {0, nullptr, "CreateProcess"}, |
| @@ -147,7 +147,7 @@ public: | |||
| 147 | 147 | ||
| 148 | class Shell final : public ServiceFramework<Shell> { | 148 | class Shell final : public ServiceFramework<Shell> { |
| 149 | public: | 149 | public: |
| 150 | explicit Shell() : ServiceFramework{"ldr:shel"} { | 150 | explicit Shell(Core::System& system_) : ServiceFramework{system_, "ldr:shel"} { |
| 151 | // clang-format off | 151 | // clang-format off |
| 152 | static const FunctionInfo functions[] = { | 152 | static const FunctionInfo functions[] = { |
| 153 | {0, nullptr, "AddProcessToLaunchQueue"}, | 153 | {0, nullptr, "AddProcessToLaunchQueue"}, |
| @@ -161,7 +161,7 @@ public: | |||
| 161 | 161 | ||
| 162 | class RelocatableObject final : public ServiceFramework<RelocatableObject> { | 162 | class RelocatableObject final : public ServiceFramework<RelocatableObject> { |
| 163 | public: | 163 | public: |
| 164 | explicit RelocatableObject(Core::System& system) : ServiceFramework{"ldr:ro"}, system(system) { | 164 | explicit RelocatableObject(Core::System& system_) : ServiceFramework{system_, "ldr:ro"} { |
| 165 | // clang-format off | 165 | // clang-format off |
| 166 | static const FunctionInfo functions[] = { | 166 | static const FunctionInfo functions[] = { |
| 167 | {0, &RelocatableObject::LoadNro, "LoadNro"}, | 167 | {0, &RelocatableObject::LoadNro, "LoadNro"}, |
| @@ -639,13 +639,12 @@ private: | |||
| 639 | Common::Is4KBAligned(header.segment_headers[RO_INDEX].memory_size) && | 639 | Common::Is4KBAligned(header.segment_headers[RO_INDEX].memory_size) && |
| 640 | Common::Is4KBAligned(header.segment_headers[DATA_INDEX].memory_size); | 640 | Common::Is4KBAligned(header.segment_headers[DATA_INDEX].memory_size); |
| 641 | } | 641 | } |
| 642 | Core::System& system; | ||
| 643 | }; | 642 | }; |
| 644 | 643 | ||
| 645 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { | 644 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 646 | std::make_shared<DebugMonitor>()->InstallAsService(sm); | 645 | std::make_shared<DebugMonitor>(system)->InstallAsService(sm); |
| 647 | std::make_shared<ProcessManager>()->InstallAsService(sm); | 646 | std::make_shared<ProcessManager>(system)->InstallAsService(sm); |
| 648 | std::make_shared<Shell>()->InstallAsService(sm); | 647 | std::make_shared<Shell>(system)->InstallAsService(sm); |
| 649 | std::make_shared<RelocatableObject>(system)->InstallAsService(sm); | 648 | std::make_shared<RelocatableObject>(system)->InstallAsService(sm); |
| 650 | } | 649 | } |
| 651 | 650 | ||
diff --git a/src/core/hle/service/ldr/ldr.h b/src/core/hle/service/ldr/ldr.h index 7ac8c0b65..104fc15c5 100644 --- a/src/core/hle/service/ldr/ldr.h +++ b/src/core/hle/service/ldr/ldr.h | |||
| @@ -4,6 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp index 49a42a9c9..f884b2735 100644 --- a/src/core/hle/service/lm/lm.cpp +++ b/src/core/hle/service/lm/lm.cpp | |||
| @@ -18,8 +18,9 @@ namespace Service::LM { | |||
| 18 | 18 | ||
| 19 | class ILogger final : public ServiceFramework<ILogger> { | 19 | class ILogger final : public ServiceFramework<ILogger> { |
| 20 | public: | 20 | public: |
| 21 | explicit ILogger(Manager& manager_, Core::Memory::Memory& memory_) | 21 | explicit ILogger(Core::System& system_) |
| 22 | : ServiceFramework("ILogger"), manager{manager_}, memory{memory_} { | 22 | : ServiceFramework{system_, "ILogger"}, manager{system_.GetLogManager()}, |
| 23 | memory{system_.Memory()} { | ||
| 23 | static const FunctionInfo functions[] = { | 24 | static const FunctionInfo functions[] = { |
| 24 | {0, &ILogger::Log, "Log"}, | 25 | {0, &ILogger::Log, "Log"}, |
| 25 | {1, &ILogger::SetDestination, "SetDestination"}, | 26 | {1, &ILogger::SetDestination, "SetDestination"}, |
| @@ -81,8 +82,7 @@ private: | |||
| 81 | 82 | ||
| 82 | class LM final : public ServiceFramework<LM> { | 83 | class LM final : public ServiceFramework<LM> { |
| 83 | public: | 84 | public: |
| 84 | explicit LM(Manager& manager_, Core::Memory::Memory& memory_) | 85 | explicit LM(Core::System& system_) : ServiceFramework{system_, "lm"} { |
| 85 | : ServiceFramework{"lm"}, manager{manager_}, memory{memory_} { | ||
| 86 | // clang-format off | 86 | // clang-format off |
| 87 | static const FunctionInfo functions[] = { | 87 | static const FunctionInfo functions[] = { |
| 88 | {0, &LM::OpenLogger, "OpenLogger"}, | 88 | {0, &LM::OpenLogger, "OpenLogger"}, |
| @@ -98,16 +98,12 @@ private: | |||
| 98 | 98 | ||
| 99 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 99 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 100 | rb.Push(RESULT_SUCCESS); | 100 | rb.Push(RESULT_SUCCESS); |
| 101 | rb.PushIpcInterface<ILogger>(manager, memory); | 101 | rb.PushIpcInterface<ILogger>(system); |
| 102 | } | 102 | } |
| 103 | |||
| 104 | Manager& manager; | ||
| 105 | Core::Memory::Memory& memory; | ||
| 106 | }; | 103 | }; |
| 107 | 104 | ||
| 108 | void InstallInterfaces(Core::System& system) { | 105 | void InstallInterfaces(Core::System& system) { |
| 109 | std::make_shared<LM>(system.GetLogManager(), system.Memory()) | 106 | std::make_shared<LM>(system)->InstallAsService(system.ServiceManager()); |
| 110 | ->InstallAsService(system.ServiceManager()); | ||
| 111 | } | 107 | } |
| 112 | 108 | ||
| 113 | } // namespace Service::LM | 109 | } // namespace Service::LM |
diff --git a/src/core/hle/service/mig/mig.cpp b/src/core/hle/service/mig/mig.cpp index 113a4665c..1599d941b 100644 --- a/src/core/hle/service/mig/mig.cpp +++ b/src/core/hle/service/mig/mig.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::Migration { | |||
| 12 | 12 | ||
| 13 | class MIG_USR final : public ServiceFramework<MIG_USR> { | 13 | class MIG_USR final : public ServiceFramework<MIG_USR> { |
| 14 | public: | 14 | public: |
| 15 | explicit MIG_USR() : ServiceFramework{"mig:usr"} { | 15 | explicit MIG_USR(Core::System& system_) : ServiceFramework{system_, "mig:usr"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {10, nullptr, "TryGetLastMigrationInfo"}, | 18 | {10, nullptr, "TryGetLastMigrationInfo"}, |
| @@ -33,8 +33,8 @@ public: | |||
| 33 | } | 33 | } |
| 34 | }; | 34 | }; |
| 35 | 35 | ||
| 36 | void InstallInterfaces(SM::ServiceManager& sm) { | 36 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 37 | std::make_shared<MIG_USR>()->InstallAsService(sm); | 37 | std::make_shared<MIG_USR>(system)->InstallAsService(sm); |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | } // namespace Service::Migration | 40 | } // namespace Service::Migration |
diff --git a/src/core/hle/service/mig/mig.h b/src/core/hle/service/mig/mig.h index 288c1c1b3..2b24cdf2c 100644 --- a/src/core/hle/service/mig/mig.h +++ b/src/core/hle/service/mig/mig.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::Migration { | 15 | namespace Service::Migration { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::Migration | 19 | } // namespace Service::Migration |
diff --git a/src/core/hle/service/mii/mii.cpp b/src/core/hle/service/mii/mii.cpp index d7080b715..26be9e45b 100644 --- a/src/core/hle/service/mii/mii.cpp +++ b/src/core/hle/service/mii/mii.cpp | |||
| @@ -18,7 +18,8 @@ constexpr ResultCode ERROR_INVALID_ARGUMENT{ErrorModule::Mii, 1}; | |||
| 18 | 18 | ||
| 19 | class IDatabaseService final : public ServiceFramework<IDatabaseService> { | 19 | class IDatabaseService final : public ServiceFramework<IDatabaseService> { |
| 20 | public: | 20 | public: |
| 21 | explicit IDatabaseService() : ServiceFramework{"IDatabaseService"} { | 21 | explicit IDatabaseService(Core::System& system_) |
| 22 | : ServiceFramework{system_, "IDatabaseService"} { | ||
| 22 | // clang-format off | 23 | // clang-format off |
| 23 | static const FunctionInfo functions[] = { | 24 | static const FunctionInfo functions[] = { |
| 24 | {0, &IDatabaseService::IsUpdated, "IsUpdated"}, | 25 | {0, &IDatabaseService::IsUpdated, "IsUpdated"}, |
| @@ -252,7 +253,8 @@ private: | |||
| 252 | 253 | ||
| 253 | class MiiDBModule final : public ServiceFramework<MiiDBModule> { | 254 | class MiiDBModule final : public ServiceFramework<MiiDBModule> { |
| 254 | public: | 255 | public: |
| 255 | explicit MiiDBModule(const char* name) : ServiceFramework{name} { | 256 | explicit MiiDBModule(Core::System& system_, const char* name) |
| 257 | : ServiceFramework{system_, name} { | ||
| 256 | // clang-format off | 258 | // clang-format off |
| 257 | static const FunctionInfo functions[] = { | 259 | static const FunctionInfo functions[] = { |
| 258 | {0, &MiiDBModule::GetDatabaseService, "GetDatabaseService"}, | 260 | {0, &MiiDBModule::GetDatabaseService, "GetDatabaseService"}, |
| @@ -266,7 +268,7 @@ private: | |||
| 266 | void GetDatabaseService(Kernel::HLERequestContext& ctx) { | 268 | void GetDatabaseService(Kernel::HLERequestContext& ctx) { |
| 267 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 269 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 268 | rb.Push(RESULT_SUCCESS); | 270 | rb.Push(RESULT_SUCCESS); |
| 269 | rb.PushIpcInterface<IDatabaseService>(); | 271 | rb.PushIpcInterface<IDatabaseService>(system); |
| 270 | 272 | ||
| 271 | LOG_DEBUG(Service_Mii, "called"); | 273 | LOG_DEBUG(Service_Mii, "called"); |
| 272 | } | 274 | } |
| @@ -274,7 +276,7 @@ private: | |||
| 274 | 276 | ||
| 275 | class MiiImg final : public ServiceFramework<MiiImg> { | 277 | class MiiImg final : public ServiceFramework<MiiImg> { |
| 276 | public: | 278 | public: |
| 277 | explicit MiiImg() : ServiceFramework{"miiimg"} { | 279 | explicit MiiImg(Core::System& system_) : ServiceFramework{system_, "miiimg"} { |
| 278 | // clang-format off | 280 | // clang-format off |
| 279 | static const FunctionInfo functions[] = { | 281 | static const FunctionInfo functions[] = { |
| 280 | {0, nullptr, "Initialize"}, | 282 | {0, nullptr, "Initialize"}, |
| @@ -298,11 +300,11 @@ public: | |||
| 298 | } | 300 | } |
| 299 | }; | 301 | }; |
| 300 | 302 | ||
| 301 | void InstallInterfaces(SM::ServiceManager& sm) { | 303 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 302 | std::make_shared<MiiDBModule>("mii:e")->InstallAsService(sm); | 304 | std::make_shared<MiiDBModule>(system, "mii:e")->InstallAsService(sm); |
| 303 | std::make_shared<MiiDBModule>("mii:u")->InstallAsService(sm); | 305 | std::make_shared<MiiDBModule>(system, "mii:u")->InstallAsService(sm); |
| 304 | 306 | ||
| 305 | std::make_shared<MiiImg>()->InstallAsService(sm); | 307 | std::make_shared<MiiImg>(system)->InstallAsService(sm); |
| 306 | } | 308 | } |
| 307 | 309 | ||
| 308 | } // namespace Service::Mii | 310 | } // namespace Service::Mii |
diff --git a/src/core/hle/service/mii/mii.h b/src/core/hle/service/mii/mii.h index 7ce9be50e..9d3238e72 100644 --- a/src/core/hle/service/mii/mii.h +++ b/src/core/hle/service/mii/mii.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::Mii { | 15 | namespace Service::Mii { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::Mii | 19 | } // namespace Service::Mii |
diff --git a/src/core/hle/service/mm/mm_u.cpp b/src/core/hle/service/mm/mm_u.cpp index 25c24e537..b0cb07d24 100644 --- a/src/core/hle/service/mm/mm_u.cpp +++ b/src/core/hle/service/mm/mm_u.cpp | |||
| @@ -6,12 +6,13 @@ | |||
| 6 | #include "core/hle/ipc_helpers.h" | 6 | #include "core/hle/ipc_helpers.h" |
| 7 | #include "core/hle/kernel/client_session.h" | 7 | #include "core/hle/kernel/client_session.h" |
| 8 | #include "core/hle/service/mm/mm_u.h" | 8 | #include "core/hle/service/mm/mm_u.h" |
| 9 | #include "core/hle/service/sm/sm.h" | ||
| 9 | 10 | ||
| 10 | namespace Service::MM { | 11 | namespace Service::MM { |
| 11 | 12 | ||
| 12 | class MM_U final : public ServiceFramework<MM_U> { | 13 | class MM_U final : public ServiceFramework<MM_U> { |
| 13 | public: | 14 | public: |
| 14 | explicit MM_U() : ServiceFramework{"mm:u"} { | 15 | explicit MM_U(Core::System& system_) : ServiceFramework{system_, "mm:u"} { |
| 15 | // clang-format off | 16 | // clang-format off |
| 16 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 17 | {0, &MM_U::InitializeOld, "InitializeOld"}, | 18 | {0, &MM_U::InitializeOld, "InitializeOld"}, |
| @@ -104,8 +105,8 @@ private: | |||
| 104 | u32 id{1}; | 105 | u32 id{1}; |
| 105 | }; | 106 | }; |
| 106 | 107 | ||
| 107 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 108 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 108 | std::make_shared<MM_U>()->InstallAsService(service_manager); | 109 | std::make_shared<MM_U>(system)->InstallAsService(service_manager); |
| 109 | } | 110 | } |
| 110 | 111 | ||
| 111 | } // namespace Service::MM | 112 | } // namespace Service::MM |
diff --git a/src/core/hle/service/mm/mm_u.h b/src/core/hle/service/mm/mm_u.h index 5439fa653..49b6a3355 100644 --- a/src/core/hle/service/mm/mm_u.h +++ b/src/core/hle/service/mm/mm_u.h | |||
| @@ -4,11 +4,17 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | namespace Core { |
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 11 | namespace Service::SM { | ||
| 12 | class ServiceManager; | ||
| 13 | } | ||
| 8 | 14 | ||
| 9 | namespace Service::MM { | 15 | namespace Service::MM { |
| 10 | 16 | ||
| 11 | /// Registers all MM services with the specified service manager. | 17 | /// Registers all MM services with the specified service manager. |
| 12 | void InstallInterfaces(SM::ServiceManager& service_manager); | 18 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
| 13 | 19 | ||
| 14 | } // namespace Service::MM | 20 | } // namespace Service::MM |
diff --git a/src/core/hle/service/ncm/ncm.cpp b/src/core/hle/service/ncm/ncm.cpp index e38dea1f4..b8d627ca8 100644 --- a/src/core/hle/service/ncm/ncm.cpp +++ b/src/core/hle/service/ncm/ncm.cpp | |||
| @@ -14,8 +14,8 @@ namespace Service::NCM { | |||
| 14 | 14 | ||
| 15 | class ILocationResolver final : public ServiceFramework<ILocationResolver> { | 15 | class ILocationResolver final : public ServiceFramework<ILocationResolver> { |
| 16 | public: | 16 | public: |
| 17 | explicit ILocationResolver(FileSys::StorageId id) | 17 | explicit ILocationResolver(Core::System& system_, FileSys::StorageId id) |
| 18 | : ServiceFramework{"ILocationResolver"}, storage(id) { | 18 | : ServiceFramework{system_, "ILocationResolver"}, storage{id} { |
| 19 | // clang-format off | 19 | // clang-format off |
| 20 | static const FunctionInfo functions[] = { | 20 | static const FunctionInfo functions[] = { |
| 21 | {0, nullptr, "ResolveProgramPath"}, | 21 | {0, nullptr, "ResolveProgramPath"}, |
| @@ -50,7 +50,8 @@ private: | |||
| 50 | 50 | ||
| 51 | class IRegisteredLocationResolver final : public ServiceFramework<IRegisteredLocationResolver> { | 51 | class IRegisteredLocationResolver final : public ServiceFramework<IRegisteredLocationResolver> { |
| 52 | public: | 52 | public: |
| 53 | explicit IRegisteredLocationResolver() : ServiceFramework{"IRegisteredLocationResolver"} { | 53 | explicit IRegisteredLocationResolver(Core::System& system_) |
| 54 | : ServiceFramework{system_, "IRegisteredLocationResolver"} { | ||
| 54 | // clang-format off | 55 | // clang-format off |
| 55 | static const FunctionInfo functions[] = { | 56 | static const FunctionInfo functions[] = { |
| 56 | {0, nullptr, "ResolveProgramPath"}, | 57 | {0, nullptr, "ResolveProgramPath"}, |
| @@ -72,7 +73,8 @@ public: | |||
| 72 | 73 | ||
| 73 | class IAddOnContentLocationResolver final : public ServiceFramework<IAddOnContentLocationResolver> { | 74 | class IAddOnContentLocationResolver final : public ServiceFramework<IAddOnContentLocationResolver> { |
| 74 | public: | 75 | public: |
| 75 | explicit IAddOnContentLocationResolver() : ServiceFramework{"IAddOnContentLocationResolver"} { | 76 | explicit IAddOnContentLocationResolver(Core::System& system_) |
| 77 | : ServiceFramework{system_, "IAddOnContentLocationResolver"} { | ||
| 76 | // clang-format off | 78 | // clang-format off |
| 77 | static const FunctionInfo functions[] = { | 79 | static const FunctionInfo functions[] = { |
| 78 | {0, nullptr, "ResolveAddOnContentPath"}, | 80 | {0, nullptr, "ResolveAddOnContentPath"}, |
| @@ -89,7 +91,7 @@ public: | |||
| 89 | 91 | ||
| 90 | class LR final : public ServiceFramework<LR> { | 92 | class LR final : public ServiceFramework<LR> { |
| 91 | public: | 93 | public: |
| 92 | explicit LR() : ServiceFramework{"lr"} { | 94 | explicit LR(Core::System& system_) : ServiceFramework{system_, "lr"} { |
| 93 | // clang-format off | 95 | // clang-format off |
| 94 | static const FunctionInfo functions[] = { | 96 | static const FunctionInfo functions[] = { |
| 95 | {0, nullptr, "OpenLocationResolver"}, | 97 | {0, nullptr, "OpenLocationResolver"}, |
| @@ -105,7 +107,7 @@ public: | |||
| 105 | 107 | ||
| 106 | class NCM final : public ServiceFramework<NCM> { | 108 | class NCM final : public ServiceFramework<NCM> { |
| 107 | public: | 109 | public: |
| 108 | explicit NCM() : ServiceFramework{"ncm"} { | 110 | explicit NCM(Core::System& system_) : ServiceFramework{system_, "ncm"} { |
| 109 | // clang-format off | 111 | // clang-format off |
| 110 | static const FunctionInfo functions[] = { | 112 | static const FunctionInfo functions[] = { |
| 111 | {0, nullptr, "CreateContentStorage"}, | 113 | {0, nullptr, "CreateContentStorage"}, |
| @@ -130,9 +132,9 @@ public: | |||
| 130 | } | 132 | } |
| 131 | }; | 133 | }; |
| 132 | 134 | ||
| 133 | void InstallInterfaces(SM::ServiceManager& sm) { | 135 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 134 | std::make_shared<LR>()->InstallAsService(sm); | 136 | std::make_shared<LR>(system)->InstallAsService(sm); |
| 135 | std::make_shared<NCM>()->InstallAsService(sm); | 137 | std::make_shared<NCM>(system)->InstallAsService(sm); |
| 136 | } | 138 | } |
| 137 | 139 | ||
| 138 | } // namespace Service::NCM | 140 | } // namespace Service::NCM |
diff --git a/src/core/hle/service/ncm/ncm.h b/src/core/hle/service/ncm/ncm.h index 7bc8518a6..ee01eddc0 100644 --- a/src/core/hle/service/ncm/ncm.h +++ b/src/core/hle/service/ncm/ncm.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::NCM { | 15 | namespace Service::NCM { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::NCM | 19 | } // namespace Service::NCM |
diff --git a/src/core/hle/service/nfc/nfc.cpp b/src/core/hle/service/nfc/nfc.cpp index 780ea30fe..6ab35de47 100644 --- a/src/core/hle/service/nfc/nfc.cpp +++ b/src/core/hle/service/nfc/nfc.cpp | |||
| @@ -16,7 +16,7 @@ namespace Service::NFC { | |||
| 16 | 16 | ||
| 17 | class IAm final : public ServiceFramework<IAm> { | 17 | class IAm final : public ServiceFramework<IAm> { |
| 18 | public: | 18 | public: |
| 19 | explicit IAm() : ServiceFramework{"NFC::IAm"} { | 19 | explicit IAm(Core::System& system_) : ServiceFramework{system_, "NFC::IAm"} { |
| 20 | // clang-format off | 20 | // clang-format off |
| 21 | static const FunctionInfo functions[] = { | 21 | static const FunctionInfo functions[] = { |
| 22 | {0, nullptr, "Initialize"}, | 22 | {0, nullptr, "Initialize"}, |
| @@ -31,7 +31,7 @@ public: | |||
| 31 | 31 | ||
| 32 | class NFC_AM final : public ServiceFramework<NFC_AM> { | 32 | class NFC_AM final : public ServiceFramework<NFC_AM> { |
| 33 | public: | 33 | public: |
| 34 | explicit NFC_AM() : ServiceFramework{"nfc:am"} { | 34 | explicit NFC_AM(Core::System& system_) : ServiceFramework{system_, "nfc:am"} { |
| 35 | // clang-format off | 35 | // clang-format off |
| 36 | static const FunctionInfo functions[] = { | 36 | static const FunctionInfo functions[] = { |
| 37 | {0, &NFC_AM::CreateAmInterface, "CreateAmInterface"}, | 37 | {0, &NFC_AM::CreateAmInterface, "CreateAmInterface"}, |
| @@ -47,13 +47,13 @@ private: | |||
| 47 | 47 | ||
| 48 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 48 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 49 | rb.Push(RESULT_SUCCESS); | 49 | rb.Push(RESULT_SUCCESS); |
| 50 | rb.PushIpcInterface<IAm>(); | 50 | rb.PushIpcInterface<IAm>(system); |
| 51 | } | 51 | } |
| 52 | }; | 52 | }; |
| 53 | 53 | ||
| 54 | class MFIUser final : public ServiceFramework<MFIUser> { | 54 | class MFIUser final : public ServiceFramework<MFIUser> { |
| 55 | public: | 55 | public: |
| 56 | explicit MFIUser() : ServiceFramework{"NFC::MFIUser"} { | 56 | explicit MFIUser(Core::System& system_) : ServiceFramework{system_, "NFC::MFIUser"} { |
| 57 | // clang-format off | 57 | // clang-format off |
| 58 | static const FunctionInfo functions[] = { | 58 | static const FunctionInfo functions[] = { |
| 59 | {0, nullptr, "Initialize"}, | 59 | {0, nullptr, "Initialize"}, |
| @@ -79,7 +79,7 @@ public: | |||
| 79 | 79 | ||
| 80 | class NFC_MF_U final : public ServiceFramework<NFC_MF_U> { | 80 | class NFC_MF_U final : public ServiceFramework<NFC_MF_U> { |
| 81 | public: | 81 | public: |
| 82 | explicit NFC_MF_U() : ServiceFramework{"nfc:mf:u"} { | 82 | explicit NFC_MF_U(Core::System& system_) : ServiceFramework{system_, "nfc:mf:u"} { |
| 83 | // clang-format off | 83 | // clang-format off |
| 84 | static const FunctionInfo functions[] = { | 84 | static const FunctionInfo functions[] = { |
| 85 | {0, &NFC_MF_U::CreateUserInterface, "CreateUserInterface"}, | 85 | {0, &NFC_MF_U::CreateUserInterface, "CreateUserInterface"}, |
| @@ -95,13 +95,13 @@ private: | |||
| 95 | 95 | ||
| 96 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 96 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 97 | rb.Push(RESULT_SUCCESS); | 97 | rb.Push(RESULT_SUCCESS); |
| 98 | rb.PushIpcInterface<MFIUser>(); | 98 | rb.PushIpcInterface<MFIUser>(system); |
| 99 | } | 99 | } |
| 100 | }; | 100 | }; |
| 101 | 101 | ||
| 102 | class IUser final : public ServiceFramework<IUser> { | 102 | class IUser final : public ServiceFramework<IUser> { |
| 103 | public: | 103 | public: |
| 104 | explicit IUser() : ServiceFramework{"NFC::IUser"} { | 104 | explicit IUser(Core::System& system_) : ServiceFramework{system_, "NFC::IUser"} { |
| 105 | // clang-format off | 105 | // clang-format off |
| 106 | static const FunctionInfo functions[] = { | 106 | static const FunctionInfo functions[] = { |
| 107 | {0, &IUser::InitializeOld, "InitializeOld"}, | 107 | {0, &IUser::InitializeOld, "InitializeOld"}, |
| @@ -171,7 +171,7 @@ private: | |||
| 171 | 171 | ||
| 172 | class NFC_U final : public ServiceFramework<NFC_U> { | 172 | class NFC_U final : public ServiceFramework<NFC_U> { |
| 173 | public: | 173 | public: |
| 174 | explicit NFC_U() : ServiceFramework{"nfc:user"} { | 174 | explicit NFC_U(Core::System& system_) : ServiceFramework{system_, "nfc:user"} { |
| 175 | // clang-format off | 175 | // clang-format off |
| 176 | static const FunctionInfo functions[] = { | 176 | static const FunctionInfo functions[] = { |
| 177 | {0, &NFC_U::CreateUserInterface, "CreateUserInterface"}, | 177 | {0, &NFC_U::CreateUserInterface, "CreateUserInterface"}, |
| @@ -187,13 +187,13 @@ private: | |||
| 187 | 187 | ||
| 188 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 188 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 189 | rb.Push(RESULT_SUCCESS); | 189 | rb.Push(RESULT_SUCCESS); |
| 190 | rb.PushIpcInterface<IUser>(); | 190 | rb.PushIpcInterface<IUser>(system); |
| 191 | } | 191 | } |
| 192 | }; | 192 | }; |
| 193 | 193 | ||
| 194 | class ISystem final : public ServiceFramework<ISystem> { | 194 | class ISystem final : public ServiceFramework<ISystem> { |
| 195 | public: | 195 | public: |
| 196 | explicit ISystem() : ServiceFramework{"ISystem"} { | 196 | explicit ISystem(Core::System& system_) : ServiceFramework{system_, "ISystem"} { |
| 197 | // clang-format off | 197 | // clang-format off |
| 198 | static const FunctionInfo functions[] = { | 198 | static const FunctionInfo functions[] = { |
| 199 | {0, nullptr, "Initialize"}, | 199 | {0, nullptr, "Initialize"}, |
| @@ -230,7 +230,7 @@ public: | |||
| 230 | 230 | ||
| 231 | class NFC_SYS final : public ServiceFramework<NFC_SYS> { | 231 | class NFC_SYS final : public ServiceFramework<NFC_SYS> { |
| 232 | public: | 232 | public: |
| 233 | explicit NFC_SYS() : ServiceFramework{"nfc:sys"} { | 233 | explicit NFC_SYS(Core::System& system_) : ServiceFramework{system_, "nfc:sys"} { |
| 234 | // clang-format off | 234 | // clang-format off |
| 235 | static const FunctionInfo functions[] = { | 235 | static const FunctionInfo functions[] = { |
| 236 | {0, &NFC_SYS::CreateSystemInterface, "CreateSystemInterface"}, | 236 | {0, &NFC_SYS::CreateSystemInterface, "CreateSystemInterface"}, |
| @@ -246,15 +246,15 @@ private: | |||
| 246 | 246 | ||
| 247 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 247 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 248 | rb.Push(RESULT_SUCCESS); | 248 | rb.Push(RESULT_SUCCESS); |
| 249 | rb.PushIpcInterface<ISystem>(); | 249 | rb.PushIpcInterface<ISystem>(system); |
| 250 | } | 250 | } |
| 251 | }; | 251 | }; |
| 252 | 252 | ||
| 253 | void InstallInterfaces(SM::ServiceManager& sm) { | 253 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 254 | std::make_shared<NFC_AM>()->InstallAsService(sm); | 254 | std::make_shared<NFC_AM>(system)->InstallAsService(sm); |
| 255 | std::make_shared<NFC_MF_U>()->InstallAsService(sm); | 255 | std::make_shared<NFC_MF_U>(system)->InstallAsService(sm); |
| 256 | std::make_shared<NFC_U>()->InstallAsService(sm); | 256 | std::make_shared<NFC_U>(system)->InstallAsService(sm); |
| 257 | std::make_shared<NFC_SYS>()->InstallAsService(sm); | 257 | std::make_shared<NFC_SYS>(system)->InstallAsService(sm); |
| 258 | } | 258 | } |
| 259 | 259 | ||
| 260 | } // namespace Service::NFC | 260 | } // namespace Service::NFC |
diff --git a/src/core/hle/service/nfc/nfc.h b/src/core/hle/service/nfc/nfc.h index 4d2d815f9..5a94b076d 100644 --- a/src/core/hle/service/nfc/nfc.h +++ b/src/core/hle/service/nfc/nfc.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::NFC { | 15 | namespace Service::NFC { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::NFC | 19 | } // namespace Service::NFC |
diff --git a/src/core/hle/service/nfp/nfp.cpp b/src/core/hle/service/nfp/nfp.cpp index a0469ffbd..5557da72e 100644 --- a/src/core/hle/service/nfp/nfp.cpp +++ b/src/core/hle/service/nfp/nfp.cpp | |||
| @@ -21,8 +21,9 @@ namespace ErrCodes { | |||
| 21 | constexpr ResultCode ERR_NO_APPLICATION_AREA(ErrorModule::NFP, 152); | 21 | constexpr ResultCode ERR_NO_APPLICATION_AREA(ErrorModule::NFP, 152); |
| 22 | } // namespace ErrCodes | 22 | } // namespace ErrCodes |
| 23 | 23 | ||
| 24 | Module::Interface::Interface(std::shared_ptr<Module> module, Core::System& system, const char* name) | 24 | Module::Interface::Interface(std::shared_ptr<Module> module_, Core::System& system_, |
| 25 | : ServiceFramework(name), module(std::move(module)), system(system) { | 25 | const char* name) |
| 26 | : ServiceFramework{system_, name}, module{std::move(module_)} { | ||
| 26 | auto& kernel = system.Kernel(); | 27 | auto& kernel = system.Kernel(); |
| 27 | nfc_tag_load = Kernel::WritableEvent::CreateEventPair(kernel, "IUser:NFCTagDetected"); | 28 | nfc_tag_load = Kernel::WritableEvent::CreateEventPair(kernel, "IUser:NFCTagDetected"); |
| 28 | } | 29 | } |
| @@ -31,8 +32,8 @@ Module::Interface::~Interface() = default; | |||
| 31 | 32 | ||
| 32 | class IUser final : public ServiceFramework<IUser> { | 33 | class IUser final : public ServiceFramework<IUser> { |
| 33 | public: | 34 | public: |
| 34 | IUser(Module::Interface& nfp_interface, Core::System& system) | 35 | explicit IUser(Module::Interface& nfp_interface_, Core::System& system_) |
| 35 | : ServiceFramework("NFP::IUser"), nfp_interface(nfp_interface) { | 36 | : ServiceFramework{system_, "NFP::IUser"}, nfp_interface{nfp_interface_} { |
| 36 | static const FunctionInfo functions[] = { | 37 | static const FunctionInfo functions[] = { |
| 37 | {0, &IUser::Initialize, "Initialize"}, | 38 | {0, &IUser::Initialize, "Initialize"}, |
| 38 | {1, &IUser::Finalize, "Finalize"}, | 39 | {1, &IUser::Finalize, "Finalize"}, |
diff --git a/src/core/hle/service/nfp/nfp.h b/src/core/hle/service/nfp/nfp.h index 200013795..295de535b 100644 --- a/src/core/hle/service/nfp/nfp.h +++ b/src/core/hle/service/nfp/nfp.h | |||
| @@ -16,7 +16,8 @@ class Module final { | |||
| 16 | public: | 16 | public: |
| 17 | class Interface : public ServiceFramework<Interface> { | 17 | class Interface : public ServiceFramework<Interface> { |
| 18 | public: | 18 | public: |
| 19 | explicit Interface(std::shared_ptr<Module> module, Core::System& system, const char* name); | 19 | explicit Interface(std::shared_ptr<Module> module_, Core::System& system_, |
| 20 | const char* name); | ||
| 20 | ~Interface() override; | 21 | ~Interface() override; |
| 21 | 22 | ||
| 22 | struct ModelInfo { | 23 | struct ModelInfo { |
| @@ -43,7 +44,6 @@ public: | |||
| 43 | 44 | ||
| 44 | protected: | 45 | protected: |
| 45 | std::shared_ptr<Module> module; | 46 | std::shared_ptr<Module> module; |
| 46 | Core::System& system; | ||
| 47 | }; | 47 | }; |
| 48 | }; | 48 | }; |
| 49 | 49 | ||
diff --git a/src/core/hle/service/nfp/nfp_user.cpp b/src/core/hle/service/nfp/nfp_user.cpp index 298184f17..10b0ef944 100644 --- a/src/core/hle/service/nfp/nfp_user.cpp +++ b/src/core/hle/service/nfp/nfp_user.cpp | |||
| @@ -6,8 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::NFP { | 7 | namespace Service::NFP { |
| 8 | 8 | ||
| 9 | NFP_User::NFP_User(std::shared_ptr<Module> module, Core::System& system) | 9 | NFP_User::NFP_User(std::shared_ptr<Module> module_, Core::System& system_) |
| 10 | : Module::Interface(std::move(module), system, "nfp:user") { | 10 | : Interface(std::move(module_), system_, "nfp:user") { |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, &NFP_User::CreateUserInterface, "CreateUserInterface"}, | 12 | {0, &NFP_User::CreateUserInterface, "CreateUserInterface"}, |
| 13 | }; | 13 | }; |
diff --git a/src/core/hle/service/nfp/nfp_user.h b/src/core/hle/service/nfp/nfp_user.h index 1686ebf20..7f3c124f6 100644 --- a/src/core/hle/service/nfp/nfp_user.h +++ b/src/core/hle/service/nfp/nfp_user.h | |||
| @@ -10,7 +10,7 @@ namespace Service::NFP { | |||
| 10 | 10 | ||
| 11 | class NFP_User final : public Module::Interface { | 11 | class NFP_User final : public Module::Interface { |
| 12 | public: | 12 | public: |
| 13 | explicit NFP_User(std::shared_ptr<Module> module, Core::System& system); | 13 | explicit NFP_User(std::shared_ptr<Module> module_, Core::System& system_); |
| 14 | ~NFP_User() override; | 14 | ~NFP_User() override; |
| 15 | }; | 15 | }; |
| 16 | 16 | ||
diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp index db7ec6d0e..ef5176bea 100644 --- a/src/core/hle/service/nifm/nifm.cpp +++ b/src/core/hle/service/nifm/nifm.cpp | |||
| @@ -23,7 +23,7 @@ enum class RequestState : u32 { | |||
| 23 | 23 | ||
| 24 | class IScanRequest final : public ServiceFramework<IScanRequest> { | 24 | class IScanRequest final : public ServiceFramework<IScanRequest> { |
| 25 | public: | 25 | public: |
| 26 | explicit IScanRequest() : ServiceFramework("IScanRequest") { | 26 | explicit IScanRequest(Core::System& system_) : ServiceFramework{system_, "IScanRequest"} { |
| 27 | // clang-format off | 27 | // clang-format off |
| 28 | static const FunctionInfo functions[] = { | 28 | static const FunctionInfo functions[] = { |
| 29 | {0, nullptr, "Submit"}, | 29 | {0, nullptr, "Submit"}, |
| @@ -40,7 +40,7 @@ public: | |||
| 40 | 40 | ||
| 41 | class IRequest final : public ServiceFramework<IRequest> { | 41 | class IRequest final : public ServiceFramework<IRequest> { |
| 42 | public: | 42 | public: |
| 43 | explicit IRequest(Core::System& system) : ServiceFramework("IRequest") { | 43 | explicit IRequest(Core::System& system_) : ServiceFramework{system_, "IRequest"} { |
| 44 | static const FunctionInfo functions[] = { | 44 | static const FunctionInfo functions[] = { |
| 45 | {0, &IRequest::GetRequestState, "GetRequestState"}, | 45 | {0, &IRequest::GetRequestState, "GetRequestState"}, |
| 46 | {1, &IRequest::GetResult, "GetResult"}, | 46 | {1, &IRequest::GetResult, "GetResult"}, |
| @@ -140,7 +140,7 @@ private: | |||
| 140 | 140 | ||
| 141 | class INetworkProfile final : public ServiceFramework<INetworkProfile> { | 141 | class INetworkProfile final : public ServiceFramework<INetworkProfile> { |
| 142 | public: | 142 | public: |
| 143 | explicit INetworkProfile() : ServiceFramework("INetworkProfile") { | 143 | explicit INetworkProfile(Core::System& system_) : ServiceFramework{system_, "INetworkProfile"} { |
| 144 | static const FunctionInfo functions[] = { | 144 | static const FunctionInfo functions[] = { |
| 145 | {0, nullptr, "Update"}, | 145 | {0, nullptr, "Update"}, |
| 146 | {1, nullptr, "PersistOld"}, | 146 | {1, nullptr, "PersistOld"}, |
| @@ -152,7 +152,7 @@ public: | |||
| 152 | 152 | ||
| 153 | class IGeneralService final : public ServiceFramework<IGeneralService> { | 153 | class IGeneralService final : public ServiceFramework<IGeneralService> { |
| 154 | public: | 154 | public: |
| 155 | IGeneralService(Core::System& system); | 155 | explicit IGeneralService(Core::System& system_); |
| 156 | 156 | ||
| 157 | private: | 157 | private: |
| 158 | void GetClientId(Kernel::HLERequestContext& ctx) { | 158 | void GetClientId(Kernel::HLERequestContext& ctx) { |
| @@ -169,7 +169,7 @@ private: | |||
| 169 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 169 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 170 | 170 | ||
| 171 | rb.Push(RESULT_SUCCESS); | 171 | rb.Push(RESULT_SUCCESS); |
| 172 | rb.PushIpcInterface<IScanRequest>(); | 172 | rb.PushIpcInterface<IScanRequest>(system); |
| 173 | } | 173 | } |
| 174 | void CreateRequest(Kernel::HLERequestContext& ctx) { | 174 | void CreateRequest(Kernel::HLERequestContext& ctx) { |
| 175 | LOG_DEBUG(Service_NIFM, "called"); | 175 | LOG_DEBUG(Service_NIFM, "called"); |
| @@ -207,7 +207,7 @@ private: | |||
| 207 | IPC::ResponseBuilder rb{ctx, 6, 0, 1}; | 207 | IPC::ResponseBuilder rb{ctx, 6, 0, 1}; |
| 208 | 208 | ||
| 209 | rb.Push(RESULT_SUCCESS); | 209 | rb.Push(RESULT_SUCCESS); |
| 210 | rb.PushIpcInterface<INetworkProfile>(); | 210 | rb.PushIpcInterface<INetworkProfile>(system); |
| 211 | rb.PushRaw<u128>(uuid); | 211 | rb.PushRaw<u128>(uuid); |
| 212 | } | 212 | } |
| 213 | void IsWirelessCommunicationEnabled(Kernel::HLERequestContext& ctx) { | 213 | void IsWirelessCommunicationEnabled(Kernel::HLERequestContext& ctx) { |
| @@ -239,11 +239,10 @@ private: | |||
| 239 | rb.Push<u8>(1); | 239 | rb.Push<u8>(1); |
| 240 | } | 240 | } |
| 241 | } | 241 | } |
| 242 | Core::System& system; | ||
| 243 | }; | 242 | }; |
| 244 | 243 | ||
| 245 | IGeneralService::IGeneralService(Core::System& system) | 244 | IGeneralService::IGeneralService(Core::System& system_) |
| 246 | : ServiceFramework("IGeneralService"), system(system) { | 245 | : ServiceFramework{system_, "IGeneralService"} { |
| 247 | // clang-format off | 246 | // clang-format off |
| 248 | static const FunctionInfo functions[] = { | 247 | static const FunctionInfo functions[] = { |
| 249 | {1, &IGeneralService::GetClientId, "GetClientId"}, | 248 | {1, &IGeneralService::GetClientId, "GetClientId"}, |
| @@ -296,8 +295,8 @@ IGeneralService::IGeneralService(Core::System& system) | |||
| 296 | 295 | ||
| 297 | class NetworkInterface final : public ServiceFramework<NetworkInterface> { | 296 | class NetworkInterface final : public ServiceFramework<NetworkInterface> { |
| 298 | public: | 297 | public: |
| 299 | explicit NetworkInterface(const char* name, Core::System& system) | 298 | explicit NetworkInterface(const char* name, Core::System& system_) |
| 300 | : ServiceFramework{name}, system(system) { | 299 | : ServiceFramework{system_, name} { |
| 301 | static const FunctionInfo functions[] = { | 300 | static const FunctionInfo functions[] = { |
| 302 | {4, &NetworkInterface::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, | 301 | {4, &NetworkInterface::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, |
| 303 | {5, &NetworkInterface::CreateGeneralService, "CreateGeneralService"}, | 302 | {5, &NetworkInterface::CreateGeneralService, "CreateGeneralService"}, |
| @@ -305,6 +304,7 @@ public: | |||
| 305 | RegisterHandlers(functions); | 304 | RegisterHandlers(functions); |
| 306 | } | 305 | } |
| 307 | 306 | ||
| 307 | private: | ||
| 308 | void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | 308 | void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { |
| 309 | LOG_DEBUG(Service_NIFM, "called"); | 309 | LOG_DEBUG(Service_NIFM, "called"); |
| 310 | 310 | ||
| @@ -320,9 +320,6 @@ public: | |||
| 320 | rb.Push(RESULT_SUCCESS); | 320 | rb.Push(RESULT_SUCCESS); |
| 321 | rb.PushIpcInterface<IGeneralService>(system); | 321 | rb.PushIpcInterface<IGeneralService>(system); |
| 322 | } | 322 | } |
| 323 | |||
| 324 | private: | ||
| 325 | Core::System& system; | ||
| 326 | }; | 323 | }; |
| 327 | 324 | ||
| 328 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { | 325 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
diff --git a/src/core/hle/service/nifm/nifm.h b/src/core/hle/service/nifm/nifm.h index 6857e18f9..c3dd4f386 100644 --- a/src/core/hle/service/nifm/nifm.h +++ b/src/core/hle/service/nifm/nifm.h | |||
| @@ -4,14 +4,14 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Service::SM { | ||
| 8 | class ServiceManager; | ||
| 9 | } | ||
| 10 | |||
| 11 | namespace Core { | 7 | namespace Core { |
| 12 | class System; | 8 | class System; |
| 13 | } | 9 | } |
| 14 | 10 | ||
| 11 | namespace Service::SM { | ||
| 12 | class ServiceManager; | ||
| 13 | } | ||
| 14 | |||
| 15 | namespace Service::NIFM { | 15 | namespace Service::NIFM { |
| 16 | 16 | ||
| 17 | /// Registers all NIFM services with the specified service manager. | 17 | /// Registers all NIFM services with the specified service manager. |
diff --git a/src/core/hle/service/nim/nim.cpp b/src/core/hle/service/nim/nim.cpp index 11aa74828..d33b26129 100644 --- a/src/core/hle/service/nim/nim.cpp +++ b/src/core/hle/service/nim/nim.cpp | |||
| @@ -17,7 +17,8 @@ namespace Service::NIM { | |||
| 17 | 17 | ||
| 18 | class IShopServiceAsync final : public ServiceFramework<IShopServiceAsync> { | 18 | class IShopServiceAsync final : public ServiceFramework<IShopServiceAsync> { |
| 19 | public: | 19 | public: |
| 20 | IShopServiceAsync() : ServiceFramework("IShopServiceAsync") { | 20 | explicit IShopServiceAsync(Core::System& system_) |
| 21 | : ServiceFramework{system_, "IShopServiceAsync"} { | ||
| 21 | // clang-format off | 22 | // clang-format off |
| 22 | static const FunctionInfo functions[] = { | 23 | static const FunctionInfo functions[] = { |
| 23 | {0, nullptr, "Cancel"}, | 24 | {0, nullptr, "Cancel"}, |
| @@ -35,7 +36,8 @@ public: | |||
| 35 | 36 | ||
| 36 | class IShopServiceAccessor final : public ServiceFramework<IShopServiceAccessor> { | 37 | class IShopServiceAccessor final : public ServiceFramework<IShopServiceAccessor> { |
| 37 | public: | 38 | public: |
| 38 | IShopServiceAccessor() : ServiceFramework("IShopServiceAccessor") { | 39 | explicit IShopServiceAccessor(Core::System& system_) |
| 40 | : ServiceFramework{system_, "IShopServiceAccessor"} { | ||
| 39 | // clang-format off | 41 | // clang-format off |
| 40 | static const FunctionInfo functions[] = { | 42 | static const FunctionInfo functions[] = { |
| 41 | {0, &IShopServiceAccessor::CreateAsyncInterface, "CreateAsyncInterface"}, | 43 | {0, &IShopServiceAccessor::CreateAsyncInterface, "CreateAsyncInterface"}, |
| @@ -50,13 +52,14 @@ private: | |||
| 50 | LOG_WARNING(Service_NIM, "(STUBBED) called"); | 52 | LOG_WARNING(Service_NIM, "(STUBBED) called"); |
| 51 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 53 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 52 | rb.Push(RESULT_SUCCESS); | 54 | rb.Push(RESULT_SUCCESS); |
| 53 | rb.PushIpcInterface<IShopServiceAsync>(); | 55 | rb.PushIpcInterface<IShopServiceAsync>(system); |
| 54 | } | 56 | } |
| 55 | }; | 57 | }; |
| 56 | 58 | ||
| 57 | class IShopServiceAccessServer final : public ServiceFramework<IShopServiceAccessServer> { | 59 | class IShopServiceAccessServer final : public ServiceFramework<IShopServiceAccessServer> { |
| 58 | public: | 60 | public: |
| 59 | IShopServiceAccessServer() : ServiceFramework("IShopServiceAccessServer") { | 61 | explicit IShopServiceAccessServer(Core::System& system_) |
| 62 | : ServiceFramework{system_, "IShopServiceAccessServer"} { | ||
| 60 | // clang-format off | 63 | // clang-format off |
| 61 | static const FunctionInfo functions[] = { | 64 | static const FunctionInfo functions[] = { |
| 62 | {0, &IShopServiceAccessServer::CreateAccessorInterface, "CreateAccessorInterface"}, | 65 | {0, &IShopServiceAccessServer::CreateAccessorInterface, "CreateAccessorInterface"}, |
| @@ -71,13 +74,13 @@ private: | |||
| 71 | LOG_WARNING(Service_NIM, "(STUBBED) called"); | 74 | LOG_WARNING(Service_NIM, "(STUBBED) called"); |
| 72 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 75 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 73 | rb.Push(RESULT_SUCCESS); | 76 | rb.Push(RESULT_SUCCESS); |
| 74 | rb.PushIpcInterface<IShopServiceAccessor>(); | 77 | rb.PushIpcInterface<IShopServiceAccessor>(system); |
| 75 | } | 78 | } |
| 76 | }; | 79 | }; |
| 77 | 80 | ||
| 78 | class NIM final : public ServiceFramework<NIM> { | 81 | class NIM final : public ServiceFramework<NIM> { |
| 79 | public: | 82 | public: |
| 80 | explicit NIM() : ServiceFramework{"nim"} { | 83 | explicit NIM(Core::System& system_) : ServiceFramework{system_, "nim"} { |
| 81 | // clang-format off | 84 | // clang-format off |
| 82 | static const FunctionInfo functions[] = { | 85 | static const FunctionInfo functions[] = { |
| 83 | {0, nullptr, "CreateSystemUpdateTask"}, | 86 | {0, nullptr, "CreateSystemUpdateTask"}, |
| @@ -207,7 +210,7 @@ public: | |||
| 207 | 210 | ||
| 208 | class NIM_ECA final : public ServiceFramework<NIM_ECA> { | 211 | class NIM_ECA final : public ServiceFramework<NIM_ECA> { |
| 209 | public: | 212 | public: |
| 210 | explicit NIM_ECA() : ServiceFramework{"nim:eca"} { | 213 | explicit NIM_ECA(Core::System& system_) : ServiceFramework{system_, "nim:eca"} { |
| 211 | // clang-format off | 214 | // clang-format off |
| 212 | static const FunctionInfo functions[] = { | 215 | static const FunctionInfo functions[] = { |
| 213 | {0, &NIM_ECA::CreateServerInterface, "CreateServerInterface"}, | 216 | {0, &NIM_ECA::CreateServerInterface, "CreateServerInterface"}, |
| @@ -226,13 +229,13 @@ private: | |||
| 226 | LOG_WARNING(Service_NIM, "(STUBBED) called"); | 229 | LOG_WARNING(Service_NIM, "(STUBBED) called"); |
| 227 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 230 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 228 | rb.Push(RESULT_SUCCESS); | 231 | rb.Push(RESULT_SUCCESS); |
| 229 | rb.PushIpcInterface<IShopServiceAccessServer>(); | 232 | rb.PushIpcInterface<IShopServiceAccessServer>(system); |
| 230 | } | 233 | } |
| 231 | }; | 234 | }; |
| 232 | 235 | ||
| 233 | class NIM_SHP final : public ServiceFramework<NIM_SHP> { | 236 | class NIM_SHP final : public ServiceFramework<NIM_SHP> { |
| 234 | public: | 237 | public: |
| 235 | explicit NIM_SHP() : ServiceFramework{"nim:shp"} { | 238 | explicit NIM_SHP(Core::System& system_) : ServiceFramework{system_, "nim:shp"} { |
| 236 | // clang-format off | 239 | // clang-format off |
| 237 | static const FunctionInfo functions[] = { | 240 | static const FunctionInfo functions[] = { |
| 238 | {0, nullptr, "RequestDeviceAuthenticationToken"}, | 241 | {0, nullptr, "RequestDeviceAuthenticationToken"}, |
| @@ -272,8 +275,8 @@ public: | |||
| 272 | class IEnsureNetworkClockAvailabilityService final | 275 | class IEnsureNetworkClockAvailabilityService final |
| 273 | : public ServiceFramework<IEnsureNetworkClockAvailabilityService> { | 276 | : public ServiceFramework<IEnsureNetworkClockAvailabilityService> { |
| 274 | public: | 277 | public: |
| 275 | explicit IEnsureNetworkClockAvailabilityService(Core::System& system) | 278 | explicit IEnsureNetworkClockAvailabilityService(Core::System& system_) |
| 276 | : ServiceFramework("IEnsureNetworkClockAvailabilityService") { | 279 | : ServiceFramework{system_, "IEnsureNetworkClockAvailabilityService"} { |
| 277 | static const FunctionInfo functions[] = { | 280 | static const FunctionInfo functions[] = { |
| 278 | {0, &IEnsureNetworkClockAvailabilityService::StartTask, "StartTask"}, | 281 | {0, &IEnsureNetworkClockAvailabilityService::StartTask, "StartTask"}, |
| 279 | {1, &IEnsureNetworkClockAvailabilityService::GetFinishNotificationEvent, | 282 | {1, &IEnsureNetworkClockAvailabilityService::GetFinishNotificationEvent, |
| @@ -345,7 +348,7 @@ private: | |||
| 345 | 348 | ||
| 346 | class NTC final : public ServiceFramework<NTC> { | 349 | class NTC final : public ServiceFramework<NTC> { |
| 347 | public: | 350 | public: |
| 348 | explicit NTC(Core::System& system) : ServiceFramework{"ntc"}, system(system) { | 351 | explicit NTC(Core::System& system_) : ServiceFramework{system_, "ntc"} { |
| 349 | // clang-format off | 352 | // clang-format off |
| 350 | static const FunctionInfo functions[] = { | 353 | static const FunctionInfo functions[] = { |
| 351 | {0, &NTC::OpenEnsureNetworkClockAvailabilityService, "OpenEnsureNetworkClockAvailabilityService"}, | 354 | {0, &NTC::OpenEnsureNetworkClockAvailabilityService, "OpenEnsureNetworkClockAvailabilityService"}, |
| @@ -380,13 +383,12 @@ private: | |||
| 380 | IPC::ResponseBuilder rb{ctx, 2}; | 383 | IPC::ResponseBuilder rb{ctx, 2}; |
| 381 | rb.Push(RESULT_SUCCESS); | 384 | rb.Push(RESULT_SUCCESS); |
| 382 | } | 385 | } |
| 383 | Core::System& system; | ||
| 384 | }; | 386 | }; |
| 385 | 387 | ||
| 386 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { | 388 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 387 | std::make_shared<NIM>()->InstallAsService(sm); | 389 | std::make_shared<NIM>(system)->InstallAsService(sm); |
| 388 | std::make_shared<NIM_ECA>()->InstallAsService(sm); | 390 | std::make_shared<NIM_ECA>(system)->InstallAsService(sm); |
| 389 | std::make_shared<NIM_SHP>()->InstallAsService(sm); | 391 | std::make_shared<NIM_SHP>(system)->InstallAsService(sm); |
| 390 | std::make_shared<NTC>(system)->InstallAsService(sm); | 392 | std::make_shared<NTC>(system)->InstallAsService(sm); |
| 391 | } | 393 | } |
| 392 | 394 | ||
diff --git a/src/core/hle/service/nim/nim.h b/src/core/hle/service/nim/nim.h index dbe25dc01..571153fe6 100644 --- a/src/core/hle/service/nim/nim.h +++ b/src/core/hle/service/nim/nim.h | |||
| @@ -4,14 +4,14 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Service::SM { | ||
| 8 | class ServiceManager; | ||
| 9 | } | ||
| 10 | |||
| 11 | namespace Core { | 7 | namespace Core { |
| 12 | class System; | 8 | class System; |
| 13 | } | 9 | } |
| 14 | 10 | ||
| 11 | namespace Service::SM { | ||
| 12 | class ServiceManager; | ||
| 13 | } | ||
| 14 | |||
| 15 | namespace Service::NIM { | 15 | namespace Service::NIM { |
| 16 | 16 | ||
| 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
diff --git a/src/core/hle/service/npns/npns.cpp b/src/core/hle/service/npns/npns.cpp index 8fa16fb08..f7a58f659 100644 --- a/src/core/hle/service/npns/npns.cpp +++ b/src/core/hle/service/npns/npns.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::NPNS { | |||
| 12 | 12 | ||
| 13 | class NPNS_S final : public ServiceFramework<NPNS_S> { | 13 | class NPNS_S final : public ServiceFramework<NPNS_S> { |
| 14 | public: | 14 | public: |
| 15 | explicit NPNS_S() : ServiceFramework{"npns:s"} { | 15 | explicit NPNS_S(Core::System& system_) : ServiceFramework{system_, "npns:s"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {1, nullptr, "ListenAll"}, | 18 | {1, nullptr, "ListenAll"}, |
| @@ -62,7 +62,7 @@ public: | |||
| 62 | 62 | ||
| 63 | class NPNS_U final : public ServiceFramework<NPNS_U> { | 63 | class NPNS_U final : public ServiceFramework<NPNS_U> { |
| 64 | public: | 64 | public: |
| 65 | explicit NPNS_U() : ServiceFramework{"npns:u"} { | 65 | explicit NPNS_U(Core::System& system_) : ServiceFramework{system_, "npns:u"} { |
| 66 | // clang-format off | 66 | // clang-format off |
| 67 | static const FunctionInfo functions[] = { | 67 | static const FunctionInfo functions[] = { |
| 68 | {1, nullptr, "ListenAll"}, | 68 | {1, nullptr, "ListenAll"}, |
| @@ -91,9 +91,9 @@ public: | |||
| 91 | } | 91 | } |
| 92 | }; | 92 | }; |
| 93 | 93 | ||
| 94 | void InstallInterfaces(SM::ServiceManager& sm) { | 94 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 95 | std::make_shared<NPNS_S>()->InstallAsService(sm); | 95 | std::make_shared<NPNS_S>(system)->InstallAsService(sm); |
| 96 | std::make_shared<NPNS_U>()->InstallAsService(sm); | 96 | std::make_shared<NPNS_U>(system)->InstallAsService(sm); |
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | } // namespace Service::NPNS | 99 | } // namespace Service::NPNS |
diff --git a/src/core/hle/service/npns/npns.h b/src/core/hle/service/npns/npns.h index 861cd3e48..3b7596b6b 100644 --- a/src/core/hle/service/npns/npns.h +++ b/src/core/hle/service/npns/npns.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::NPNS { | 15 | namespace Service::NPNS { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::NPNS | 19 | } // namespace Service::NPNS |
diff --git a/src/core/hle/service/ns/ns.cpp b/src/core/hle/service/ns/ns.cpp index 2594e6839..ef7584641 100644 --- a/src/core/hle/service/ns/ns.cpp +++ b/src/core/hle/service/ns/ns.cpp | |||
| @@ -18,7 +18,8 @@ | |||
| 18 | 18 | ||
| 19 | namespace Service::NS { | 19 | namespace Service::NS { |
| 20 | 20 | ||
| 21 | IAccountProxyInterface::IAccountProxyInterface() : ServiceFramework{"IAccountProxyInterface"} { | 21 | IAccountProxyInterface::IAccountProxyInterface(Core::System& system_) |
| 22 | : ServiceFramework{system_, "IAccountProxyInterface"} { | ||
| 22 | // clang-format off | 23 | // clang-format off |
| 23 | static const FunctionInfo functions[] = { | 24 | static const FunctionInfo functions[] = { |
| 24 | {0, nullptr, "CreateUserAccount"}, | 25 | {0, nullptr, "CreateUserAccount"}, |
| @@ -31,7 +32,7 @@ IAccountProxyInterface::IAccountProxyInterface() : ServiceFramework{"IAccountPro | |||
| 31 | IAccountProxyInterface::~IAccountProxyInterface() = default; | 32 | IAccountProxyInterface::~IAccountProxyInterface() = default; |
| 32 | 33 | ||
| 33 | IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_) | 34 | IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_) |
| 34 | : ServiceFramework{"IApplicationManagerInterface"}, system{system_} { | 35 | : ServiceFramework{system_, "IApplicationManagerInterface"} { |
| 35 | // clang-format off | 36 | // clang-format off |
| 36 | static const FunctionInfo functions[] = { | 37 | static const FunctionInfo functions[] = { |
| 37 | {0, nullptr, "ListApplicationRecord"}, | 38 | {0, nullptr, "ListApplicationRecord"}, |
| @@ -428,8 +429,8 @@ ResultVal<u64> IApplicationManagerInterface::ConvertApplicationLanguageToLanguag | |||
| 428 | return MakeResult(static_cast<u64>(*language_code)); | 429 | return MakeResult(static_cast<u64>(*language_code)); |
| 429 | } | 430 | } |
| 430 | 431 | ||
| 431 | IApplicationVersionInterface::IApplicationVersionInterface() | 432 | IApplicationVersionInterface::IApplicationVersionInterface(Core::System& system_) |
| 432 | : ServiceFramework{"IApplicationVersionInterface"} { | 433 | : ServiceFramework{system_, "IApplicationVersionInterface"} { |
| 433 | // clang-format off | 434 | // clang-format off |
| 434 | static const FunctionInfo functions[] = { | 435 | static const FunctionInfo functions[] = { |
| 435 | {0, nullptr, "GetLaunchRequiredVersion"}, | 436 | {0, nullptr, "GetLaunchRequiredVersion"}, |
| @@ -449,8 +450,8 @@ IApplicationVersionInterface::IApplicationVersionInterface() | |||
| 449 | 450 | ||
| 450 | IApplicationVersionInterface::~IApplicationVersionInterface() = default; | 451 | IApplicationVersionInterface::~IApplicationVersionInterface() = default; |
| 451 | 452 | ||
| 452 | IContentManagementInterface::IContentManagementInterface() | 453 | IContentManagementInterface::IContentManagementInterface(Core::System& system_) |
| 453 | : ServiceFramework{"IContentManagementInterface"} { | 454 | : ServiceFramework{system_, "IContentManagementInterface"} { |
| 454 | // clang-format off | 455 | // clang-format off |
| 455 | static const FunctionInfo functions[] = { | 456 | static const FunctionInfo functions[] = { |
| 456 | {11, nullptr, "CalculateApplicationOccupiedSize"}, | 457 | {11, nullptr, "CalculateApplicationOccupiedSize"}, |
| @@ -469,7 +470,8 @@ IContentManagementInterface::IContentManagementInterface() | |||
| 469 | 470 | ||
| 470 | IContentManagementInterface::~IContentManagementInterface() = default; | 471 | IContentManagementInterface::~IContentManagementInterface() = default; |
| 471 | 472 | ||
| 472 | IDocumentInterface::IDocumentInterface() : ServiceFramework{"IDocumentInterface"} { | 473 | IDocumentInterface::IDocumentInterface(Core::System& system_) |
| 474 | : ServiceFramework{system_, "IDocumentInterface"} { | ||
| 473 | // clang-format off | 475 | // clang-format off |
| 474 | static const FunctionInfo functions[] = { | 476 | static const FunctionInfo functions[] = { |
| 475 | {21, nullptr, "GetApplicationContentPath"}, | 477 | {21, nullptr, "GetApplicationContentPath"}, |
| @@ -483,7 +485,8 @@ IDocumentInterface::IDocumentInterface() : ServiceFramework{"IDocumentInterface" | |||
| 483 | 485 | ||
| 484 | IDocumentInterface::~IDocumentInterface() = default; | 486 | IDocumentInterface::~IDocumentInterface() = default; |
| 485 | 487 | ||
| 486 | IDownloadTaskInterface::IDownloadTaskInterface() : ServiceFramework{"IDownloadTaskInterface"} { | 488 | IDownloadTaskInterface::IDownloadTaskInterface(Core::System& system_) |
| 489 | : ServiceFramework{system_, "IDownloadTaskInterface"} { | ||
| 487 | // clang-format off | 490 | // clang-format off |
| 488 | static const FunctionInfo functions[] = { | 491 | static const FunctionInfo functions[] = { |
| 489 | {701, nullptr, "ClearTaskStatusList"}, | 492 | {701, nullptr, "ClearTaskStatusList"}, |
| @@ -503,7 +506,8 @@ IDownloadTaskInterface::IDownloadTaskInterface() : ServiceFramework{"IDownloadTa | |||
| 503 | 506 | ||
| 504 | IDownloadTaskInterface::~IDownloadTaskInterface() = default; | 507 | IDownloadTaskInterface::~IDownloadTaskInterface() = default; |
| 505 | 508 | ||
| 506 | IECommerceInterface::IECommerceInterface() : ServiceFramework{"IECommerceInterface"} { | 509 | IECommerceInterface::IECommerceInterface(Core::System& system_) |
| 510 | : ServiceFramework{system_, "IECommerceInterface"} { | ||
| 507 | // clang-format off | 511 | // clang-format off |
| 508 | static const FunctionInfo functions[] = { | 512 | static const FunctionInfo functions[] = { |
| 509 | {0, nullptr, "RequestLinkDevice"}, | 513 | {0, nullptr, "RequestLinkDevice"}, |
| @@ -521,8 +525,8 @@ IECommerceInterface::IECommerceInterface() : ServiceFramework{"IECommerceInterfa | |||
| 521 | 525 | ||
| 522 | IECommerceInterface::~IECommerceInterface() = default; | 526 | IECommerceInterface::~IECommerceInterface() = default; |
| 523 | 527 | ||
| 524 | IFactoryResetInterface::IFactoryResetInterface::IFactoryResetInterface() | 528 | IFactoryResetInterface::IFactoryResetInterface(Core::System& system_) |
| 525 | : ServiceFramework{"IFactoryResetInterface"} { | 529 | : ServiceFramework{system_, "IFactoryResetInterface"} { |
| 526 | // clang-format off | 530 | // clang-format off |
| 527 | static const FunctionInfo functions[] = { | 531 | static const FunctionInfo functions[] = { |
| 528 | {100, nullptr, "ResetToFactorySettings"}, | 532 | {100, nullptr, "ResetToFactorySettings"}, |
| @@ -540,7 +544,7 @@ IFactoryResetInterface::IFactoryResetInterface::IFactoryResetInterface() | |||
| 540 | 544 | ||
| 541 | IFactoryResetInterface::~IFactoryResetInterface() = default; | 545 | IFactoryResetInterface::~IFactoryResetInterface() = default; |
| 542 | 546 | ||
| 543 | NS::NS(const char* name, Core::System& system_) : ServiceFramework{name}, system{system_} { | 547 | NS::NS(const char* name, Core::System& system_) : ServiceFramework{system_, name} { |
| 544 | // clang-format off | 548 | // clang-format off |
| 545 | static const FunctionInfo functions[] = { | 549 | static const FunctionInfo functions[] = { |
| 546 | {7992, &NS::PushInterface<IECommerceInterface>, "GetECommerceInterface"}, | 550 | {7992, &NS::PushInterface<IECommerceInterface>, "GetECommerceInterface"}, |
| @@ -565,7 +569,7 @@ std::shared_ptr<IApplicationManagerInterface> NS::GetApplicationManagerInterface | |||
| 565 | 569 | ||
| 566 | class NS_DEV final : public ServiceFramework<NS_DEV> { | 570 | class NS_DEV final : public ServiceFramework<NS_DEV> { |
| 567 | public: | 571 | public: |
| 568 | explicit NS_DEV() : ServiceFramework{"ns:dev"} { | 572 | explicit NS_DEV(Core::System& system_) : ServiceFramework{system_, "ns:dev"} { |
| 569 | // clang-format off | 573 | // clang-format off |
| 570 | static const FunctionInfo functions[] = { | 574 | static const FunctionInfo functions[] = { |
| 571 | {0, nullptr, "LaunchProgram"}, | 575 | {0, nullptr, "LaunchProgram"}, |
| @@ -592,7 +596,8 @@ public: | |||
| 592 | 596 | ||
| 593 | class ISystemUpdateControl final : public ServiceFramework<ISystemUpdateControl> { | 597 | class ISystemUpdateControl final : public ServiceFramework<ISystemUpdateControl> { |
| 594 | public: | 598 | public: |
| 595 | explicit ISystemUpdateControl() : ServiceFramework{"ISystemUpdateControl"} { | 599 | explicit ISystemUpdateControl(Core::System& system_) |
| 600 | : ServiceFramework{system_, "ISystemUpdateControl"} { | ||
| 596 | // clang-format off | 601 | // clang-format off |
| 597 | static const FunctionInfo functions[] = { | 602 | static const FunctionInfo functions[] = { |
| 598 | {0, nullptr, "HasDownloaded"}, | 603 | {0, nullptr, "HasDownloaded"}, |
| @@ -627,7 +632,7 @@ public: | |||
| 627 | 632 | ||
| 628 | class NS_SU final : public ServiceFramework<NS_SU> { | 633 | class NS_SU final : public ServiceFramework<NS_SU> { |
| 629 | public: | 634 | public: |
| 630 | explicit NS_SU() : ServiceFramework{"ns:su"} { | 635 | explicit NS_SU(Core::System& system_) : ServiceFramework{system_, "ns:su"} { |
| 631 | // clang-format off | 636 | // clang-format off |
| 632 | static const FunctionInfo functions[] = { | 637 | static const FunctionInfo functions[] = { |
| 633 | {0, nullptr, "GetBackgroundNetworkUpdateState"}, | 638 | {0, nullptr, "GetBackgroundNetworkUpdateState"}, |
| @@ -659,13 +664,13 @@ private: | |||
| 659 | 664 | ||
| 660 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 665 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 661 | rb.Push(RESULT_SUCCESS); | 666 | rb.Push(RESULT_SUCCESS); |
| 662 | rb.PushIpcInterface<ISystemUpdateControl>(); | 667 | rb.PushIpcInterface<ISystemUpdateControl>(system); |
| 663 | } | 668 | } |
| 664 | }; | 669 | }; |
| 665 | 670 | ||
| 666 | class NS_VM final : public ServiceFramework<NS_VM> { | 671 | class NS_VM final : public ServiceFramework<NS_VM> { |
| 667 | public: | 672 | public: |
| 668 | explicit NS_VM() : ServiceFramework{"ns:vm"} { | 673 | explicit NS_VM(Core::System& system_) : ServiceFramework{system_, "ns:vm"} { |
| 669 | // clang-format off | 674 | // clang-format off |
| 670 | static const FunctionInfo functions[] = { | 675 | static const FunctionInfo functions[] = { |
| 671 | {1200, nullptr, "NeedsUpdateVulnerability"}, | 676 | {1200, nullptr, "NeedsUpdateVulnerability"}, |
| @@ -686,9 +691,9 @@ void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system | |||
| 686 | std::make_shared<NS>("ns:rt", system)->InstallAsService(service_manager); | 691 | std::make_shared<NS>("ns:rt", system)->InstallAsService(service_manager); |
| 687 | std::make_shared<NS>("ns:web", system)->InstallAsService(service_manager); | 692 | std::make_shared<NS>("ns:web", system)->InstallAsService(service_manager); |
| 688 | 693 | ||
| 689 | std::make_shared<NS_DEV>()->InstallAsService(service_manager); | 694 | std::make_shared<NS_DEV>(system)->InstallAsService(service_manager); |
| 690 | std::make_shared<NS_SU>()->InstallAsService(service_manager); | 695 | std::make_shared<NS_SU>(system)->InstallAsService(service_manager); |
| 691 | std::make_shared<NS_VM>()->InstallAsService(service_manager); | 696 | std::make_shared<NS_VM>(system)->InstallAsService(service_manager); |
| 692 | 697 | ||
| 693 | std::make_shared<PL_U>(system)->InstallAsService(service_manager); | 698 | std::make_shared<PL_U>(system)->InstallAsService(service_manager); |
| 694 | } | 699 | } |
diff --git a/src/core/hle/service/ns/ns.h b/src/core/hle/service/ns/ns.h index c90ccd755..991271f3e 100644 --- a/src/core/hle/service/ns/ns.h +++ b/src/core/hle/service/ns/ns.h | |||
| @@ -20,7 +20,7 @@ namespace NS { | |||
| 20 | 20 | ||
| 21 | class IAccountProxyInterface final : public ServiceFramework<IAccountProxyInterface> { | 21 | class IAccountProxyInterface final : public ServiceFramework<IAccountProxyInterface> { |
| 22 | public: | 22 | public: |
| 23 | explicit IAccountProxyInterface(); | 23 | explicit IAccountProxyInterface(Core::System& system_); |
| 24 | ~IAccountProxyInterface() override; | 24 | ~IAccountProxyInterface() override; |
| 25 | }; | 25 | }; |
| 26 | 26 | ||
| @@ -36,43 +36,41 @@ private: | |||
| 36 | void GetApplicationControlData(Kernel::HLERequestContext& ctx); | 36 | void GetApplicationControlData(Kernel::HLERequestContext& ctx); |
| 37 | void GetApplicationDesiredLanguage(Kernel::HLERequestContext& ctx); | 37 | void GetApplicationDesiredLanguage(Kernel::HLERequestContext& ctx); |
| 38 | void ConvertApplicationLanguageToLanguageCode(Kernel::HLERequestContext& ctx); | 38 | void ConvertApplicationLanguageToLanguageCode(Kernel::HLERequestContext& ctx); |
| 39 | |||
| 40 | Core::System& system; | ||
| 41 | }; | 39 | }; |
| 42 | 40 | ||
| 43 | class IApplicationVersionInterface final : public ServiceFramework<IApplicationVersionInterface> { | 41 | class IApplicationVersionInterface final : public ServiceFramework<IApplicationVersionInterface> { |
| 44 | public: | 42 | public: |
| 45 | explicit IApplicationVersionInterface(); | 43 | explicit IApplicationVersionInterface(Core::System& system_); |
| 46 | ~IApplicationVersionInterface() override; | 44 | ~IApplicationVersionInterface() override; |
| 47 | }; | 45 | }; |
| 48 | 46 | ||
| 49 | class IContentManagementInterface final : public ServiceFramework<IContentManagementInterface> { | 47 | class IContentManagementInterface final : public ServiceFramework<IContentManagementInterface> { |
| 50 | public: | 48 | public: |
| 51 | explicit IContentManagementInterface(); | 49 | explicit IContentManagementInterface(Core::System& system_); |
| 52 | ~IContentManagementInterface() override; | 50 | ~IContentManagementInterface() override; |
| 53 | }; | 51 | }; |
| 54 | 52 | ||
| 55 | class IDocumentInterface final : public ServiceFramework<IDocumentInterface> { | 53 | class IDocumentInterface final : public ServiceFramework<IDocumentInterface> { |
| 56 | public: | 54 | public: |
| 57 | explicit IDocumentInterface(); | 55 | explicit IDocumentInterface(Core::System& system_); |
| 58 | ~IDocumentInterface() override; | 56 | ~IDocumentInterface() override; |
| 59 | }; | 57 | }; |
| 60 | 58 | ||
| 61 | class IDownloadTaskInterface final : public ServiceFramework<IDownloadTaskInterface> { | 59 | class IDownloadTaskInterface final : public ServiceFramework<IDownloadTaskInterface> { |
| 62 | public: | 60 | public: |
| 63 | explicit IDownloadTaskInterface(); | 61 | explicit IDownloadTaskInterface(Core::System& system_); |
| 64 | ~IDownloadTaskInterface() override; | 62 | ~IDownloadTaskInterface() override; |
| 65 | }; | 63 | }; |
| 66 | 64 | ||
| 67 | class IECommerceInterface final : public ServiceFramework<IECommerceInterface> { | 65 | class IECommerceInterface final : public ServiceFramework<IECommerceInterface> { |
| 68 | public: | 66 | public: |
| 69 | explicit IECommerceInterface(); | 67 | explicit IECommerceInterface(Core::System& system_); |
| 70 | ~IECommerceInterface() override; | 68 | ~IECommerceInterface() override; |
| 71 | }; | 69 | }; |
| 72 | 70 | ||
| 73 | class IFactoryResetInterface final : public ServiceFramework<IFactoryResetInterface> { | 71 | class IFactoryResetInterface final : public ServiceFramework<IFactoryResetInterface> { |
| 74 | public: | 72 | public: |
| 75 | explicit IFactoryResetInterface(); | 73 | explicit IFactoryResetInterface(Core::System& system_); |
| 76 | ~IFactoryResetInterface() override; | 74 | ~IFactoryResetInterface() override; |
| 77 | }; | 75 | }; |
| 78 | 76 | ||
| @@ -90,7 +88,7 @@ private: | |||
| 90 | 88 | ||
| 91 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 89 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 92 | rb.Push(RESULT_SUCCESS); | 90 | rb.Push(RESULT_SUCCESS); |
| 93 | rb.PushIpcInterface<T>(); | 91 | rb.PushIpcInterface<T>(system); |
| 94 | } | 92 | } |
| 95 | 93 | ||
| 96 | void PushIApplicationManagerInterface(Kernel::HLERequestContext& ctx) { | 94 | void PushIApplicationManagerInterface(Kernel::HLERequestContext& ctx) { |
| @@ -108,8 +106,6 @@ private: | |||
| 108 | 106 | ||
| 109 | return std::make_shared<T>(std::forward<Args>(args)...); | 107 | return std::make_shared<T>(std::forward<Args>(args)...); |
| 110 | } | 108 | } |
| 111 | |||
| 112 | Core::System& system; | ||
| 113 | }; | 109 | }; |
| 114 | 110 | ||
| 115 | /// Registers all NS services with the specified service manager. | 111 | /// Registers all NS services with the specified service manager. |
diff --git a/src/core/hle/service/ns/pl_u.cpp b/src/core/hle/service/ns/pl_u.cpp index 5ccec2637..ccc137e40 100644 --- a/src/core/hle/service/ns/pl_u.cpp +++ b/src/core/hle/service/ns/pl_u.cpp | |||
| @@ -141,8 +141,8 @@ struct PL_U::Impl { | |||
| 141 | std::vector<FontRegion> shared_font_regions; | 141 | std::vector<FontRegion> shared_font_regions; |
| 142 | }; | 142 | }; |
| 143 | 143 | ||
| 144 | PL_U::PL_U(Core::System& system) | 144 | PL_U::PL_U(Core::System& system_) |
| 145 | : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()}, system(system) { | 145 | : ServiceFramework{system_, "pl:u"}, impl{std::make_unique<Impl>()} { |
| 146 | // clang-format off | 146 | // clang-format off |
| 147 | static const FunctionInfo functions[] = { | 147 | static const FunctionInfo functions[] = { |
| 148 | {0, &PL_U::RequestLoad, "RequestLoad"}, | 148 | {0, &PL_U::RequestLoad, "RequestLoad"}, |
diff --git a/src/core/hle/service/ns/pl_u.h b/src/core/hle/service/ns/pl_u.h index 27161bd7a..224dcb997 100644 --- a/src/core/hle/service/ns/pl_u.h +++ b/src/core/hle/service/ns/pl_u.h | |||
| @@ -20,7 +20,7 @@ void EncryptSharedFont(const std::vector<u32>& input, std::vector<u8>& output, s | |||
| 20 | 20 | ||
| 21 | class PL_U final : public ServiceFramework<PL_U> { | 21 | class PL_U final : public ServiceFramework<PL_U> { |
| 22 | public: | 22 | public: |
| 23 | explicit PL_U(Core::System& system); | 23 | explicit PL_U(Core::System& system_); |
| 24 | ~PL_U() override; | 24 | ~PL_U() override; |
| 25 | 25 | ||
| 26 | private: | 26 | private: |
| @@ -33,7 +33,6 @@ private: | |||
| 33 | 33 | ||
| 34 | struct Impl; | 34 | struct Impl; |
| 35 | std::unique_ptr<Impl> impl; | 35 | std::unique_ptr<Impl> impl; |
| 36 | Core::System& system; | ||
| 37 | }; | 36 | }; |
| 38 | 37 | ||
| 39 | } // namespace NS | 38 | } // namespace NS |
diff --git a/src/core/hle/service/nvdrv/interface.cpp b/src/core/hle/service/nvdrv/interface.cpp index 7bfa5cac9..d72c531f6 100644 --- a/src/core/hle/service/nvdrv/interface.cpp +++ b/src/core/hle/service/nvdrv/interface.cpp | |||
| @@ -297,8 +297,8 @@ void NVDRV::DumpGraphicsMemoryInfo(Kernel::HLERequestContext& ctx) { | |||
| 297 | rb.Push(RESULT_SUCCESS); | 297 | rb.Push(RESULT_SUCCESS); |
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | NVDRV::NVDRV(std::shared_ptr<Module> nvdrv, const char* name) | 300 | NVDRV::NVDRV(Core::System& system_, std::shared_ptr<Module> nvdrv_, const char* name) |
| 301 | : ServiceFramework(name), nvdrv(std::move(nvdrv)) { | 301 | : ServiceFramework{system_, name}, nvdrv{std::move(nvdrv_)} { |
| 302 | static const FunctionInfo functions[] = { | 302 | static const FunctionInfo functions[] = { |
| 303 | {0, &NVDRV::Open, "Open"}, | 303 | {0, &NVDRV::Open, "Open"}, |
| 304 | {1, &NVDRV::Ioctl1, "Ioctl"}, | 304 | {1, &NVDRV::Ioctl1, "Ioctl"}, |
diff --git a/src/core/hle/service/nvdrv/interface.h b/src/core/hle/service/nvdrv/interface.h index e05f905ae..5c777c59b 100644 --- a/src/core/hle/service/nvdrv/interface.h +++ b/src/core/hle/service/nvdrv/interface.h | |||
| @@ -16,10 +16,10 @@ namespace Service::Nvidia { | |||
| 16 | 16 | ||
| 17 | class NVDRV final : public ServiceFramework<NVDRV> { | 17 | class NVDRV final : public ServiceFramework<NVDRV> { |
| 18 | public: | 18 | public: |
| 19 | NVDRV(std::shared_ptr<Module> nvdrv, const char* name); | 19 | explicit NVDRV(Core::System& system_, std::shared_ptr<Module> nvdrv_, const char* name); |
| 20 | ~NVDRV() override; | 20 | ~NVDRV() override; |
| 21 | 21 | ||
| 22 | void SignalGPUInterruptSyncpt(const u32 syncpoint_id, const u32 value); | 22 | void SignalGPUInterruptSyncpt(u32 syncpoint_id, u32 value); |
| 23 | 23 | ||
| 24 | private: | 24 | private: |
| 25 | void Open(Kernel::HLERequestContext& ctx); | 25 | void Open(Kernel::HLERequestContext& ctx); |
diff --git a/src/core/hle/service/nvdrv/nvdrv.cpp b/src/core/hle/service/nvdrv/nvdrv.cpp index 56d927b12..8e0c9f093 100644 --- a/src/core/hle/service/nvdrv/nvdrv.cpp +++ b/src/core/hle/service/nvdrv/nvdrv.cpp | |||
| @@ -30,11 +30,11 @@ namespace Service::Nvidia { | |||
| 30 | void InstallInterfaces(SM::ServiceManager& service_manager, NVFlinger::NVFlinger& nvflinger, | 30 | void InstallInterfaces(SM::ServiceManager& service_manager, NVFlinger::NVFlinger& nvflinger, |
| 31 | Core::System& system) { | 31 | Core::System& system) { |
| 32 | auto module_ = std::make_shared<Module>(system); | 32 | auto module_ = std::make_shared<Module>(system); |
| 33 | std::make_shared<NVDRV>(module_, "nvdrv")->InstallAsService(service_manager); | 33 | std::make_shared<NVDRV>(system, module_, "nvdrv")->InstallAsService(service_manager); |
| 34 | std::make_shared<NVDRV>(module_, "nvdrv:a")->InstallAsService(service_manager); | 34 | std::make_shared<NVDRV>(system, module_, "nvdrv:a")->InstallAsService(service_manager); |
| 35 | std::make_shared<NVDRV>(module_, "nvdrv:s")->InstallAsService(service_manager); | 35 | std::make_shared<NVDRV>(system, module_, "nvdrv:s")->InstallAsService(service_manager); |
| 36 | std::make_shared<NVDRV>(module_, "nvdrv:t")->InstallAsService(service_manager); | 36 | std::make_shared<NVDRV>(system, module_, "nvdrv:t")->InstallAsService(service_manager); |
| 37 | std::make_shared<NVMEMP>()->InstallAsService(service_manager); | 37 | std::make_shared<NVMEMP>(system)->InstallAsService(service_manager); |
| 38 | nvflinger.SetNVDrvInstance(module_); | 38 | nvflinger.SetNVDrvInstance(module_); |
| 39 | } | 39 | } |
| 40 | 40 | ||
diff --git a/src/core/hle/service/nvdrv/nvdrv.h b/src/core/hle/service/nvdrv/nvdrv.h index bfffc1e88..5985d2179 100644 --- a/src/core/hle/service/nvdrv/nvdrv.h +++ b/src/core/hle/service/nvdrv/nvdrv.h | |||
| @@ -100,7 +100,7 @@ struct EventInterface { | |||
| 100 | 100 | ||
| 101 | class Module final { | 101 | class Module final { |
| 102 | public: | 102 | public: |
| 103 | Module(Core::System& system); | 103 | explicit Module(Core::System& system_); |
| 104 | ~Module(); | 104 | ~Module(); |
| 105 | 105 | ||
| 106 | /// Returns a pointer to one of the available devices, identified by its name. | 106 | /// Returns a pointer to one of the available devices, identified by its name. |
diff --git a/src/core/hle/service/nvdrv/nvmemp.cpp b/src/core/hle/service/nvdrv/nvmemp.cpp index 73b37e805..331c02243 100644 --- a/src/core/hle/service/nvdrv/nvmemp.cpp +++ b/src/core/hle/service/nvdrv/nvmemp.cpp | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | namespace Service::Nvidia { | 9 | namespace Service::Nvidia { |
| 10 | 10 | ||
| 11 | NVMEMP::NVMEMP() : ServiceFramework("nvmemp") { | 11 | NVMEMP::NVMEMP(Core::System& system_) : ServiceFramework{system_, "nvmemp"} { |
| 12 | static const FunctionInfo functions[] = { | 12 | static const FunctionInfo functions[] = { |
| 13 | {0, &NVMEMP::Open, "Open"}, | 13 | {0, &NVMEMP::Open, "Open"}, |
| 14 | {1, &NVMEMP::GetAruid, "GetAruid"}, | 14 | {1, &NVMEMP::GetAruid, "GetAruid"}, |
diff --git a/src/core/hle/service/nvdrv/nvmemp.h b/src/core/hle/service/nvdrv/nvmemp.h index c453ee4db..724c27ef9 100644 --- a/src/core/hle/service/nvdrv/nvmemp.h +++ b/src/core/hle/service/nvdrv/nvmemp.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Nvidia { | 13 | namespace Service::Nvidia { |
| 10 | 14 | ||
| 11 | class NVMEMP final : public ServiceFramework<NVMEMP> { | 15 | class NVMEMP final : public ServiceFramework<NVMEMP> { |
| 12 | public: | 16 | public: |
| 13 | NVMEMP(); | 17 | explicit NVMEMP(Core::System& system_); |
| 14 | ~NVMEMP() override; | 18 | ~NVMEMP() override; |
| 15 | 19 | ||
| 16 | private: | 20 | private: |
diff --git a/src/core/hle/service/olsc/olsc.cpp b/src/core/hle/service/olsc/olsc.cpp index aad4ca706..4440135ed 100644 --- a/src/core/hle/service/olsc/olsc.cpp +++ b/src/core/hle/service/olsc/olsc.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::OLSC { | |||
| 12 | 12 | ||
| 13 | class OLSC final : public ServiceFramework<OLSC> { | 13 | class OLSC final : public ServiceFramework<OLSC> { |
| 14 | public: | 14 | public: |
| 15 | explicit OLSC() : ServiceFramework{"olsc:u"} { | 15 | explicit OLSC(Core::System& system_) : ServiceFramework{system_, "olsc:u"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {0, &OLSC::Initialize, "Initialize"}, | 18 | {0, &OLSC::Initialize, "Initialize"}, |
| @@ -62,8 +62,8 @@ private: | |||
| 62 | bool initialized{}; | 62 | bool initialized{}; |
| 63 | }; | 63 | }; |
| 64 | 64 | ||
| 65 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 65 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 66 | std::make_shared<OLSC>()->InstallAsService(service_manager); | 66 | std::make_shared<OLSC>(system)->InstallAsService(service_manager); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | } // namespace Service::OLSC | 69 | } // namespace Service::OLSC |
diff --git a/src/core/hle/service/olsc/olsc.h b/src/core/hle/service/olsc/olsc.h index edee4376b..24f24ca6b 100644 --- a/src/core/hle/service/olsc/olsc.h +++ b/src/core/hle/service/olsc/olsc.h | |||
| @@ -4,6 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| @@ -11,6 +15,6 @@ class ServiceManager; | |||
| 11 | namespace Service::OLSC { | 15 | namespace Service::OLSC { |
| 12 | 16 | ||
| 13 | /// Registers all SSL services with the specified service manager. | 17 | /// Registers all SSL services with the specified service manager. |
| 14 | void InstallInterfaces(SM::ServiceManager& service_manager); | 18 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
| 15 | 19 | ||
| 16 | } // namespace Service::OLSC | 20 | } // namespace Service::OLSC |
diff --git a/src/core/hle/service/pcie/pcie.cpp b/src/core/hle/service/pcie/pcie.cpp index c568a0adc..80c0fc7ac 100644 --- a/src/core/hle/service/pcie/pcie.cpp +++ b/src/core/hle/service/pcie/pcie.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::PCIe { | |||
| 12 | 12 | ||
| 13 | class ISession final : public ServiceFramework<ISession> { | 13 | class ISession final : public ServiceFramework<ISession> { |
| 14 | public: | 14 | public: |
| 15 | explicit ISession() : ServiceFramework{"ISession"} { | 15 | explicit ISession(Core::System& system_) : ServiceFramework{system_, "ISession"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {0, nullptr, "QueryFunctions"}, | 18 | {0, nullptr, "QueryFunctions"}, |
| @@ -48,7 +48,7 @@ public: | |||
| 48 | 48 | ||
| 49 | class PCIe final : public ServiceFramework<PCIe> { | 49 | class PCIe final : public ServiceFramework<PCIe> { |
| 50 | public: | 50 | public: |
| 51 | explicit PCIe() : ServiceFramework{"pcie"} { | 51 | explicit PCIe(Core::System& system_) : ServiceFramework{system, "pcie"} { |
| 52 | // clang-format off | 52 | // clang-format off |
| 53 | static const FunctionInfo functions[] = { | 53 | static const FunctionInfo functions[] = { |
| 54 | {0, nullptr, "RegisterClassDriver"}, | 54 | {0, nullptr, "RegisterClassDriver"}, |
| @@ -60,8 +60,8 @@ public: | |||
| 60 | } | 60 | } |
| 61 | }; | 61 | }; |
| 62 | 62 | ||
| 63 | void InstallInterfaces(SM::ServiceManager& sm) { | 63 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 64 | std::make_shared<PCIe>()->InstallAsService(sm); | 64 | std::make_shared<PCIe>(system)->InstallAsService(sm); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | } // namespace Service::PCIe | 67 | } // namespace Service::PCIe |
diff --git a/src/core/hle/service/pcie/pcie.h b/src/core/hle/service/pcie/pcie.h index 59c22ca45..e5709a72f 100644 --- a/src/core/hle/service/pcie/pcie.h +++ b/src/core/hle/service/pcie/pcie.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::PCIe { | 15 | namespace Service::PCIe { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::PCIe | 19 | } // namespace Service::PCIe |
diff --git a/src/core/hle/service/pctl/module.cpp b/src/core/hle/service/pctl/module.cpp index caf14ed61..6ab1e4124 100644 --- a/src/core/hle/service/pctl/module.cpp +++ b/src/core/hle/service/pctl/module.cpp | |||
| @@ -11,7 +11,8 @@ namespace Service::PCTL { | |||
| 11 | 11 | ||
| 12 | class IParentalControlService final : public ServiceFramework<IParentalControlService> { | 12 | class IParentalControlService final : public ServiceFramework<IParentalControlService> { |
| 13 | public: | 13 | public: |
| 14 | IParentalControlService() : ServiceFramework("IParentalControlService") { | 14 | explicit IParentalControlService(Core::System& system_) |
| 15 | : ServiceFramework{system_, "IParentalControlService"} { | ||
| 15 | // clang-format off | 16 | // clang-format off |
| 16 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 17 | {1, &IParentalControlService::Initialize, "Initialize"}, | 18 | {1, &IParentalControlService::Initialize, "Initialize"}, |
| @@ -137,7 +138,7 @@ void Module::Interface::CreateService(Kernel::HLERequestContext& ctx) { | |||
| 137 | 138 | ||
| 138 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 139 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 139 | rb.Push(RESULT_SUCCESS); | 140 | rb.Push(RESULT_SUCCESS); |
| 140 | rb.PushIpcInterface<IParentalControlService>(); | 141 | rb.PushIpcInterface<IParentalControlService>(system); |
| 141 | } | 142 | } |
| 142 | 143 | ||
| 143 | void Module::Interface::CreateServiceWithoutInitialize(Kernel::HLERequestContext& ctx) { | 144 | void Module::Interface::CreateServiceWithoutInitialize(Kernel::HLERequestContext& ctx) { |
| @@ -145,20 +146,20 @@ void Module::Interface::CreateServiceWithoutInitialize(Kernel::HLERequestContext | |||
| 145 | 146 | ||
| 146 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 147 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 147 | rb.Push(RESULT_SUCCESS); | 148 | rb.Push(RESULT_SUCCESS); |
| 148 | rb.PushIpcInterface<IParentalControlService>(); | 149 | rb.PushIpcInterface<IParentalControlService>(system); |
| 149 | } | 150 | } |
| 150 | 151 | ||
| 151 | Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) | 152 | Module::Interface::Interface(Core::System& system_, std::shared_ptr<Module> module_, const char* name) |
| 152 | : ServiceFramework(name), module(std::move(module)) {} | 153 | : ServiceFramework{system_, name}, module{std::move(module_)} {} |
| 153 | 154 | ||
| 154 | Module::Interface::~Interface() = default; | 155 | Module::Interface::~Interface() = default; |
| 155 | 156 | ||
| 156 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 157 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 157 | auto module = std::make_shared<Module>(); | 158 | auto module = std::make_shared<Module>(); |
| 158 | std::make_shared<PCTL>(module, "pctl")->InstallAsService(service_manager); | 159 | std::make_shared<PCTL>(system, module, "pctl")->InstallAsService(service_manager); |
| 159 | std::make_shared<PCTL>(module, "pctl:a")->InstallAsService(service_manager); | 160 | std::make_shared<PCTL>(system, module, "pctl:a")->InstallAsService(service_manager); |
| 160 | std::make_shared<PCTL>(module, "pctl:r")->InstallAsService(service_manager); | 161 | std::make_shared<PCTL>(system, module, "pctl:r")->InstallAsService(service_manager); |
| 161 | std::make_shared<PCTL>(module, "pctl:s")->InstallAsService(service_manager); | 162 | std::make_shared<PCTL>(system, module, "pctl:s")->InstallAsService(service_manager); |
| 162 | } | 163 | } |
| 163 | 164 | ||
| 164 | } // namespace Service::PCTL | 165 | } // namespace Service::PCTL |
diff --git a/src/core/hle/service/pctl/module.h b/src/core/hle/service/pctl/module.h index 3e449110d..4c7e09a3b 100644 --- a/src/core/hle/service/pctl/module.h +++ b/src/core/hle/service/pctl/module.h | |||
| @@ -6,13 +6,18 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::PCTL { | 13 | namespace Service::PCTL { |
| 10 | 14 | ||
| 11 | class Module final { | 15 | class Module final { |
| 12 | public: | 16 | public: |
| 13 | class Interface : public ServiceFramework<Interface> { | 17 | class Interface : public ServiceFramework<Interface> { |
| 14 | public: | 18 | public: |
| 15 | explicit Interface(std::shared_ptr<Module> module, const char* name); | 19 | explicit Interface(Core::System& system_, std::shared_ptr<Module> module_, |
| 20 | const char* name); | ||
| 16 | ~Interface() override; | 21 | ~Interface() override; |
| 17 | 22 | ||
| 18 | void CreateService(Kernel::HLERequestContext& ctx); | 23 | void CreateService(Kernel::HLERequestContext& ctx); |
| @@ -24,6 +29,6 @@ public: | |||
| 24 | }; | 29 | }; |
| 25 | 30 | ||
| 26 | /// Registers all PCTL services with the specified service manager. | 31 | /// Registers all PCTL services with the specified service manager. |
| 27 | void InstallInterfaces(SM::ServiceManager& service_manager); | 32 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
| 28 | 33 | ||
| 29 | } // namespace Service::PCTL | 34 | } // namespace Service::PCTL |
diff --git a/src/core/hle/service/pctl/pctl.cpp b/src/core/hle/service/pctl/pctl.cpp index af9d1433a..16dd34f90 100644 --- a/src/core/hle/service/pctl/pctl.cpp +++ b/src/core/hle/service/pctl/pctl.cpp | |||
| @@ -6,8 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::PCTL { | 7 | namespace Service::PCTL { |
| 8 | 8 | ||
| 9 | PCTL::PCTL(std::shared_ptr<Module> module, const char* name) | 9 | PCTL::PCTL(Core::System& system_, std::shared_ptr<Module> module_, const char* name) |
| 10 | : Module::Interface(std::move(module), name) { | 10 | : Interface{system_, std::move(module_), name} { |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, &PCTL::CreateService, "CreateService"}, | 12 | {0, &PCTL::CreateService, "CreateService"}, |
| 13 | {1, &PCTL::CreateServiceWithoutInitialize, "CreateServiceWithoutInitialize"}, | 13 | {1, &PCTL::CreateServiceWithoutInitialize, "CreateServiceWithoutInitialize"}, |
diff --git a/src/core/hle/service/pctl/pctl.h b/src/core/hle/service/pctl/pctl.h index c33ea80b6..275d23007 100644 --- a/src/core/hle/service/pctl/pctl.h +++ b/src/core/hle/service/pctl/pctl.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/pctl/module.h" | 7 | #include "core/hle/service/pctl/module.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::PCTL { | 13 | namespace Service::PCTL { |
| 10 | 14 | ||
| 11 | class PCTL final : public Module::Interface { | 15 | class PCTL final : public Module::Interface { |
| 12 | public: | 16 | public: |
| 13 | explicit PCTL(std::shared_ptr<Module> module, const char* name); | 17 | explicit PCTL(Core::System& system_, std::shared_ptr<Module> module_, const char* name); |
| 14 | ~PCTL() override; | 18 | ~PCTL() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/pcv/pcv.cpp b/src/core/hle/service/pcv/pcv.cpp index 8bfc0276e..68b2c4178 100644 --- a/src/core/hle/service/pcv/pcv.cpp +++ b/src/core/hle/service/pcv/pcv.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::PCV { | |||
| 12 | 12 | ||
| 13 | class PCV final : public ServiceFramework<PCV> { | 13 | class PCV final : public ServiceFramework<PCV> { |
| 14 | public: | 14 | public: |
| 15 | explicit PCV() : ServiceFramework{"pcv"} { | 15 | explicit PCV(Core::System& system_) : ServiceFramework{system_, "pcv"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {0, nullptr, "SetPowerEnabled"}, | 18 | {0, nullptr, "SetPowerEnabled"}, |
| @@ -54,7 +54,7 @@ public: | |||
| 54 | 54 | ||
| 55 | class PCV_ARB final : public ServiceFramework<PCV_ARB> { | 55 | class PCV_ARB final : public ServiceFramework<PCV_ARB> { |
| 56 | public: | 56 | public: |
| 57 | explicit PCV_ARB() : ServiceFramework{"pcv:arb"} { | 57 | explicit PCV_ARB(Core::System& system_) : ServiceFramework{system_, "pcv:arb"} { |
| 58 | // clang-format off | 58 | // clang-format off |
| 59 | static const FunctionInfo functions[] = { | 59 | static const FunctionInfo functions[] = { |
| 60 | {0, nullptr, "ReleaseControl"}, | 60 | {0, nullptr, "ReleaseControl"}, |
| @@ -67,7 +67,7 @@ public: | |||
| 67 | 67 | ||
| 68 | class PCV_IMM final : public ServiceFramework<PCV_IMM> { | 68 | class PCV_IMM final : public ServiceFramework<PCV_IMM> { |
| 69 | public: | 69 | public: |
| 70 | explicit PCV_IMM() : ServiceFramework{"pcv:imm"} { | 70 | explicit PCV_IMM(Core::System& system_) : ServiceFramework{system_, "pcv:imm"} { |
| 71 | // clang-format off | 71 | // clang-format off |
| 72 | static const FunctionInfo functions[] = { | 72 | static const FunctionInfo functions[] = { |
| 73 | {0, nullptr, "SetClockRate"}, | 73 | {0, nullptr, "SetClockRate"}, |
| @@ -78,10 +78,10 @@ public: | |||
| 78 | } | 78 | } |
| 79 | }; | 79 | }; |
| 80 | 80 | ||
| 81 | void InstallInterfaces(SM::ServiceManager& sm) { | 81 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 82 | std::make_shared<PCV>()->InstallAsService(sm); | 82 | std::make_shared<PCV>(system)->InstallAsService(sm); |
| 83 | std::make_shared<PCV_ARB>()->InstallAsService(sm); | 83 | std::make_shared<PCV_ARB>(system)->InstallAsService(sm); |
| 84 | std::make_shared<PCV_IMM>()->InstallAsService(sm); | 84 | std::make_shared<PCV_IMM>(system)->InstallAsService(sm); |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | } // namespace Service::PCV | 87 | } // namespace Service::PCV |
diff --git a/src/core/hle/service/pcv/pcv.h b/src/core/hle/service/pcv/pcv.h index 219a893c3..c61a0b591 100644 --- a/src/core/hle/service/pcv/pcv.h +++ b/src/core/hle/service/pcv/pcv.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::PCV { | 15 | namespace Service::PCV { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::PCV | 19 | } // namespace Service::PCV |
diff --git a/src/core/hle/service/pm/pm.cpp b/src/core/hle/service/pm/pm.cpp index a771a51b4..68736c40c 100644 --- a/src/core/hle/service/pm/pm.cpp +++ b/src/core/hle/service/pm/pm.cpp | |||
| @@ -44,7 +44,7 @@ void GetApplicationPidGeneric(Kernel::HLERequestContext& ctx, | |||
| 44 | 44 | ||
| 45 | class BootMode final : public ServiceFramework<BootMode> { | 45 | class BootMode final : public ServiceFramework<BootMode> { |
| 46 | public: | 46 | public: |
| 47 | explicit BootMode() : ServiceFramework{"pm:bm"} { | 47 | explicit BootMode(Core::System& system_) : ServiceFramework{system_, "pm:bm"} { |
| 48 | static const FunctionInfo functions[] = { | 48 | static const FunctionInfo functions[] = { |
| 49 | {0, &BootMode::GetBootMode, "GetBootMode"}, | 49 | {0, &BootMode::GetBootMode, "GetBootMode"}, |
| 50 | {1, &BootMode::SetMaintenanceBoot, "SetMaintenanceBoot"}, | 50 | {1, &BootMode::SetMaintenanceBoot, "SetMaintenanceBoot"}, |
| @@ -75,8 +75,8 @@ private: | |||
| 75 | 75 | ||
| 76 | class DebugMonitor final : public ServiceFramework<DebugMonitor> { | 76 | class DebugMonitor final : public ServiceFramework<DebugMonitor> { |
| 77 | public: | 77 | public: |
| 78 | explicit DebugMonitor(const Kernel::KernelCore& kernel) | 78 | explicit DebugMonitor(Core::System& system_) |
| 79 | : ServiceFramework{"pm:dmnt"}, kernel(kernel) { | 79 | : ServiceFramework{system_, "pm:dmnt"}, kernel{system_.Kernel()} { |
| 80 | // clang-format off | 80 | // clang-format off |
| 81 | static const FunctionInfo functions[] = { | 81 | static const FunctionInfo functions[] = { |
| 82 | {0, nullptr, "GetJitDebugProcessIdList"}, | 82 | {0, nullptr, "GetJitDebugProcessIdList"}, |
| @@ -125,8 +125,9 @@ private: | |||
| 125 | 125 | ||
| 126 | class Info final : public ServiceFramework<Info> { | 126 | class Info final : public ServiceFramework<Info> { |
| 127 | public: | 127 | public: |
| 128 | explicit Info(const std::vector<std::shared_ptr<Kernel::Process>>& process_list) | 128 | explicit Info(Core::System& system_, |
| 129 | : ServiceFramework{"pm:info"}, process_list(process_list) { | 129 | const std::vector<std::shared_ptr<Kernel::Process>>& process_list_) |
| 130 | : ServiceFramework{system_, "pm:info"}, process_list{process_list_} { | ||
| 130 | static const FunctionInfo functions[] = { | 131 | static const FunctionInfo functions[] = { |
| 131 | {0, &Info::GetTitleId, "GetTitleId"}, | 132 | {0, &Info::GetTitleId, "GetTitleId"}, |
| 132 | }; | 133 | }; |
| @@ -160,8 +161,8 @@ private: | |||
| 160 | 161 | ||
| 161 | class Shell final : public ServiceFramework<Shell> { | 162 | class Shell final : public ServiceFramework<Shell> { |
| 162 | public: | 163 | public: |
| 163 | explicit Shell(const Kernel::KernelCore& kernel) | 164 | explicit Shell(Core::System& system_) |
| 164 | : ServiceFramework{"pm:shell"}, kernel(kernel) { | 165 | : ServiceFramework{system_, "pm:shell"}, kernel{system_.Kernel()} { |
| 165 | // clang-format off | 166 | // clang-format off |
| 166 | static const FunctionInfo functions[] = { | 167 | static const FunctionInfo functions[] = { |
| 167 | {0, nullptr, "LaunchProgram"}, | 168 | {0, nullptr, "LaunchProgram"}, |
| @@ -190,11 +191,11 @@ private: | |||
| 190 | }; | 191 | }; |
| 191 | 192 | ||
| 192 | void InstallInterfaces(Core::System& system) { | 193 | void InstallInterfaces(Core::System& system) { |
| 193 | std::make_shared<BootMode>()->InstallAsService(system.ServiceManager()); | 194 | std::make_shared<BootMode>(system)->InstallAsService(system.ServiceManager()); |
| 194 | std::make_shared<DebugMonitor>(system.Kernel())->InstallAsService(system.ServiceManager()); | 195 | std::make_shared<DebugMonitor>(system)->InstallAsService(system.ServiceManager()); |
| 195 | std::make_shared<Info>(system.Kernel().GetProcessList()) | 196 | std::make_shared<Info>(system, system.Kernel().GetProcessList()) |
| 196 | ->InstallAsService(system.ServiceManager()); | 197 | ->InstallAsService(system.ServiceManager()); |
| 197 | std::make_shared<Shell>(system.Kernel())->InstallAsService(system.ServiceManager()); | 198 | std::make_shared<Shell>(system)->InstallAsService(system.ServiceManager()); |
| 198 | } | 199 | } |
| 199 | 200 | ||
| 200 | } // namespace Service::PM | 201 | } // namespace Service::PM |
diff --git a/src/core/hle/service/prepo/prepo.cpp b/src/core/hle/service/prepo/prepo.cpp index b9ef86b72..392fda73e 100644 --- a/src/core/hle/service/prepo/prepo.cpp +++ b/src/core/hle/service/prepo/prepo.cpp | |||
| @@ -16,8 +16,7 @@ namespace Service::PlayReport { | |||
| 16 | 16 | ||
| 17 | class PlayReport final : public ServiceFramework<PlayReport> { | 17 | class PlayReport final : public ServiceFramework<PlayReport> { |
| 18 | public: | 18 | public: |
| 19 | explicit PlayReport(const char* name, Core::System& system) | 19 | explicit PlayReport(const char* name, Core::System& system_) : ServiceFramework{system_, name} { |
| 20 | : ServiceFramework{name}, system(system) { | ||
| 21 | // clang-format off | 20 | // clang-format off |
| 22 | static const FunctionInfo functions[] = { | 21 | static const FunctionInfo functions[] = { |
| 23 | {10100, &PlayReport::SaveReport<Core::Reporter::PlayReportType::Old>, "SaveReportOld"}, | 22 | {10100, &PlayReport::SaveReport<Core::Reporter::PlayReportType::Old>, "SaveReportOld"}, |
| @@ -140,8 +139,6 @@ private: | |||
| 140 | IPC::ResponseBuilder rb{ctx, 2}; | 139 | IPC::ResponseBuilder rb{ctx, 2}; |
| 141 | rb.Push(RESULT_SUCCESS); | 140 | rb.Push(RESULT_SUCCESS); |
| 142 | } | 141 | } |
| 143 | |||
| 144 | Core::System& system; | ||
| 145 | }; | 142 | }; |
| 146 | 143 | ||
| 147 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { | 144 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
diff --git a/src/core/hle/service/prepo/prepo.h b/src/core/hle/service/prepo/prepo.h index a5682ee26..395b57ead 100644 --- a/src/core/hle/service/prepo/prepo.h +++ b/src/core/hle/service/prepo/prepo.h | |||
| @@ -4,14 +4,14 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Service::SM { | ||
| 8 | class ServiceManager; | ||
| 9 | } | ||
| 10 | |||
| 11 | namespace Core { | 7 | namespace Core { |
| 12 | class System; | 8 | class System; |
| 13 | } | 9 | } |
| 14 | 10 | ||
| 11 | namespace Service::SM { | ||
| 12 | class ServiceManager; | ||
| 13 | } | ||
| 14 | |||
| 15 | namespace Service::PlayReport { | 15 | namespace Service::PlayReport { |
| 16 | 16 | ||
| 17 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); | 17 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
diff --git a/src/core/hle/service/psc/psc.cpp b/src/core/hle/service/psc/psc.cpp index 99e1c9042..5a52b2b05 100644 --- a/src/core/hle/service/psc/psc.cpp +++ b/src/core/hle/service/psc/psc.cpp | |||
| @@ -14,7 +14,7 @@ namespace Service::PSC { | |||
| 14 | 14 | ||
| 15 | class PSC_C final : public ServiceFramework<PSC_C> { | 15 | class PSC_C final : public ServiceFramework<PSC_C> { |
| 16 | public: | 16 | public: |
| 17 | explicit PSC_C() : ServiceFramework{"psc:c"} { | 17 | explicit PSC_C(Core::System& system_) : ServiceFramework{system_, "psc:c"} { |
| 18 | // clang-format off | 18 | // clang-format off |
| 19 | static const FunctionInfo functions[] = { | 19 | static const FunctionInfo functions[] = { |
| 20 | {0, nullptr, "Initialize"}, | 20 | {0, nullptr, "Initialize"}, |
| @@ -35,7 +35,7 @@ public: | |||
| 35 | 35 | ||
| 36 | class IPmModule final : public ServiceFramework<IPmModule> { | 36 | class IPmModule final : public ServiceFramework<IPmModule> { |
| 37 | public: | 37 | public: |
| 38 | explicit IPmModule() : ServiceFramework{"IPmModule"} { | 38 | explicit IPmModule(Core::System& system_) : ServiceFramework{system_, "IPmModule"} { |
| 39 | // clang-format off | 39 | // clang-format off |
| 40 | static const FunctionInfo functions[] = { | 40 | static const FunctionInfo functions[] = { |
| 41 | {0, nullptr, "Initialize"}, | 41 | {0, nullptr, "Initialize"}, |
| @@ -52,7 +52,7 @@ public: | |||
| 52 | 52 | ||
| 53 | class PSC_M final : public ServiceFramework<PSC_M> { | 53 | class PSC_M final : public ServiceFramework<PSC_M> { |
| 54 | public: | 54 | public: |
| 55 | explicit PSC_M() : ServiceFramework{"psc:m"} { | 55 | explicit PSC_M(Core::System& system_) : ServiceFramework{system_, "psc:m"} { |
| 56 | // clang-format off | 56 | // clang-format off |
| 57 | static const FunctionInfo functions[] = { | 57 | static const FunctionInfo functions[] = { |
| 58 | {0, &PSC_M::GetPmModule, "GetPmModule"}, | 58 | {0, &PSC_M::GetPmModule, "GetPmModule"}, |
| @@ -68,13 +68,13 @@ private: | |||
| 68 | 68 | ||
| 69 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 69 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 70 | rb.Push(RESULT_SUCCESS); | 70 | rb.Push(RESULT_SUCCESS); |
| 71 | rb.PushIpcInterface<IPmModule>(); | 71 | rb.PushIpcInterface<IPmModule>(system); |
| 72 | } | 72 | } |
| 73 | }; | 73 | }; |
| 74 | 74 | ||
| 75 | void InstallInterfaces(SM::ServiceManager& sm) { | 75 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 76 | std::make_shared<PSC_C>()->InstallAsService(sm); | 76 | std::make_shared<PSC_C>(system)->InstallAsService(sm); |
| 77 | std::make_shared<PSC_M>()->InstallAsService(sm); | 77 | std::make_shared<PSC_M>(system)->InstallAsService(sm); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | } // namespace Service::PSC | 80 | } // namespace Service::PSC |
diff --git a/src/core/hle/service/psc/psc.h b/src/core/hle/service/psc/psc.h index 5052eb02c..89344f32d 100644 --- a/src/core/hle/service/psc/psc.h +++ b/src/core/hle/service/psc/psc.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::PSC { | 15 | namespace Service::PSC { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::PSC | 19 | } // namespace Service::PSC |
diff --git a/src/core/hle/service/ptm/psm.cpp b/src/core/hle/service/ptm/psm.cpp index 6d9e6bd09..b4b0dd241 100644 --- a/src/core/hle/service/ptm/psm.cpp +++ b/src/core/hle/service/ptm/psm.cpp | |||
| @@ -14,7 +14,7 @@ namespace Service::PSM { | |||
| 14 | 14 | ||
| 15 | class PSM final : public ServiceFramework<PSM> { | 15 | class PSM final : public ServiceFramework<PSM> { |
| 16 | public: | 16 | public: |
| 17 | explicit PSM() : ServiceFramework{"psm"} { | 17 | explicit PSM(Core::System& system_) : ServiceFramework{system_, "psm"} { |
| 18 | // clang-format off | 18 | // clang-format off |
| 19 | static const FunctionInfo functions[] = { | 19 | static const FunctionInfo functions[] = { |
| 20 | {0, &PSM::GetBatteryChargePercentage, "GetBatteryChargePercentage"}, | 20 | {0, &PSM::GetBatteryChargePercentage, "GetBatteryChargePercentage"}, |
| @@ -72,8 +72,8 @@ private: | |||
| 72 | ChargerType charger_type{ChargerType::RegularCharger}; | 72 | ChargerType charger_type{ChargerType::RegularCharger}; |
| 73 | }; | 73 | }; |
| 74 | 74 | ||
| 75 | void InstallInterfaces(SM::ServiceManager& sm) { | 75 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 76 | std::make_shared<PSM>()->InstallAsService(sm); | 76 | std::make_shared<PSM>(system)->InstallAsService(sm); |
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | } // namespace Service::PSM | 79 | } // namespace Service::PSM |
diff --git a/src/core/hle/service/ptm/psm.h b/src/core/hle/service/ptm/psm.h index a286793ae..2930ce26a 100644 --- a/src/core/hle/service/ptm/psm.h +++ b/src/core/hle/service/ptm/psm.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::PSM { | 15 | namespace Service::PSM { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::PSM | 19 | } // namespace Service::PSM |
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index fb4979af2..360e0bf37 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -90,9 +90,10 @@ namespace Service { | |||
| 90 | return function_string; | 90 | return function_string; |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | ServiceFrameworkBase::ServiceFrameworkBase(const char* service_name, u32 max_sessions, | 93 | ServiceFrameworkBase::ServiceFrameworkBase(Core::System& system_, const char* service_name_, |
| 94 | InvokerFn* handler_invoker) | 94 | u32 max_sessions_, InvokerFn* handler_invoker_) |
| 95 | : service_name(service_name), max_sessions(max_sessions), handler_invoker(handler_invoker) {} | 95 | : system{system_}, service_name{service_name_}, max_sessions{max_sessions_}, |
| 96 | handler_invoker{handler_invoker_} {} | ||
| 96 | 97 | ||
| 97 | ServiceFrameworkBase::~ServiceFrameworkBase() = default; | 98 | ServiceFrameworkBase::~ServiceFrameworkBase() = default; |
| 98 | 99 | ||
| @@ -146,8 +147,8 @@ void ServiceFrameworkBase::ReportUnimplementedFunction(Kernel::HLERequestContext | |||
| 146 | } | 147 | } |
| 147 | buf.push_back('}'); | 148 | buf.push_back('}'); |
| 148 | 149 | ||
| 149 | Core::System::GetInstance().GetReporter().SaveUnimplementedFunctionReport( | 150 | system.GetReporter().SaveUnimplementedFunctionReport(ctx, ctx.GetCommand(), function_name, |
| 150 | ctx, ctx.GetCommand(), function_name, service_name); | 151 | service_name); |
| 151 | UNIMPLEMENTED_MSG("Unknown / unimplemented {}", fmt::to_string(buf)); | 152 | UNIMPLEMENTED_MSG("Unknown / unimplemented {}", fmt::to_string(buf)); |
| 152 | } | 153 | } |
| 153 | 154 | ||
| @@ -171,7 +172,7 @@ ResultCode ServiceFrameworkBase::HandleSyncRequest(Kernel::HLERequestContext& co | |||
| 171 | } | 172 | } |
| 172 | case IPC::CommandType::ControlWithContext: | 173 | case IPC::CommandType::ControlWithContext: |
| 173 | case IPC::CommandType::Control: { | 174 | case IPC::CommandType::Control: { |
| 174 | Core::System::GetInstance().ServiceManager().InvokeControlRequest(context); | 175 | system.ServiceManager().InvokeControlRequest(context); |
| 175 | break; | 176 | break; |
| 176 | } | 177 | } |
| 177 | case IPC::CommandType::RequestWithContext: | 178 | case IPC::CommandType::RequestWithContext: |
| @@ -197,7 +198,7 @@ Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system | |||
| 197 | 198 | ||
| 198 | system.GetFileSystemController().CreateFactories(*system.GetFilesystem(), false); | 199 | system.GetFileSystemController().CreateFactories(*system.GetFilesystem(), false); |
| 199 | 200 | ||
| 200 | SM::ServiceManager::InstallInterfaces(sm, system.Kernel()); | 201 | SM::ServiceManager::InstallInterfaces(sm, system); |
| 201 | 202 | ||
| 202 | Account::InstallInterfaces(system); | 203 | Account::InstallInterfaces(system); |
| 203 | AM::InstallInterfaces(*sm, *nv_flinger, system); | 204 | AM::InstallInterfaces(*sm, *nv_flinger, system); |
| @@ -205,51 +206,51 @@ Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system | |||
| 205 | APM::InstallInterfaces(system); | 206 | APM::InstallInterfaces(system); |
| 206 | Audio::InstallInterfaces(*sm, system); | 207 | Audio::InstallInterfaces(*sm, system); |
| 207 | BCAT::InstallInterfaces(system); | 208 | BCAT::InstallInterfaces(system); |
| 208 | BPC::InstallInterfaces(*sm); | 209 | BPC::InstallInterfaces(*sm, system); |
| 209 | BtDrv::InstallInterfaces(*sm, system); | 210 | BtDrv::InstallInterfaces(*sm, system); |
| 210 | BTM::InstallInterfaces(*sm, system); | 211 | BTM::InstallInterfaces(*sm, system); |
| 211 | Capture::InstallInterfaces(*sm); | 212 | Capture::InstallInterfaces(*sm, system); |
| 212 | ERPT::InstallInterfaces(*sm); | 213 | ERPT::InstallInterfaces(*sm, system); |
| 213 | ES::InstallInterfaces(*sm); | 214 | ES::InstallInterfaces(*sm, system); |
| 214 | EUPLD::InstallInterfaces(*sm); | 215 | EUPLD::InstallInterfaces(*sm, system); |
| 215 | Fatal::InstallInterfaces(*sm, system); | 216 | Fatal::InstallInterfaces(*sm, system); |
| 216 | FGM::InstallInterfaces(*sm); | 217 | FGM::InstallInterfaces(*sm, system); |
| 217 | FileSystem::InstallInterfaces(system); | 218 | FileSystem::InstallInterfaces(system); |
| 218 | Friend::InstallInterfaces(*sm, system); | 219 | Friend::InstallInterfaces(*sm, system); |
| 219 | Glue::InstallInterfaces(system); | 220 | Glue::InstallInterfaces(system); |
| 220 | GRC::InstallInterfaces(*sm); | 221 | GRC::InstallInterfaces(*sm, system); |
| 221 | HID::InstallInterfaces(*sm, system); | 222 | HID::InstallInterfaces(*sm, system); |
| 222 | LBL::InstallInterfaces(*sm); | 223 | LBL::InstallInterfaces(*sm, system); |
| 223 | LDN::InstallInterfaces(*sm); | 224 | LDN::InstallInterfaces(*sm, system); |
| 224 | LDR::InstallInterfaces(*sm, system); | 225 | LDR::InstallInterfaces(*sm, system); |
| 225 | LM::InstallInterfaces(system); | 226 | LM::InstallInterfaces(system); |
| 226 | Migration::InstallInterfaces(*sm); | 227 | Migration::InstallInterfaces(*sm, system); |
| 227 | Mii::InstallInterfaces(*sm); | 228 | Mii::InstallInterfaces(*sm, system); |
| 228 | MM::InstallInterfaces(*sm); | 229 | MM::InstallInterfaces(*sm, system); |
| 229 | NCM::InstallInterfaces(*sm); | 230 | NCM::InstallInterfaces(*sm, system); |
| 230 | NFC::InstallInterfaces(*sm); | 231 | NFC::InstallInterfaces(*sm, system); |
| 231 | NFP::InstallInterfaces(*sm, system); | 232 | NFP::InstallInterfaces(*sm, system); |
| 232 | NIFM::InstallInterfaces(*sm, system); | 233 | NIFM::InstallInterfaces(*sm, system); |
| 233 | NIM::InstallInterfaces(*sm, system); | 234 | NIM::InstallInterfaces(*sm, system); |
| 234 | NPNS::InstallInterfaces(*sm); | 235 | NPNS::InstallInterfaces(*sm, system); |
| 235 | NS::InstallInterfaces(*sm, system); | 236 | NS::InstallInterfaces(*sm, system); |
| 236 | Nvidia::InstallInterfaces(*sm, *nv_flinger, system); | 237 | Nvidia::InstallInterfaces(*sm, *nv_flinger, system); |
| 237 | OLSC::InstallInterfaces(*sm); | 238 | OLSC::InstallInterfaces(*sm, system); |
| 238 | PCIe::InstallInterfaces(*sm); | 239 | PCIe::InstallInterfaces(*sm, system); |
| 239 | PCTL::InstallInterfaces(*sm); | 240 | PCTL::InstallInterfaces(*sm, system); |
| 240 | PCV::InstallInterfaces(*sm); | 241 | PCV::InstallInterfaces(*sm, system); |
| 241 | PlayReport::InstallInterfaces(*sm, system); | 242 | PlayReport::InstallInterfaces(*sm, system); |
| 242 | PM::InstallInterfaces(system); | 243 | PM::InstallInterfaces(system); |
| 243 | PSC::InstallInterfaces(*sm); | 244 | PSC::InstallInterfaces(*sm, system); |
| 244 | PSM::InstallInterfaces(*sm); | 245 | PSM::InstallInterfaces(*sm, system); |
| 245 | Set::InstallInterfaces(*sm); | 246 | Set::InstallInterfaces(*sm, system); |
| 246 | Sockets::InstallInterfaces(*sm, system); | 247 | Sockets::InstallInterfaces(*sm, system); |
| 247 | SPL::InstallInterfaces(*sm); | 248 | SPL::InstallInterfaces(*sm, system); |
| 248 | SSL::InstallInterfaces(*sm); | 249 | SSL::InstallInterfaces(*sm, system); |
| 249 | Time::InstallInterfaces(system); | 250 | Time::InstallInterfaces(system); |
| 250 | USB::InstallInterfaces(*sm); | 251 | USB::InstallInterfaces(*sm, system); |
| 251 | VI::InstallInterfaces(*sm, *nv_flinger); | 252 | VI::InstallInterfaces(*sm, system, *nv_flinger); |
| 252 | WLAN::InstallInterfaces(*sm); | 253 | WLAN::InstallInterfaces(*sm, system); |
| 253 | } | 254 | } |
| 254 | 255 | ||
| 255 | Services::~Services() = default; | 256 | Services::~Services() = default; |
diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h index ed4792289..62a182310 100644 --- a/src/core/hle/service/service.h +++ b/src/core/hle/service/service.h | |||
| @@ -80,6 +80,9 @@ protected: | |||
| 80 | template <typename Self> | 80 | template <typename Self> |
| 81 | using HandlerFnP = void (Self::*)(Kernel::HLERequestContext&); | 81 | using HandlerFnP = void (Self::*)(Kernel::HLERequestContext&); |
| 82 | 82 | ||
| 83 | /// System context that the service operates under. | ||
| 84 | Core::System& system; | ||
| 85 | |||
| 83 | private: | 86 | private: |
| 84 | template <typename T> | 87 | template <typename T> |
| 85 | friend class ServiceFramework; | 88 | friend class ServiceFramework; |
| @@ -93,7 +96,8 @@ private: | |||
| 93 | using InvokerFn = void(ServiceFrameworkBase* object, HandlerFnP<ServiceFrameworkBase> member, | 96 | using InvokerFn = void(ServiceFrameworkBase* object, HandlerFnP<ServiceFrameworkBase> member, |
| 94 | Kernel::HLERequestContext& ctx); | 97 | Kernel::HLERequestContext& ctx); |
| 95 | 98 | ||
| 96 | ServiceFrameworkBase(const char* service_name, u32 max_sessions, InvokerFn* handler_invoker); | 99 | explicit ServiceFrameworkBase(Core::System& system_, const char* service_name_, |
| 100 | u32 max_sessions_, InvokerFn* handler_invoker_); | ||
| 97 | ~ServiceFrameworkBase() override; | 101 | ~ServiceFrameworkBase() override; |
| 98 | 102 | ||
| 99 | void RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n); | 103 | void RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n); |
| @@ -151,11 +155,15 @@ protected: | |||
| 151 | 155 | ||
| 152 | /** | 156 | /** |
| 153 | * Initializes the handler with no functions installed. | 157 | * Initializes the handler with no functions installed. |
| 154 | * @param max_sessions Maximum number of sessions that can be | 158 | * |
| 155 | * connected to this service at the same time. | 159 | * @param system_ The system context to construct this service under. |
| 160 | * @param service_name_ Name of the service. | ||
| 161 | * @param max_sessions_ Maximum number of sessions that can be | ||
| 162 | * connected to this service at the same time. | ||
| 156 | */ | 163 | */ |
| 157 | explicit ServiceFramework(const char* service_name, u32 max_sessions = DefaultMaxSessions) | 164 | explicit ServiceFramework(Core::System& system_, const char* service_name_, |
| 158 | : ServiceFrameworkBase(service_name, max_sessions, Invoker) {} | 165 | u32 max_sessions_ = DefaultMaxSessions) |
| 166 | : ServiceFrameworkBase(system_, service_name_, max_sessions_, Invoker) {} | ||
| 159 | 167 | ||
| 160 | /// Registers handlers in the service. | 168 | /// Registers handlers in the service. |
| 161 | template <std::size_t N> | 169 | template <std::size_t N> |
diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp index ffbf90b00..d953b4303 100644 --- a/src/core/hle/service/set/set.cpp +++ b/src/core/hle/service/set/set.cpp | |||
| @@ -188,7 +188,7 @@ void SET::GetKeyCodeMap2(Kernel::HLERequestContext& ctx) { | |||
| 188 | GetKeyCodeMapImpl(ctx); | 188 | GetKeyCodeMapImpl(ctx); |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | SET::SET() : ServiceFramework("set") { | 191 | SET::SET(Core::System& system_) : ServiceFramework{system_, "set"} { |
| 192 | // clang-format off | 192 | // clang-format off |
| 193 | static const FunctionInfo functions[] = { | 193 | static const FunctionInfo functions[] = { |
| 194 | {0, &SET::GetLanguageCode, "GetLanguageCode"}, | 194 | {0, &SET::GetLanguageCode, "GetLanguageCode"}, |
diff --git a/src/core/hle/service/set/set.h b/src/core/hle/service/set/set.h index 8ac9c169d..d5bd7828d 100644 --- a/src/core/hle/service/set/set.h +++ b/src/core/hle/service/set/set.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Set { | 13 | namespace Service::Set { |
| 10 | 14 | ||
| 11 | /// This is "nn::settings::LanguageCode", which is a NUL-terminated string stored in a u64. | 15 | /// This is "nn::settings::LanguageCode", which is a NUL-terminated string stored in a u64. |
| @@ -32,7 +36,7 @@ LanguageCode GetLanguageCodeFromIndex(std::size_t idx); | |||
| 32 | 36 | ||
| 33 | class SET final : public ServiceFramework<SET> { | 37 | class SET final : public ServiceFramework<SET> { |
| 34 | public: | 38 | public: |
| 35 | explicit SET(); | 39 | explicit SET(Core::System& system_); |
| 36 | ~SET() override; | 40 | ~SET() override; |
| 37 | 41 | ||
| 38 | private: | 42 | private: |
diff --git a/src/core/hle/service/set/set_cal.cpp b/src/core/hle/service/set/set_cal.cpp index 3fbfecc9e..b2aa7bc0c 100644 --- a/src/core/hle/service/set/set_cal.cpp +++ b/src/core/hle/service/set/set_cal.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Set { | 7 | namespace Service::Set { |
| 8 | 8 | ||
| 9 | SET_CAL::SET_CAL() : ServiceFramework("set:cal") { | 9 | SET_CAL::SET_CAL(Core::System& system_) : ServiceFramework{system_, "set:cal"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "GetBluetoothBdAddress"}, | 12 | {0, nullptr, "GetBluetoothBdAddress"}, |
diff --git a/src/core/hle/service/set/set_cal.h b/src/core/hle/service/set/set_cal.h index a0677e815..a29fc3ddd 100644 --- a/src/core/hle/service/set/set_cal.h +++ b/src/core/hle/service/set/set_cal.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Set { | 13 | namespace Service::Set { |
| 10 | 14 | ||
| 11 | class SET_CAL final : public ServiceFramework<SET_CAL> { | 15 | class SET_CAL final : public ServiceFramework<SET_CAL> { |
| 12 | public: | 16 | public: |
| 13 | explicit SET_CAL(); | 17 | explicit SET_CAL(Core::System& system_); |
| 14 | ~SET_CAL() override; | 18 | ~SET_CAL() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/set/set_fd.cpp b/src/core/hle/service/set/set_fd.cpp index 565882a31..f04dc5047 100644 --- a/src/core/hle/service/set/set_fd.cpp +++ b/src/core/hle/service/set/set_fd.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Set { | 7 | namespace Service::Set { |
| 8 | 8 | ||
| 9 | SET_FD::SET_FD() : ServiceFramework("set:fd") { | 9 | SET_FD::SET_FD(Core::System& system_) : ServiceFramework{system_, "set:fd"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {2, nullptr, "SetSettingsItemValue"}, | 12 | {2, nullptr, "SetSettingsItemValue"}, |
diff --git a/src/core/hle/service/set/set_fd.h b/src/core/hle/service/set/set_fd.h index 216e65f1f..c28cb301e 100644 --- a/src/core/hle/service/set/set_fd.h +++ b/src/core/hle/service/set/set_fd.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Set { | 13 | namespace Service::Set { |
| 10 | 14 | ||
| 11 | class SET_FD final : public ServiceFramework<SET_FD> { | 15 | class SET_FD final : public ServiceFramework<SET_FD> { |
| 12 | public: | 16 | public: |
| 13 | explicit SET_FD(); | 17 | explicit SET_FD(Core::System& system_); |
| 14 | ~SET_FD() override; | 18 | ~SET_FD() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/set/set_sys.cpp b/src/core/hle/service/set/set_sys.cpp index 080b5743e..19b8f113d 100644 --- a/src/core/hle/service/set/set_sys.cpp +++ b/src/core/hle/service/set/set_sys.cpp | |||
| @@ -103,7 +103,7 @@ void SET_SYS::SetColorSetId(Kernel::HLERequestContext& ctx) { | |||
| 103 | rb.Push(RESULT_SUCCESS); | 103 | rb.Push(RESULT_SUCCESS); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | SET_SYS::SET_SYS() : ServiceFramework("set:sys") { | 106 | SET_SYS::SET_SYS(Core::System& system_) : ServiceFramework{system_, "set:sys"} { |
| 107 | // clang-format off | 107 | // clang-format off |
| 108 | static const FunctionInfo functions[] = { | 108 | static const FunctionInfo functions[] = { |
| 109 | {0, nullptr, "SetLanguageCode"}, | 109 | {0, nullptr, "SetLanguageCode"}, |
diff --git a/src/core/hle/service/set/set_sys.h b/src/core/hle/service/set/set_sys.h index 13ee2cf46..edb185a68 100644 --- a/src/core/hle/service/set/set_sys.h +++ b/src/core/hle/service/set/set_sys.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Set { | 13 | namespace Service::Set { |
| 10 | 14 | ||
| 11 | class SET_SYS final : public ServiceFramework<SET_SYS> { | 15 | class SET_SYS final : public ServiceFramework<SET_SYS> { |
| 12 | public: | 16 | public: |
| 13 | explicit SET_SYS(); | 17 | explicit SET_SYS(Core::System& system_); |
| 14 | ~SET_SYS() override; | 18 | ~SET_SYS() override; |
| 15 | 19 | ||
| 16 | private: | 20 | private: |
diff --git a/src/core/hle/service/set/settings.cpp b/src/core/hle/service/set/settings.cpp index cf5541ca8..212ebc427 100644 --- a/src/core/hle/service/set/settings.cpp +++ b/src/core/hle/service/set/settings.cpp | |||
| @@ -7,14 +7,15 @@ | |||
| 7 | #include "core/hle/service/set/set_fd.h" | 7 | #include "core/hle/service/set/set_fd.h" |
| 8 | #include "core/hle/service/set/set_sys.h" | 8 | #include "core/hle/service/set/set_sys.h" |
| 9 | #include "core/hle/service/set/settings.h" | 9 | #include "core/hle/service/set/settings.h" |
| 10 | #include "core/hle/service/sm/sm.h" | ||
| 10 | 11 | ||
| 11 | namespace Service::Set { | 12 | namespace Service::Set { |
| 12 | 13 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 14 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 14 | std::make_shared<SET>()->InstallAsService(service_manager); | 15 | std::make_shared<SET>(system)->InstallAsService(service_manager); |
| 15 | std::make_shared<SET_CAL>()->InstallAsService(service_manager); | 16 | std::make_shared<SET_CAL>(system)->InstallAsService(service_manager); |
| 16 | std::make_shared<SET_FD>()->InstallAsService(service_manager); | 17 | std::make_shared<SET_FD>(system)->InstallAsService(service_manager); |
| 17 | std::make_shared<SET_SYS>()->InstallAsService(service_manager); | 18 | std::make_shared<SET_SYS>(system)->InstallAsService(service_manager); |
| 18 | } | 19 | } |
| 19 | 20 | ||
| 20 | } // namespace Service::Set | 21 | } // namespace Service::Set |
diff --git a/src/core/hle/service/set/settings.h b/src/core/hle/service/set/settings.h index 6606ce776..7a6950dd0 100644 --- a/src/core/hle/service/set/settings.h +++ b/src/core/hle/service/set/settings.h | |||
| @@ -4,11 +4,17 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | namespace Core { |
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 11 | namespace Service::SM { | ||
| 12 | class ServiceManager; | ||
| 13 | } | ||
| 8 | 14 | ||
| 9 | namespace Service::Set { | 15 | namespace Service::Set { |
| 10 | 16 | ||
| 11 | /// Registers all Settings services with the specified service manager. | 17 | /// Registers all Settings services with the specified service manager. |
| 12 | void InstallInterfaces(SM::ServiceManager& service_manager); | 18 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
| 13 | 19 | ||
| 14 | } // namespace Service::Set | 20 | } // namespace Service::Set |
diff --git a/src/core/hle/service/sm/controller.cpp b/src/core/hle/service/sm/controller.cpp index 972aaa6d9..916177efd 100644 --- a/src/core/hle/service/sm/controller.cpp +++ b/src/core/hle/service/sm/controller.cpp | |||
| @@ -48,7 +48,7 @@ void Controller::QueryPointerBufferSize(Kernel::HLERequestContext& ctx) { | |||
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | // https://switchbrew.org/wiki/IPC_Marshalling | 50 | // https://switchbrew.org/wiki/IPC_Marshalling |
| 51 | Controller::Controller() : ServiceFramework("IpcController") { | 51 | Controller::Controller(Core::System& system_) : ServiceFramework{system_, "IpcController"} { |
| 52 | static const FunctionInfo functions[] = { | 52 | static const FunctionInfo functions[] = { |
| 53 | {0, &Controller::ConvertCurrentObjectToDomain, "ConvertCurrentObjectToDomain"}, | 53 | {0, &Controller::ConvertCurrentObjectToDomain, "ConvertCurrentObjectToDomain"}, |
| 54 | {1, nullptr, "CopyFromCurrentDomain"}, | 54 | {1, nullptr, "CopyFromCurrentDomain"}, |
diff --git a/src/core/hle/service/sm/controller.h b/src/core/hle/service/sm/controller.h index 180c6da50..7494f898d 100644 --- a/src/core/hle/service/sm/controller.h +++ b/src/core/hle/service/sm/controller.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::SM { | 13 | namespace Service::SM { |
| 10 | 14 | ||
| 11 | class Controller final : public ServiceFramework<Controller> { | 15 | class Controller final : public ServiceFramework<Controller> { |
| 12 | public: | 16 | public: |
| 13 | Controller(); | 17 | explicit Controller(Core::System& system_); |
| 14 | ~Controller() override; | 18 | ~Controller() override; |
| 15 | 19 | ||
| 16 | private: | 20 | private: |
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp index 9c1da361b..4da69f503 100644 --- a/src/core/hle/service/sm/sm.cpp +++ b/src/core/hle/service/sm/sm.cpp | |||
| @@ -38,14 +38,13 @@ static ResultCode ValidateServiceName(const std::string& name) { | |||
| 38 | return RESULT_SUCCESS; | 38 | return RESULT_SUCCESS; |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | void ServiceManager::InstallInterfaces(std::shared_ptr<ServiceManager> self, | 41 | void ServiceManager::InstallInterfaces(std::shared_ptr<ServiceManager> self, Core::System& system) { |
| 42 | Kernel::KernelCore& kernel) { | ||
| 43 | ASSERT(self->sm_interface.expired()); | 42 | ASSERT(self->sm_interface.expired()); |
| 44 | 43 | ||
| 45 | auto sm = std::make_shared<SM>(self, kernel); | 44 | auto sm = std::make_shared<SM>(self, system); |
| 46 | sm->InstallAsNamedPort(kernel); | 45 | sm->InstallAsNamedPort(system.Kernel()); |
| 47 | self->sm_interface = sm; | 46 | self->sm_interface = sm; |
| 48 | self->controller_interface = std::make_unique<Controller>(); | 47 | self->controller_interface = std::make_unique<Controller>(system); |
| 49 | } | 48 | } |
| 50 | 49 | ||
| 51 | ResultVal<std::shared_ptr<Kernel::ServerPort>> ServiceManager::RegisterService(std::string name, | 50 | ResultVal<std::shared_ptr<Kernel::ServerPort>> ServiceManager::RegisterService(std::string name, |
| @@ -190,8 +189,9 @@ void SM::UnregisterService(Kernel::HLERequestContext& ctx) { | |||
| 190 | rb.Push(service_manager->UnregisterService(name)); | 189 | rb.Push(service_manager->UnregisterService(name)); |
| 191 | } | 190 | } |
| 192 | 191 | ||
| 193 | SM::SM(std::shared_ptr<ServiceManager> service_manager, Kernel::KernelCore& kernel) | 192 | SM::SM(std::shared_ptr<ServiceManager> service_manager_, Core::System& system_) |
| 194 | : ServiceFramework{"sm:", 4}, service_manager{std::move(service_manager)}, kernel{kernel} { | 193 | : ServiceFramework{system_, "sm:", 4}, |
| 194 | service_manager{std::move(service_manager_)}, kernel{system_.Kernel()} { | ||
| 195 | static const FunctionInfo functions[] = { | 195 | static const FunctionInfo functions[] = { |
| 196 | {0x00000000, &SM::Initialize, "Initialize"}, | 196 | {0x00000000, &SM::Initialize, "Initialize"}, |
| 197 | {0x00000001, &SM::GetService, "GetService"}, | 197 | {0x00000001, &SM::GetService, "GetService"}, |
diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index 6790c86f0..3f46ae44f 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h | |||
| @@ -16,6 +16,10 @@ | |||
| 16 | #include "core/hle/result.h" | 16 | #include "core/hle/result.h" |
| 17 | #include "core/hle/service/service.h" | 17 | #include "core/hle/service/service.h" |
| 18 | 18 | ||
| 19 | namespace Core { | ||
| 20 | class System; | ||
| 21 | } | ||
| 22 | |||
| 19 | namespace Kernel { | 23 | namespace Kernel { |
| 20 | class ClientPort; | 24 | class ClientPort; |
| 21 | class ClientSession; | 25 | class ClientSession; |
| @@ -31,7 +35,7 @@ class Controller; | |||
| 31 | /// Interface to "sm:" service | 35 | /// Interface to "sm:" service |
| 32 | class SM final : public ServiceFramework<SM> { | 36 | class SM final : public ServiceFramework<SM> { |
| 33 | public: | 37 | public: |
| 34 | explicit SM(std::shared_ptr<ServiceManager> service_manager, Kernel::KernelCore& kernel); | 38 | explicit SM(std::shared_ptr<ServiceManager> service_manager_, Core::System& system_); |
| 35 | ~SM() override; | 39 | ~SM() override; |
| 36 | 40 | ||
| 37 | private: | 41 | private: |
| @@ -46,7 +50,7 @@ private: | |||
| 46 | 50 | ||
| 47 | class ServiceManager { | 51 | class ServiceManager { |
| 48 | public: | 52 | public: |
| 49 | static void InstallInterfaces(std::shared_ptr<ServiceManager> self, Kernel::KernelCore& kernel); | 53 | static void InstallInterfaces(std::shared_ptr<ServiceManager> self, Core::System& system); |
| 50 | 54 | ||
| 51 | explicit ServiceManager(Kernel::KernelCore& kernel_); | 55 | explicit ServiceManager(Kernel::KernelCore& kernel_); |
| 52 | ~ServiceManager(); | 56 | ~ServiceManager(); |
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp index a74be9370..a9875b9a6 100644 --- a/src/core/hle/service/sockets/bsd.cpp +++ b/src/core/hle/service/sockets/bsd.cpp | |||
| @@ -827,8 +827,8 @@ void BSD::BuildErrnoResponse(Kernel::HLERequestContext& ctx, Errno bsd_errno) co | |||
| 827 | rb.PushEnum(bsd_errno); | 827 | rb.PushEnum(bsd_errno); |
| 828 | } | 828 | } |
| 829 | 829 | ||
| 830 | BSD::BSD(Core::System& system, const char* name) | 830 | BSD::BSD(Core::System& system_, const char* name) |
| 831 | : ServiceFramework(name), worker_pool{system, this} { | 831 | : ServiceFramework{system_, name}, worker_pool{system_, this} { |
| 832 | // clang-format off | 832 | // clang-format off |
| 833 | static const FunctionInfo functions[] = { | 833 | static const FunctionInfo functions[] = { |
| 834 | {0, &BSD::RegisterClient, "RegisterClient"}, | 834 | {0, &BSD::RegisterClient, "RegisterClient"}, |
| @@ -873,7 +873,7 @@ BSD::BSD(Core::System& system, const char* name) | |||
| 873 | 873 | ||
| 874 | BSD::~BSD() = default; | 874 | BSD::~BSD() = default; |
| 875 | 875 | ||
| 876 | BSDCFG::BSDCFG() : ServiceFramework{"bsdcfg"} { | 876 | BSDCFG::BSDCFG(Core::System& system_) : ServiceFramework{system_, "bsdcfg"} { |
| 877 | // clang-format off | 877 | // clang-format off |
| 878 | static const FunctionInfo functions[] = { | 878 | static const FunctionInfo functions[] = { |
| 879 | {0, nullptr, "SetIfUp"}, | 879 | {0, nullptr, "SetIfUp"}, |
diff --git a/src/core/hle/service/sockets/bsd.h b/src/core/hle/service/sockets/bsd.h index 357531951..f14713fc4 100644 --- a/src/core/hle/service/sockets/bsd.h +++ b/src/core/hle/service/sockets/bsd.h | |||
| @@ -26,7 +26,7 @@ namespace Service::Sockets { | |||
| 26 | 26 | ||
| 27 | class BSD final : public ServiceFramework<BSD> { | 27 | class BSD final : public ServiceFramework<BSD> { |
| 28 | public: | 28 | public: |
| 29 | explicit BSD(Core::System& system, const char* name); | 29 | explicit BSD(Core::System& system_, const char* name); |
| 30 | ~BSD() override; | 30 | ~BSD() override; |
| 31 | 31 | ||
| 32 | private: | 32 | private: |
| @@ -176,7 +176,7 @@ private: | |||
| 176 | 176 | ||
| 177 | class BSDCFG final : public ServiceFramework<BSDCFG> { | 177 | class BSDCFG final : public ServiceFramework<BSDCFG> { |
| 178 | public: | 178 | public: |
| 179 | explicit BSDCFG(); | 179 | explicit BSDCFG(Core::System& system_); |
| 180 | ~BSDCFG() override; | 180 | ~BSDCFG() override; |
| 181 | }; | 181 | }; |
| 182 | 182 | ||
diff --git a/src/core/hle/service/sockets/ethc.cpp b/src/core/hle/service/sockets/ethc.cpp index abbeb4c50..05681ca2d 100644 --- a/src/core/hle/service/sockets/ethc.cpp +++ b/src/core/hle/service/sockets/ethc.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Sockets { | 7 | namespace Service::Sockets { |
| 8 | 8 | ||
| 9 | ETHC_C::ETHC_C() : ServiceFramework{"ethc:c"} { | 9 | ETHC_C::ETHC_C(Core::System& system_) : ServiceFramework{system_, "ethc:c"} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {0, nullptr, "Initialize"}, | 12 | {0, nullptr, "Initialize"}, |
| @@ -23,7 +23,7 @@ ETHC_C::ETHC_C() : ServiceFramework{"ethc:c"} { | |||
| 23 | 23 | ||
| 24 | ETHC_C::~ETHC_C() = default; | 24 | ETHC_C::~ETHC_C() = default; |
| 25 | 25 | ||
| 26 | ETHC_I::ETHC_I() : ServiceFramework{"ethc:i"} { | 26 | ETHC_I::ETHC_I(Core::System& system_) : ServiceFramework{system_, "ethc:i"} { |
| 27 | // clang-format off | 27 | // clang-format off |
| 28 | static const FunctionInfo functions[] = { | 28 | static const FunctionInfo functions[] = { |
| 29 | {0, nullptr, "GetReadableHandle"}, | 29 | {0, nullptr, "GetReadableHandle"}, |
diff --git a/src/core/hle/service/sockets/ethc.h b/src/core/hle/service/sockets/ethc.h index da2c7f741..71884182e 100644 --- a/src/core/hle/service/sockets/ethc.h +++ b/src/core/hle/service/sockets/ethc.h | |||
| @@ -6,17 +6,21 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Sockets { | 13 | namespace Service::Sockets { |
| 10 | 14 | ||
| 11 | class ETHC_C final : public ServiceFramework<ETHC_C> { | 15 | class ETHC_C final : public ServiceFramework<ETHC_C> { |
| 12 | public: | 16 | public: |
| 13 | explicit ETHC_C(); | 17 | explicit ETHC_C(Core::System& system_); |
| 14 | ~ETHC_C() override; | 18 | ~ETHC_C() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
| 17 | class ETHC_I final : public ServiceFramework<ETHC_I> { | 21 | class ETHC_I final : public ServiceFramework<ETHC_I> { |
| 18 | public: | 22 | public: |
| 19 | explicit ETHC_I(); | 23 | explicit ETHC_I(Core::System& system_); |
| 20 | ~ETHC_I() override; | 24 | ~ETHC_I() override; |
| 21 | }; | 25 | }; |
| 22 | 26 | ||
diff --git a/src/core/hle/service/sockets/nsd.cpp b/src/core/hle/service/sockets/nsd.cpp index 40d781124..51c3739bb 100644 --- a/src/core/hle/service/sockets/nsd.cpp +++ b/src/core/hle/service/sockets/nsd.cpp | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::Sockets { | 7 | namespace Service::Sockets { |
| 8 | 8 | ||
| 9 | NSD::NSD(const char* name) : ServiceFramework(name) { | 9 | NSD::NSD(Core::System& system_, const char* name) : ServiceFramework{system_, name} { |
| 10 | // clang-format off | 10 | // clang-format off |
| 11 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 12 | {10, nullptr, "GetSettingName"}, | 12 | {10, nullptr, "GetSettingName"}, |
diff --git a/src/core/hle/service/sockets/nsd.h b/src/core/hle/service/sockets/nsd.h index d842e3232..becf93125 100644 --- a/src/core/hle/service/sockets/nsd.h +++ b/src/core/hle/service/sockets/nsd.h | |||
| @@ -4,14 +4,17 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 9 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 10 | namespace Service::Sockets { | 13 | namespace Service::Sockets { |
| 11 | 14 | ||
| 12 | class NSD final : public ServiceFramework<NSD> { | 15 | class NSD final : public ServiceFramework<NSD> { |
| 13 | public: | 16 | public: |
| 14 | explicit NSD(const char* name); | 17 | explicit NSD(Core::System& system_, const char* name); |
| 15 | ~NSD() override; | 18 | ~NSD() override; |
| 16 | }; | 19 | }; |
| 17 | 20 | ||
diff --git a/src/core/hle/service/sockets/sfdnsres.cpp b/src/core/hle/service/sockets/sfdnsres.cpp index e3017451f..3a6329f56 100644 --- a/src/core/hle/service/sockets/sfdnsres.cpp +++ b/src/core/hle/service/sockets/sfdnsres.cpp | |||
| @@ -7,25 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | namespace Service::Sockets { | 8 | namespace Service::Sockets { |
| 9 | 9 | ||
| 10 | void SFDNSRES::GetAddrInfoRequest(Kernel::HLERequestContext& ctx) { | 10 | SFDNSRES::SFDNSRES(Core::System& system_) : ServiceFramework{system_, "sfdnsres"} { |
| 11 | struct Parameters { | ||
| 12 | u8 use_nsd_resolve; | ||
| 13 | u32 unknown; | ||
| 14 | u64 process_id; | ||
| 15 | }; | ||
| 16 | |||
| 17 | IPC::RequestParser rp{ctx}; | ||
| 18 | const auto parameters = rp.PopRaw<Parameters>(); | ||
| 19 | |||
| 20 | LOG_WARNING(Service, | ||
| 21 | "(STUBBED) called. use_nsd_resolve={}, unknown=0x{:08X}, process_id=0x{:016X}", | ||
| 22 | parameters.use_nsd_resolve, parameters.unknown, parameters.process_id); | ||
| 23 | |||
| 24 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 25 | rb.Push(RESULT_SUCCESS); | ||
| 26 | } | ||
| 27 | |||
| 28 | SFDNSRES::SFDNSRES() : ServiceFramework("sfdnsres") { | ||
| 29 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 30 | {0, nullptr, "SetDnsAddressesPrivate"}, | 12 | {0, nullptr, "SetDnsAddressesPrivate"}, |
| 31 | {1, nullptr, "GetDnsAddressPrivate"}, | 13 | {1, nullptr, "GetDnsAddressPrivate"}, |
| @@ -49,4 +31,22 @@ SFDNSRES::SFDNSRES() : ServiceFramework("sfdnsres") { | |||
| 49 | 31 | ||
| 50 | SFDNSRES::~SFDNSRES() = default; | 32 | SFDNSRES::~SFDNSRES() = default; |
| 51 | 33 | ||
| 34 | void SFDNSRES::GetAddrInfoRequest(Kernel::HLERequestContext& ctx) { | ||
| 35 | struct Parameters { | ||
| 36 | u8 use_nsd_resolve; | ||
| 37 | u32 unknown; | ||
| 38 | u64 process_id; | ||
| 39 | }; | ||
| 40 | |||
| 41 | IPC::RequestParser rp{ctx}; | ||
| 42 | const auto parameters = rp.PopRaw<Parameters>(); | ||
| 43 | |||
| 44 | LOG_WARNING(Service, | ||
| 45 | "(STUBBED) called. use_nsd_resolve={}, unknown=0x{:08X}, process_id=0x{:016X}", | ||
| 46 | parameters.use_nsd_resolve, parameters.unknown, parameters.process_id); | ||
| 47 | |||
| 48 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 49 | rb.Push(RESULT_SUCCESS); | ||
| 50 | } | ||
| 51 | |||
| 52 | } // namespace Service::Sockets | 52 | } // namespace Service::Sockets |
diff --git a/src/core/hle/service/sockets/sfdnsres.h b/src/core/hle/service/sockets/sfdnsres.h index acd3647bb..faa6b7d0d 100644 --- a/src/core/hle/service/sockets/sfdnsres.h +++ b/src/core/hle/service/sockets/sfdnsres.h | |||
| @@ -7,11 +7,15 @@ | |||
| 7 | #include "core/hle/kernel/hle_ipc.h" | 7 | #include "core/hle/kernel/hle_ipc.h" |
| 8 | #include "core/hle/service/service.h" | 8 | #include "core/hle/service/service.h" |
| 9 | 9 | ||
| 10 | namespace Core { | ||
| 11 | class System; | ||
| 12 | } | ||
| 13 | |||
| 10 | namespace Service::Sockets { | 14 | namespace Service::Sockets { |
| 11 | 15 | ||
| 12 | class SFDNSRES final : public ServiceFramework<SFDNSRES> { | 16 | class SFDNSRES final : public ServiceFramework<SFDNSRES> { |
| 13 | public: | 17 | public: |
| 14 | explicit SFDNSRES(); | 18 | explicit SFDNSRES(Core::System& system_); |
| 15 | ~SFDNSRES() override; | 19 | ~SFDNSRES() override; |
| 16 | 20 | ||
| 17 | private: | 21 | private: |
diff --git a/src/core/hle/service/sockets/sockets.cpp b/src/core/hle/service/sockets/sockets.cpp index 1d27f7906..96f73bce3 100644 --- a/src/core/hle/service/sockets/sockets.cpp +++ b/src/core/hle/service/sockets/sockets.cpp | |||
| @@ -13,15 +13,15 @@ namespace Service::Sockets { | |||
| 13 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { | 13 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 14 | std::make_shared<BSD>(system, "bsd:s")->InstallAsService(service_manager); | 14 | std::make_shared<BSD>(system, "bsd:s")->InstallAsService(service_manager); |
| 15 | std::make_shared<BSD>(system, "bsd:u")->InstallAsService(service_manager); | 15 | std::make_shared<BSD>(system, "bsd:u")->InstallAsService(service_manager); |
| 16 | std::make_shared<BSDCFG>()->InstallAsService(service_manager); | 16 | std::make_shared<BSDCFG>(system)->InstallAsService(service_manager); |
| 17 | 17 | ||
| 18 | std::make_shared<ETHC_C>()->InstallAsService(service_manager); | 18 | std::make_shared<ETHC_C>(system)->InstallAsService(service_manager); |
| 19 | std::make_shared<ETHC_I>()->InstallAsService(service_manager); | 19 | std::make_shared<ETHC_I>(system)->InstallAsService(service_manager); |
| 20 | 20 | ||
| 21 | std::make_shared<NSD>("nsd:a")->InstallAsService(service_manager); | 21 | std::make_shared<NSD>(system, "nsd:a")->InstallAsService(service_manager); |
| 22 | std::make_shared<NSD>("nsd:u")->InstallAsService(service_manager); | 22 | std::make_shared<NSD>(system, "nsd:u")->InstallAsService(service_manager); |
| 23 | 23 | ||
| 24 | std::make_shared<SFDNSRES>()->InstallAsService(service_manager); | 24 | std::make_shared<SFDNSRES>(system)->InstallAsService(service_manager); |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | } // namespace Service::Sockets | 27 | } // namespace Service::Sockets |
diff --git a/src/core/hle/service/spl/csrng.cpp b/src/core/hle/service/spl/csrng.cpp index 674928798..1beca417c 100644 --- a/src/core/hle/service/spl/csrng.cpp +++ b/src/core/hle/service/spl/csrng.cpp | |||
| @@ -6,7 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::SPL { | 7 | namespace Service::SPL { |
| 8 | 8 | ||
| 9 | CSRNG::CSRNG(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "csrng") { | 9 | CSRNG::CSRNG(Core::System& system_, std::shared_ptr<Module> module_) |
| 10 | : Interface(system_, std::move(module_), "csrng") { | ||
| 10 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 11 | {0, &CSRNG::GetRandomBytes, "GetRandomBytes"}, | 12 | {0, &CSRNG::GetRandomBytes, "GetRandomBytes"}, |
| 12 | }; | 13 | }; |
diff --git a/src/core/hle/service/spl/csrng.h b/src/core/hle/service/spl/csrng.h index 764d5ceb0..5c0bd2199 100644 --- a/src/core/hle/service/spl/csrng.h +++ b/src/core/hle/service/spl/csrng.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/spl/module.h" | 7 | #include "core/hle/service/spl/module.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::SPL { | 13 | namespace Service::SPL { |
| 10 | 14 | ||
| 11 | class CSRNG final : public Module::Interface { | 15 | class CSRNG final : public Module::Interface { |
| 12 | public: | 16 | public: |
| 13 | explicit CSRNG(std::shared_ptr<Module> module); | 17 | explicit CSRNG(Core::System& system_, std::shared_ptr<Module> module_); |
| 14 | ~CSRNG() override; | 18 | ~CSRNG() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/spl/module.cpp b/src/core/hle/service/spl/module.cpp index 865ed3b91..dea6b0fe0 100644 --- a/src/core/hle/service/spl/module.cpp +++ b/src/core/hle/service/spl/module.cpp | |||
| @@ -17,8 +17,9 @@ | |||
| 17 | 17 | ||
| 18 | namespace Service::SPL { | 18 | namespace Service::SPL { |
| 19 | 19 | ||
| 20 | Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) | 20 | Module::Interface::Interface(Core::System& system_, std::shared_ptr<Module> module_, |
| 21 | : ServiceFramework(name), module(std::move(module)), | 21 | const char* name) |
| 22 | : ServiceFramework{system_, name}, module{std::move(module_)}, | ||
| 22 | rng(Settings::values.rng_seed.GetValue().value_or(std::time(nullptr))) {} | 23 | rng(Settings::values.rng_seed.GetValue().value_or(std::time(nullptr))) {} |
| 23 | 24 | ||
| 24 | Module::Interface::~Interface() = default; | 25 | Module::Interface::~Interface() = default; |
| @@ -38,10 +39,10 @@ void Module::Interface::GetRandomBytes(Kernel::HLERequestContext& ctx) { | |||
| 38 | rb.Push(RESULT_SUCCESS); | 39 | rb.Push(RESULT_SUCCESS); |
| 39 | } | 40 | } |
| 40 | 41 | ||
| 41 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 42 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 42 | auto module = std::make_shared<Module>(); | 43 | auto module = std::make_shared<Module>(); |
| 43 | std::make_shared<CSRNG>(module)->InstallAsService(service_manager); | 44 | std::make_shared<CSRNG>(system, module)->InstallAsService(service_manager); |
| 44 | std::make_shared<SPL>(module)->InstallAsService(service_manager); | 45 | std::make_shared<SPL>(system, module)->InstallAsService(service_manager); |
| 45 | } | 46 | } |
| 46 | 47 | ||
| 47 | } // namespace Service::SPL | 48 | } // namespace Service::SPL |
diff --git a/src/core/hle/service/spl/module.h b/src/core/hle/service/spl/module.h index afa1f0295..71855c1bf 100644 --- a/src/core/hle/service/spl/module.h +++ b/src/core/hle/service/spl/module.h | |||
| @@ -7,13 +7,18 @@ | |||
| 7 | #include <random> | 7 | #include <random> |
| 8 | #include "core/hle/service/service.h" | 8 | #include "core/hle/service/service.h" |
| 9 | 9 | ||
| 10 | namespace Core { | ||
| 11 | class System; | ||
| 12 | } | ||
| 13 | |||
| 10 | namespace Service::SPL { | 14 | namespace Service::SPL { |
| 11 | 15 | ||
| 12 | class Module final { | 16 | class Module final { |
| 13 | public: | 17 | public: |
| 14 | class Interface : public ServiceFramework<Interface> { | 18 | class Interface : public ServiceFramework<Interface> { |
| 15 | public: | 19 | public: |
| 16 | explicit Interface(std::shared_ptr<Module> module, const char* name); | 20 | explicit Interface(Core::System& system_, std::shared_ptr<Module> module_, |
| 21 | const char* name); | ||
| 17 | ~Interface() override; | 22 | ~Interface() override; |
| 18 | 23 | ||
| 19 | void GetRandomBytes(Kernel::HLERequestContext& ctx); | 24 | void GetRandomBytes(Kernel::HLERequestContext& ctx); |
| @@ -27,6 +32,6 @@ public: | |||
| 27 | }; | 32 | }; |
| 28 | 33 | ||
| 29 | /// Registers all SPL services with the specified service manager. | 34 | /// Registers all SPL services with the specified service manager. |
| 30 | void InstallInterfaces(SM::ServiceManager& service_manager); | 35 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
| 31 | 36 | ||
| 32 | } // namespace Service::SPL | 37 | } // namespace Service::SPL |
diff --git a/src/core/hle/service/spl/spl.cpp b/src/core/hle/service/spl/spl.cpp index 773551464..3fabc2c79 100644 --- a/src/core/hle/service/spl/spl.cpp +++ b/src/core/hle/service/spl/spl.cpp | |||
| @@ -6,7 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | namespace Service::SPL { | 7 | namespace Service::SPL { |
| 8 | 8 | ||
| 9 | SPL::SPL(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "spl:") { | 9 | SPL::SPL(Core::System& system_, std::shared_ptr<Module> module_) |
| 10 | : Interface(system_, std::move(module_), "spl:") { | ||
| 10 | static const FunctionInfo functions[] = { | 11 | static const FunctionInfo functions[] = { |
| 11 | {0, nullptr, "GetConfig"}, | 12 | {0, nullptr, "GetConfig"}, |
| 12 | {1, nullptr, "ModularExponentiate"}, | 13 | {1, nullptr, "ModularExponentiate"}, |
diff --git a/src/core/hle/service/spl/spl.h b/src/core/hle/service/spl/spl.h index 3637d1623..d27d16b86 100644 --- a/src/core/hle/service/spl/spl.h +++ b/src/core/hle/service/spl/spl.h | |||
| @@ -6,11 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/spl/module.h" | 7 | #include "core/hle/service/spl/module.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::SPL { | 13 | namespace Service::SPL { |
| 10 | 14 | ||
| 11 | class SPL final : public Module::Interface { | 15 | class SPL final : public Module::Interface { |
| 12 | public: | 16 | public: |
| 13 | explicit SPL(std::shared_ptr<Module> module); | 17 | explicit SPL(Core::System& system_, std::shared_ptr<Module> module_); |
| 14 | ~SPL() override; | 18 | ~SPL() override; |
| 15 | }; | 19 | }; |
| 16 | 20 | ||
diff --git a/src/core/hle/service/ssl/ssl.cpp b/src/core/hle/service/ssl/ssl.cpp index 1ba8c19a0..dc2baca4a 100644 --- a/src/core/hle/service/ssl/ssl.cpp +++ b/src/core/hle/service/ssl/ssl.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::SSL { | |||
| 12 | 12 | ||
| 13 | class ISslConnection final : public ServiceFramework<ISslConnection> { | 13 | class ISslConnection final : public ServiceFramework<ISslConnection> { |
| 14 | public: | 14 | public: |
| 15 | ISslConnection() : ServiceFramework("ISslConnection") { | 15 | explicit ISslConnection(Core::System& system_) : ServiceFramework{system_, "ISslConnection"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {0, nullptr, "SetSocketDescriptor"}, | 18 | {0, nullptr, "SetSocketDescriptor"}, |
| @@ -52,7 +52,7 @@ public: | |||
| 52 | 52 | ||
| 53 | class ISslContext final : public ServiceFramework<ISslContext> { | 53 | class ISslContext final : public ServiceFramework<ISslContext> { |
| 54 | public: | 54 | public: |
| 55 | ISslContext() : ServiceFramework("ISslContext") { | 55 | explicit ISslContext(Core::System& system_) : ServiceFramework{system_, "ISslContext"} { |
| 56 | static const FunctionInfo functions[] = { | 56 | static const FunctionInfo functions[] = { |
| 57 | {0, &ISslContext::SetOption, "SetOption"}, | 57 | {0, &ISslContext::SetOption, "SetOption"}, |
| 58 | {1, nullptr, "GetOption"}, | 58 | {1, nullptr, "GetOption"}, |
| @@ -92,13 +92,13 @@ private: | |||
| 92 | 92 | ||
| 93 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 93 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 94 | rb.Push(RESULT_SUCCESS); | 94 | rb.Push(RESULT_SUCCESS); |
| 95 | rb.PushIpcInterface<ISslConnection>(); | 95 | rb.PushIpcInterface<ISslConnection>(system); |
| 96 | } | 96 | } |
| 97 | }; | 97 | }; |
| 98 | 98 | ||
| 99 | class SSL final : public ServiceFramework<SSL> { | 99 | class SSL final : public ServiceFramework<SSL> { |
| 100 | public: | 100 | public: |
| 101 | explicit SSL() : ServiceFramework{"ssl"} { | 101 | explicit SSL(Core::System& system_) : ServiceFramework{system_, "ssl"} { |
| 102 | // clang-format off | 102 | // clang-format off |
| 103 | static const FunctionInfo functions[] = { | 103 | static const FunctionInfo functions[] = { |
| 104 | {0, &SSL::CreateContext, "CreateContext"}, | 104 | {0, &SSL::CreateContext, "CreateContext"}, |
| @@ -123,7 +123,7 @@ private: | |||
| 123 | 123 | ||
| 124 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 124 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 125 | rb.Push(RESULT_SUCCESS); | 125 | rb.Push(RESULT_SUCCESS); |
| 126 | rb.PushIpcInterface<ISslContext>(); | 126 | rb.PushIpcInterface<ISslContext>(system); |
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | void SetInterfaceVersion(Kernel::HLERequestContext& ctx) { | 129 | void SetInterfaceVersion(Kernel::HLERequestContext& ctx) { |
| @@ -137,8 +137,8 @@ private: | |||
| 137 | } | 137 | } |
| 138 | }; | 138 | }; |
| 139 | 139 | ||
| 140 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 140 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { |
| 141 | std::make_shared<SSL>()->InstallAsService(service_manager); | 141 | std::make_shared<SSL>(system)->InstallAsService(service_manager); |
| 142 | } | 142 | } |
| 143 | 143 | ||
| 144 | } // namespace Service::SSL | 144 | } // namespace Service::SSL |
diff --git a/src/core/hle/service/ssl/ssl.h b/src/core/hle/service/ssl/ssl.h index 5cb04c3b9..a3aa4b4b5 100644 --- a/src/core/hle/service/ssl/ssl.h +++ b/src/core/hle/service/ssl/ssl.h | |||
| @@ -4,6 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| @@ -11,6 +15,6 @@ class ServiceManager; | |||
| 11 | namespace Service::SSL { | 15 | namespace Service::SSL { |
| 12 | 16 | ||
| 13 | /// Registers all SSL services with the specified service manager. | 17 | /// Registers all SSL services with the specified service manager. |
| 14 | void InstallInterfaces(SM::ServiceManager& service_manager); | 18 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); |
| 15 | 19 | ||
| 16 | } // namespace Service::SSL | 20 | } // namespace Service::SSL |
diff --git a/src/core/hle/service/time/interface.cpp b/src/core/hle/service/time/interface.cpp index ba8fd6152..a01d9e0ff 100644 --- a/src/core/hle/service/time/interface.cpp +++ b/src/core/hle/service/time/interface.cpp | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | namespace Service::Time { | 7 | namespace Service::Time { |
| 8 | 8 | ||
| 9 | Time::Time(std::shared_ptr<Module> module, Core::System& system, const char* name) | 9 | Time::Time(std::shared_ptr<Module> module, Core::System& system, const char* name) |
| 10 | : Module::Interface(std::move(module), system, name) { | 10 | : Interface(std::move(module), system, name) { |
| 11 | // clang-format off | 11 | // clang-format off |
| 12 | static const FunctionInfo functions[] = { | 12 | static const FunctionInfo functions[] = { |
| 13 | {0, &Time::GetStandardUserSystemClock, "GetStandardUserSystemClock"}, | 13 | {0, &Time::GetStandardUserSystemClock, "GetStandardUserSystemClock"}, |
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index 7d0474e0b..7b7ac282d 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp | |||
| @@ -21,8 +21,8 @@ namespace Service::Time { | |||
| 21 | 21 | ||
| 22 | class ISystemClock final : public ServiceFramework<ISystemClock> { | 22 | class ISystemClock final : public ServiceFramework<ISystemClock> { |
| 23 | public: | 23 | public: |
| 24 | explicit ISystemClock(Clock::SystemClockCore& clock_core, Core::System& system) | 24 | explicit ISystemClock(Clock::SystemClockCore& clock_core_, Core::System& system_) |
| 25 | : ServiceFramework("ISystemClock"), clock_core{clock_core}, system{system} { | 25 | : ServiceFramework{system_, "ISystemClock"}, clock_core{clock_core_} { |
| 26 | // clang-format off | 26 | // clang-format off |
| 27 | static const FunctionInfo functions[] = { | 27 | static const FunctionInfo functions[] = { |
| 28 | {0, &ISystemClock::GetCurrentTime, "GetCurrentTime"}, | 28 | {0, &ISystemClock::GetCurrentTime, "GetCurrentTime"}, |
| @@ -82,13 +82,12 @@ private: | |||
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | Clock::SystemClockCore& clock_core; | 84 | Clock::SystemClockCore& clock_core; |
| 85 | Core::System& system; | ||
| 86 | }; | 85 | }; |
| 87 | 86 | ||
| 88 | class ISteadyClock final : public ServiceFramework<ISteadyClock> { | 87 | class ISteadyClock final : public ServiceFramework<ISteadyClock> { |
| 89 | public: | 88 | public: |
| 90 | explicit ISteadyClock(Clock::SteadyClockCore& clock_core, Core::System& system) | 89 | explicit ISteadyClock(Clock::SteadyClockCore& clock_core_, Core::System& system_) |
| 91 | : ServiceFramework("ISteadyClock"), clock_core{clock_core}, system{system} { | 90 | : ServiceFramework{system_, "ISteadyClock"}, clock_core{clock_core_} { |
| 92 | static const FunctionInfo functions[] = { | 91 | static const FunctionInfo functions[] = { |
| 93 | {0, &ISteadyClock::GetCurrentTimePoint, "GetCurrentTimePoint"}, | 92 | {0, &ISteadyClock::GetCurrentTimePoint, "GetCurrentTimePoint"}, |
| 94 | {2, nullptr, "GetTestOffset"}, | 93 | {2, nullptr, "GetTestOffset"}, |
| @@ -119,7 +118,6 @@ private: | |||
| 119 | } | 118 | } |
| 120 | 119 | ||
| 121 | Clock::SteadyClockCore& clock_core; | 120 | Clock::SteadyClockCore& clock_core; |
| 122 | Core::System& system; | ||
| 123 | }; | 121 | }; |
| 124 | 122 | ||
| 125 | ResultCode Module::Interface::GetClockSnapshotFromSystemClockContextInternal( | 123 | ResultCode Module::Interface::GetClockSnapshotFromSystemClockContextInternal( |
| @@ -206,7 +204,8 @@ void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) { | |||
| 206 | LOG_DEBUG(Service_Time, "called"); | 204 | LOG_DEBUG(Service_Time, "called"); |
| 207 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 205 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 208 | rb.Push(RESULT_SUCCESS); | 206 | rb.Push(RESULT_SUCCESS); |
| 209 | rb.PushIpcInterface<ITimeZoneService>(system.GetTimeManager().GetTimeZoneContentManager()); | 207 | rb.PushIpcInterface<ITimeZoneService>(system, |
| 208 | system.GetTimeManager().GetTimeZoneContentManager()); | ||
| 210 | } | 209 | } |
| 211 | 210 | ||
| 212 | void Module::Interface::GetStandardLocalSystemClock(Kernel::HLERequestContext& ctx) { | 211 | void Module::Interface::GetStandardLocalSystemClock(Kernel::HLERequestContext& ctx) { |
| @@ -375,8 +374,9 @@ void Module::Interface::GetSharedMemoryNativeHandle(Kernel::HLERequestContext& c | |||
| 375 | rb.PushCopyObjects(SharedFrom(&system.Kernel().GetTimeSharedMem())); | 374 | rb.PushCopyObjects(SharedFrom(&system.Kernel().GetTimeSharedMem())); |
| 376 | } | 375 | } |
| 377 | 376 | ||
| 378 | Module::Interface::Interface(std::shared_ptr<Module> module, Core::System& system, const char* name) | 377 | Module::Interface::Interface(std::shared_ptr<Module> module_, Core::System& system_, |
| 379 | : ServiceFramework(name), module{std::move(module)}, system{system} {} | 378 | const char* name) |
| 379 | : ServiceFramework{system_, name}, module{std::move(module_)} {} | ||
| 380 | 380 | ||
| 381 | Module::Interface::~Interface() = default; | 381 | Module::Interface::~Interface() = default; |
| 382 | 382 | ||
diff --git a/src/core/hle/service/time/time.h b/src/core/hle/service/time/time.h index 49f4aac0a..975a8ae5b 100644 --- a/src/core/hle/service/time/time.h +++ b/src/core/hle/service/time/time.h | |||
| @@ -20,7 +20,8 @@ public: | |||
| 20 | 20 | ||
| 21 | class Interface : public ServiceFramework<Interface> { | 21 | class Interface : public ServiceFramework<Interface> { |
| 22 | public: | 22 | public: |
| 23 | explicit Interface(std::shared_ptr<Module> module, Core::System& system, const char* name); | 23 | explicit Interface(std::shared_ptr<Module> module_, Core::System& system_, |
| 24 | const char* name); | ||
| 24 | ~Interface() override; | 25 | ~Interface() override; |
| 25 | 26 | ||
| 26 | void GetStandardUserSystemClock(Kernel::HLERequestContext& ctx); | 27 | void GetStandardUserSystemClock(Kernel::HLERequestContext& ctx); |
| @@ -44,7 +45,6 @@ public: | |||
| 44 | 45 | ||
| 45 | protected: | 46 | protected: |
| 46 | std::shared_ptr<Module> module; | 47 | std::shared_ptr<Module> module; |
| 47 | Core::System& system; | ||
| 48 | }; | 48 | }; |
| 49 | }; | 49 | }; |
| 50 | 50 | ||
diff --git a/src/core/hle/service/time/time_zone_service.cpp b/src/core/hle/service/time/time_zone_service.cpp index ff3a10b3e..25cecbc83 100644 --- a/src/core/hle/service/time/time_zone_service.cpp +++ b/src/core/hle/service/time/time_zone_service.cpp | |||
| @@ -10,8 +10,9 @@ | |||
| 10 | 10 | ||
| 11 | namespace Service::Time { | 11 | namespace Service::Time { |
| 12 | 12 | ||
| 13 | ITimeZoneService ::ITimeZoneService(TimeZone::TimeZoneContentManager& time_zone_content_manager) | 13 | ITimeZoneService ::ITimeZoneService(Core::System& system_, |
| 14 | : ServiceFramework("ITimeZoneService"), time_zone_content_manager{time_zone_content_manager} { | 14 | TimeZone::TimeZoneContentManager& time_zone_manager_) |
| 15 | : ServiceFramework{system_, "ITimeZoneService"}, time_zone_content_manager{time_zone_manager_} { | ||
| 15 | static const FunctionInfo functions[] = { | 16 | static const FunctionInfo functions[] = { |
| 16 | {0, &ITimeZoneService::GetDeviceLocationName, "GetDeviceLocationName"}, | 17 | {0, &ITimeZoneService::GetDeviceLocationName, "GetDeviceLocationName"}, |
| 17 | {1, nullptr, "SetDeviceLocationName"}, | 18 | {1, nullptr, "SetDeviceLocationName"}, |
diff --git a/src/core/hle/service/time/time_zone_service.h b/src/core/hle/service/time/time_zone_service.h index cb495748b..2c9b97603 100644 --- a/src/core/hle/service/time/time_zone_service.h +++ b/src/core/hle/service/time/time_zone_service.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Service::Time { | 13 | namespace Service::Time { |
| 10 | 14 | ||
| 11 | namespace TimeZone { | 15 | namespace TimeZone { |
| @@ -14,7 +18,8 @@ class TimeZoneContentManager; | |||
| 14 | 18 | ||
| 15 | class ITimeZoneService final : public ServiceFramework<ITimeZoneService> { | 19 | class ITimeZoneService final : public ServiceFramework<ITimeZoneService> { |
| 16 | public: | 20 | public: |
| 17 | explicit ITimeZoneService(TimeZone::TimeZoneContentManager& time_zone_manager); | 21 | explicit ITimeZoneService(Core::System& system_, |
| 22 | TimeZone::TimeZoneContentManager& time_zone_manager_); | ||
| 18 | 23 | ||
| 19 | private: | 24 | private: |
| 20 | void GetDeviceLocationName(Kernel::HLERequestContext& ctx); | 25 | void GetDeviceLocationName(Kernel::HLERequestContext& ctx); |
diff --git a/src/core/hle/service/usb/usb.cpp b/src/core/hle/service/usb/usb.cpp index d033f8603..579de83e4 100644 --- a/src/core/hle/service/usb/usb.cpp +++ b/src/core/hle/service/usb/usb.cpp | |||
| @@ -15,7 +15,7 @@ namespace Service::USB { | |||
| 15 | 15 | ||
| 16 | class IDsInterface final : public ServiceFramework<IDsInterface> { | 16 | class IDsInterface final : public ServiceFramework<IDsInterface> { |
| 17 | public: | 17 | public: |
| 18 | explicit IDsInterface() : ServiceFramework{"IDsInterface"} { | 18 | explicit IDsInterface(Core::System& system_) : ServiceFramework{system_, "IDsInterface"} { |
| 19 | // clang-format off | 19 | // clang-format off |
| 20 | static const FunctionInfo functions[] = { | 20 | static const FunctionInfo functions[] = { |
| 21 | {0, nullptr, "GetDsEndpoint"}, | 21 | {0, nullptr, "GetDsEndpoint"}, |
| @@ -40,7 +40,7 @@ public: | |||
| 40 | 40 | ||
| 41 | class USB_DS final : public ServiceFramework<USB_DS> { | 41 | class USB_DS final : public ServiceFramework<USB_DS> { |
| 42 | public: | 42 | public: |
| 43 | explicit USB_DS() : ServiceFramework{"usb:ds"} { | 43 | explicit USB_DS(Core::System& system_) : ServiceFramework{system_, "usb:ds"} { |
| 44 | // clang-format off | 44 | // clang-format off |
| 45 | static const FunctionInfo functions[] = { | 45 | static const FunctionInfo functions[] = { |
| 46 | {0, nullptr, "BindDevice"}, | 46 | {0, nullptr, "BindDevice"}, |
| @@ -65,7 +65,8 @@ public: | |||
| 65 | 65 | ||
| 66 | class IClientEpSession final : public ServiceFramework<IClientEpSession> { | 66 | class IClientEpSession final : public ServiceFramework<IClientEpSession> { |
| 67 | public: | 67 | public: |
| 68 | explicit IClientEpSession() : ServiceFramework{"IClientEpSession"} { | 68 | explicit IClientEpSession(Core::System& system_) |
| 69 | : ServiceFramework{system_, "IClientEpSession"} { | ||
| 69 | // clang-format off | 70 | // clang-format off |
| 70 | static const FunctionInfo functions[] = { | 71 | static const FunctionInfo functions[] = { |
| 71 | {0, nullptr, "Open"}, | 72 | {0, nullptr, "Open"}, |
| @@ -86,7 +87,8 @@ public: | |||
| 86 | 87 | ||
| 87 | class IClientIfSession final : public ServiceFramework<IClientIfSession> { | 88 | class IClientIfSession final : public ServiceFramework<IClientIfSession> { |
| 88 | public: | 89 | public: |
| 89 | explicit IClientIfSession() : ServiceFramework{"IClientIfSession"} { | 90 | explicit IClientIfSession(Core::System& system_) |
| 91 | : ServiceFramework{system_, "IClientIfSession"} { | ||
| 90 | // clang-format off | 92 | // clang-format off |
| 91 | static const FunctionInfo functions[] = { | 93 | static const FunctionInfo functions[] = { |
| 92 | {0, nullptr, "Unknown0"}, | 94 | {0, nullptr, "Unknown0"}, |
| @@ -108,7 +110,7 @@ public: | |||
| 108 | 110 | ||
| 109 | class USB_HS final : public ServiceFramework<USB_HS> { | 111 | class USB_HS final : public ServiceFramework<USB_HS> { |
| 110 | public: | 112 | public: |
| 111 | explicit USB_HS() : ServiceFramework{"usb:hs"} { | 113 | explicit USB_HS(Core::System& system_) : ServiceFramework{system_, "usb:hs"} { |
| 112 | // clang-format off | 114 | // clang-format off |
| 113 | static const FunctionInfo functions[] = { | 115 | static const FunctionInfo functions[] = { |
| 114 | {0, nullptr, "BindClientProcess"}, | 116 | {0, nullptr, "BindClientProcess"}, |
| @@ -129,7 +131,7 @@ public: | |||
| 129 | 131 | ||
| 130 | class IPdSession final : public ServiceFramework<IPdSession> { | 132 | class IPdSession final : public ServiceFramework<IPdSession> { |
| 131 | public: | 133 | public: |
| 132 | explicit IPdSession() : ServiceFramework{"IPdSession"} { | 134 | explicit IPdSession(Core::System& system_) : ServiceFramework{system_, "IPdSession"} { |
| 133 | // clang-format off | 135 | // clang-format off |
| 134 | static const FunctionInfo functions[] = { | 136 | static const FunctionInfo functions[] = { |
| 135 | {0, nullptr, "BindNoticeEvent"}, | 137 | {0, nullptr, "BindNoticeEvent"}, |
| @@ -148,7 +150,7 @@ public: | |||
| 148 | 150 | ||
| 149 | class USB_PD final : public ServiceFramework<USB_PD> { | 151 | class USB_PD final : public ServiceFramework<USB_PD> { |
| 150 | public: | 152 | public: |
| 151 | explicit USB_PD() : ServiceFramework{"usb:pd"} { | 153 | explicit USB_PD(Core::System& system_) : ServiceFramework{system_, "usb:pd"} { |
| 152 | // clang-format off | 154 | // clang-format off |
| 153 | static const FunctionInfo functions[] = { | 155 | static const FunctionInfo functions[] = { |
| 154 | {0, &USB_PD::GetPdSession, "GetPdSession"}, | 156 | {0, &USB_PD::GetPdSession, "GetPdSession"}, |
| @@ -164,13 +166,14 @@ private: | |||
| 164 | 166 | ||
| 165 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 167 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 166 | rb.Push(RESULT_SUCCESS); | 168 | rb.Push(RESULT_SUCCESS); |
| 167 | rb.PushIpcInterface<IPdSession>(); | 169 | rb.PushIpcInterface<IPdSession>(system); |
| 168 | } | 170 | } |
| 169 | }; | 171 | }; |
| 170 | 172 | ||
| 171 | class IPdCradleSession final : public ServiceFramework<IPdCradleSession> { | 173 | class IPdCradleSession final : public ServiceFramework<IPdCradleSession> { |
| 172 | public: | 174 | public: |
| 173 | explicit IPdCradleSession() : ServiceFramework{"IPdCradleSession"} { | 175 | explicit IPdCradleSession(Core::System& system_) |
| 176 | : ServiceFramework{system_, "IPdCradleSession"} { | ||
| 174 | // clang-format off | 177 | // clang-format off |
| 175 | static const FunctionInfo functions[] = { | 178 | static const FunctionInfo functions[] = { |
| 176 | {0, nullptr, "VdmUserWrite"}, | 179 | {0, nullptr, "VdmUserWrite"}, |
| @@ -191,7 +194,7 @@ public: | |||
| 191 | 194 | ||
| 192 | class USB_PD_C final : public ServiceFramework<USB_PD_C> { | 195 | class USB_PD_C final : public ServiceFramework<USB_PD_C> { |
| 193 | public: | 196 | public: |
| 194 | explicit USB_PD_C() : ServiceFramework{"usb:pd:c"} { | 197 | explicit USB_PD_C(Core::System& system_) : ServiceFramework{system_, "usb:pd:c"} { |
| 195 | // clang-format off | 198 | // clang-format off |
| 196 | static const FunctionInfo functions[] = { | 199 | static const FunctionInfo functions[] = { |
| 197 | {0, &USB_PD_C::GetPdCradleSession, "GetPdCradleSession"}, | 200 | {0, &USB_PD_C::GetPdCradleSession, "GetPdCradleSession"}, |
| @@ -205,7 +208,7 @@ private: | |||
| 205 | void GetPdCradleSession(Kernel::HLERequestContext& ctx) { | 208 | void GetPdCradleSession(Kernel::HLERequestContext& ctx) { |
| 206 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 209 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 207 | rb.Push(RESULT_SUCCESS); | 210 | rb.Push(RESULT_SUCCESS); |
| 208 | rb.PushIpcInterface<IPdCradleSession>(); | 211 | rb.PushIpcInterface<IPdCradleSession>(system); |
| 209 | 212 | ||
| 210 | LOG_DEBUG(Service_USB, "called"); | 213 | LOG_DEBUG(Service_USB, "called"); |
| 211 | } | 214 | } |
| @@ -213,7 +216,7 @@ private: | |||
| 213 | 216 | ||
| 214 | class USB_PM final : public ServiceFramework<USB_PM> { | 217 | class USB_PM final : public ServiceFramework<USB_PM> { |
| 215 | public: | 218 | public: |
| 216 | explicit USB_PM() : ServiceFramework{"usb:pm"} { | 219 | explicit USB_PM(Core::System& system_) : ServiceFramework{system_, "usb:pm"} { |
| 217 | // clang-format off | 220 | // clang-format off |
| 218 | static const FunctionInfo functions[] = { | 221 | static const FunctionInfo functions[] = { |
| 219 | {0, nullptr, "Unknown0"}, | 222 | {0, nullptr, "Unknown0"}, |
| @@ -229,12 +232,12 @@ public: | |||
| 229 | } | 232 | } |
| 230 | }; | 233 | }; |
| 231 | 234 | ||
| 232 | void InstallInterfaces(SM::ServiceManager& sm) { | 235 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 233 | std::make_shared<USB_DS>()->InstallAsService(sm); | 236 | std::make_shared<USB_DS>(system)->InstallAsService(sm); |
| 234 | std::make_shared<USB_HS>()->InstallAsService(sm); | 237 | std::make_shared<USB_HS>(system)->InstallAsService(sm); |
| 235 | std::make_shared<USB_PD>()->InstallAsService(sm); | 238 | std::make_shared<USB_PD>(system)->InstallAsService(sm); |
| 236 | std::make_shared<USB_PD_C>()->InstallAsService(sm); | 239 | std::make_shared<USB_PD_C>(system)->InstallAsService(sm); |
| 237 | std::make_shared<USB_PM>()->InstallAsService(sm); | 240 | std::make_shared<USB_PM>(system)->InstallAsService(sm); |
| 238 | } | 241 | } |
| 239 | 242 | ||
| 240 | } // namespace Service::USB | 243 | } // namespace Service::USB |
diff --git a/src/core/hle/service/usb/usb.h b/src/core/hle/service/usb/usb.h index 970a11fe8..fc366df34 100644 --- a/src/core/hle/service/usb/usb.h +++ b/src/core/hle/service/usb/usb.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::USB { | 15 | namespace Service::USB { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::USB | 19 | } // namespace Service::USB |
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index 86bd604f4..af5b8b0b9 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp | |||
| @@ -492,8 +492,8 @@ private: | |||
| 492 | 492 | ||
| 493 | class IHOSBinderDriver final : public ServiceFramework<IHOSBinderDriver> { | 493 | class IHOSBinderDriver final : public ServiceFramework<IHOSBinderDriver> { |
| 494 | public: | 494 | public: |
| 495 | explicit IHOSBinderDriver(NVFlinger::NVFlinger& nv_flinger) | 495 | explicit IHOSBinderDriver(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_) |
| 496 | : ServiceFramework("IHOSBinderDriver"), nv_flinger(nv_flinger) { | 496 | : ServiceFramework{system_, "IHOSBinderDriver"}, nv_flinger(nv_flinger_) { |
| 497 | static const FunctionInfo functions[] = { | 497 | static const FunctionInfo functions[] = { |
| 498 | {0, &IHOSBinderDriver::TransactParcel, "TransactParcel"}, | 498 | {0, &IHOSBinderDriver::TransactParcel, "TransactParcel"}, |
| 499 | {1, &IHOSBinderDriver::AdjustRefcount, "AdjustRefcount"}, | 499 | {1, &IHOSBinderDriver::AdjustRefcount, "AdjustRefcount"}, |
| @@ -689,7 +689,8 @@ private: | |||
| 689 | 689 | ||
| 690 | class ISystemDisplayService final : public ServiceFramework<ISystemDisplayService> { | 690 | class ISystemDisplayService final : public ServiceFramework<ISystemDisplayService> { |
| 691 | public: | 691 | public: |
| 692 | explicit ISystemDisplayService() : ServiceFramework("ISystemDisplayService") { | 692 | explicit ISystemDisplayService(Core::System& system_) |
| 693 | : ServiceFramework{system_, "ISystemDisplayService"} { | ||
| 693 | static const FunctionInfo functions[] = { | 694 | static const FunctionInfo functions[] = { |
| 694 | {1200, nullptr, "GetZOrderCountMin"}, | 695 | {1200, nullptr, "GetZOrderCountMin"}, |
| 695 | {1202, nullptr, "GetZOrderCountMax"}, | 696 | {1202, nullptr, "GetZOrderCountMax"}, |
| @@ -790,8 +791,8 @@ private: | |||
| 790 | 791 | ||
| 791 | class IManagerDisplayService final : public ServiceFramework<IManagerDisplayService> { | 792 | class IManagerDisplayService final : public ServiceFramework<IManagerDisplayService> { |
| 792 | public: | 793 | public: |
| 793 | explicit IManagerDisplayService(NVFlinger::NVFlinger& nv_flinger) | 794 | explicit IManagerDisplayService(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_) |
| 794 | : ServiceFramework("IManagerDisplayService"), nv_flinger(nv_flinger) { | 795 | : ServiceFramework{system_, "IManagerDisplayService"}, nv_flinger{nv_flinger_} { |
| 795 | // clang-format off | 796 | // clang-format off |
| 796 | static const FunctionInfo functions[] = { | 797 | static const FunctionInfo functions[] = { |
| 797 | {200, nullptr, "AllocateProcessHeapBlock"}, | 798 | {200, nullptr, "AllocateProcessHeapBlock"}, |
| @@ -935,7 +936,7 @@ private: | |||
| 935 | 936 | ||
| 936 | class IApplicationDisplayService final : public ServiceFramework<IApplicationDisplayService> { | 937 | class IApplicationDisplayService final : public ServiceFramework<IApplicationDisplayService> { |
| 937 | public: | 938 | public: |
| 938 | explicit IApplicationDisplayService(NVFlinger::NVFlinger& nv_flinger); | 939 | explicit IApplicationDisplayService(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_); |
| 939 | 940 | ||
| 940 | private: | 941 | private: |
| 941 | enum class ConvertedScaleMode : u64 { | 942 | enum class ConvertedScaleMode : u64 { |
| @@ -959,7 +960,7 @@ private: | |||
| 959 | 960 | ||
| 960 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 961 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 961 | rb.Push(RESULT_SUCCESS); | 962 | rb.Push(RESULT_SUCCESS); |
| 962 | rb.PushIpcInterface<IHOSBinderDriver>(nv_flinger); | 963 | rb.PushIpcInterface<IHOSBinderDriver>(system, nv_flinger); |
| 963 | } | 964 | } |
| 964 | 965 | ||
| 965 | void GetSystemDisplayService(Kernel::HLERequestContext& ctx) { | 966 | void GetSystemDisplayService(Kernel::HLERequestContext& ctx) { |
| @@ -967,7 +968,7 @@ private: | |||
| 967 | 968 | ||
| 968 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 969 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 969 | rb.Push(RESULT_SUCCESS); | 970 | rb.Push(RESULT_SUCCESS); |
| 970 | rb.PushIpcInterface<ISystemDisplayService>(); | 971 | rb.PushIpcInterface<ISystemDisplayService>(system); |
| 971 | } | 972 | } |
| 972 | 973 | ||
| 973 | void GetManagerDisplayService(Kernel::HLERequestContext& ctx) { | 974 | void GetManagerDisplayService(Kernel::HLERequestContext& ctx) { |
| @@ -975,7 +976,7 @@ private: | |||
| 975 | 976 | ||
| 976 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 977 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 977 | rb.Push(RESULT_SUCCESS); | 978 | rb.Push(RESULT_SUCCESS); |
| 978 | rb.PushIpcInterface<IManagerDisplayService>(nv_flinger); | 979 | rb.PushIpcInterface<IManagerDisplayService>(system, nv_flinger); |
| 979 | } | 980 | } |
| 980 | 981 | ||
| 981 | void GetIndirectDisplayTransactionService(Kernel::HLERequestContext& ctx) { | 982 | void GetIndirectDisplayTransactionService(Kernel::HLERequestContext& ctx) { |
| @@ -983,7 +984,7 @@ private: | |||
| 983 | 984 | ||
| 984 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 985 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 985 | rb.Push(RESULT_SUCCESS); | 986 | rb.Push(RESULT_SUCCESS); |
| 986 | rb.PushIpcInterface<IHOSBinderDriver>(nv_flinger); | 987 | rb.PushIpcInterface<IHOSBinderDriver>(system, nv_flinger); |
| 987 | } | 988 | } |
| 988 | 989 | ||
| 989 | void OpenDisplay(Kernel::HLERequestContext& ctx) { | 990 | void OpenDisplay(Kernel::HLERequestContext& ctx) { |
| @@ -1261,8 +1262,9 @@ private: | |||
| 1261 | NVFlinger::NVFlinger& nv_flinger; | 1262 | NVFlinger::NVFlinger& nv_flinger; |
| 1262 | }; | 1263 | }; |
| 1263 | 1264 | ||
| 1264 | IApplicationDisplayService::IApplicationDisplayService(NVFlinger::NVFlinger& nv_flinger) | 1265 | IApplicationDisplayService::IApplicationDisplayService(Core::System& system_, |
| 1265 | : ServiceFramework("IApplicationDisplayService"), nv_flinger(nv_flinger) { | 1266 | NVFlinger::NVFlinger& nv_flinger_) |
| 1267 | : ServiceFramework{system_, "IApplicationDisplayService"}, nv_flinger{nv_flinger_} { | ||
| 1266 | static const FunctionInfo functions[] = { | 1268 | static const FunctionInfo functions[] = { |
| 1267 | {100, &IApplicationDisplayService::GetRelayService, "GetRelayService"}, | 1269 | {100, &IApplicationDisplayService::GetRelayService, "GetRelayService"}, |
| 1268 | {101, &IApplicationDisplayService::GetSystemDisplayService, "GetSystemDisplayService"}, | 1270 | {101, &IApplicationDisplayService::GetSystemDisplayService, "GetSystemDisplayService"}, |
| @@ -1303,8 +1305,8 @@ static bool IsValidServiceAccess(Permission permission, Policy policy) { | |||
| 1303 | return false; | 1305 | return false; |
| 1304 | } | 1306 | } |
| 1305 | 1307 | ||
| 1306 | void detail::GetDisplayServiceImpl(Kernel::HLERequestContext& ctx, NVFlinger::NVFlinger& nv_flinger, | 1308 | void detail::GetDisplayServiceImpl(Kernel::HLERequestContext& ctx, Core::System& system, |
| 1307 | Permission permission) { | 1309 | NVFlinger::NVFlinger& nv_flinger, Permission permission) { |
| 1308 | IPC::RequestParser rp{ctx}; | 1310 | IPC::RequestParser rp{ctx}; |
| 1309 | const auto policy = rp.PopEnum<Policy>(); | 1311 | const auto policy = rp.PopEnum<Policy>(); |
| 1310 | 1312 | ||
| @@ -1317,13 +1319,14 @@ void detail::GetDisplayServiceImpl(Kernel::HLERequestContext& ctx, NVFlinger::NV | |||
| 1317 | 1319 | ||
| 1318 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 1320 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 1319 | rb.Push(RESULT_SUCCESS); | 1321 | rb.Push(RESULT_SUCCESS); |
| 1320 | rb.PushIpcInterface<IApplicationDisplayService>(nv_flinger); | 1322 | rb.PushIpcInterface<IApplicationDisplayService>(system, nv_flinger); |
| 1321 | } | 1323 | } |
| 1322 | 1324 | ||
| 1323 | void InstallInterfaces(SM::ServiceManager& service_manager, NVFlinger::NVFlinger& nv_flinger) { | 1325 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system, |
| 1324 | std::make_shared<VI_M>(nv_flinger)->InstallAsService(service_manager); | 1326 | NVFlinger::NVFlinger& nv_flinger) { |
| 1325 | std::make_shared<VI_S>(nv_flinger)->InstallAsService(service_manager); | 1327 | std::make_shared<VI_M>(system, nv_flinger)->InstallAsService(service_manager); |
| 1326 | std::make_shared<VI_U>(nv_flinger)->InstallAsService(service_manager); | 1328 | std::make_shared<VI_S>(system, nv_flinger)->InstallAsService(service_manager); |
| 1329 | std::make_shared<VI_U>(system, nv_flinger)->InstallAsService(service_manager); | ||
| 1327 | } | 1330 | } |
| 1328 | 1331 | ||
| 1329 | } // namespace Service::VI | 1332 | } // namespace Service::VI |
diff --git a/src/core/hle/service/vi/vi.h b/src/core/hle/service/vi/vi.h index 5229fa753..eec531d54 100644 --- a/src/core/hle/service/vi/vi.h +++ b/src/core/hle/service/vi/vi.h | |||
| @@ -7,6 +7,10 @@ | |||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include "common/common_types.h" | 8 | #include "common/common_types.h" |
| 9 | 9 | ||
| 10 | namespace Core { | ||
| 11 | class System; | ||
| 12 | } | ||
| 13 | |||
| 10 | namespace Kernel { | 14 | namespace Kernel { |
| 11 | class HLERequestContext; | 15 | class HLERequestContext; |
| 12 | } | 16 | } |
| @@ -43,11 +47,12 @@ enum class Policy { | |||
| 43 | }; | 47 | }; |
| 44 | 48 | ||
| 45 | namespace detail { | 49 | namespace detail { |
| 46 | void GetDisplayServiceImpl(Kernel::HLERequestContext& ctx, NVFlinger::NVFlinger& nv_flinger, | 50 | void GetDisplayServiceImpl(Kernel::HLERequestContext& ctx, Core::System& system, |
| 47 | Permission permission); | 51 | NVFlinger::NVFlinger& nv_flinger, Permission permission); |
| 48 | } // namespace detail | 52 | } // namespace detail |
| 49 | 53 | ||
| 50 | /// Registers all VI services with the specified service manager. | 54 | /// Registers all VI services with the specified service manager. |
| 51 | void InstallInterfaces(SM::ServiceManager& service_manager, NVFlinger::NVFlinger& nv_flinger); | 55 | void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system, |
| 56 | NVFlinger::NVFlinger& nv_flinger); | ||
| 52 | 57 | ||
| 53 | } // namespace Service::VI | 58 | } // namespace Service::VI |
diff --git a/src/core/hle/service/vi/vi_m.cpp b/src/core/hle/service/vi/vi_m.cpp index 41da3ee93..87db1c416 100644 --- a/src/core/hle/service/vi/vi_m.cpp +++ b/src/core/hle/service/vi/vi_m.cpp | |||
| @@ -8,7 +8,8 @@ | |||
| 8 | 8 | ||
| 9 | namespace Service::VI { | 9 | namespace Service::VI { |
| 10 | 10 | ||
| 11 | VI_M::VI_M(NVFlinger::NVFlinger& nv_flinger) : ServiceFramework{"vi:m"}, nv_flinger{nv_flinger} { | 11 | VI_M::VI_M(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_) |
| 12 | : ServiceFramework{system_, "vi:m"}, nv_flinger{nv_flinger_} { | ||
| 12 | static const FunctionInfo functions[] = { | 13 | static const FunctionInfo functions[] = { |
| 13 | {2, &VI_M::GetDisplayService, "GetDisplayService"}, | 14 | {2, &VI_M::GetDisplayService, "GetDisplayService"}, |
| 14 | {3, nullptr, "GetDisplayServiceWithProxyNameExchange"}, | 15 | {3, nullptr, "GetDisplayServiceWithProxyNameExchange"}, |
| @@ -21,7 +22,7 @@ VI_M::~VI_M() = default; | |||
| 21 | void VI_M::GetDisplayService(Kernel::HLERequestContext& ctx) { | 22 | void VI_M::GetDisplayService(Kernel::HLERequestContext& ctx) { |
| 22 | LOG_DEBUG(Service_VI, "called"); | 23 | LOG_DEBUG(Service_VI, "called"); |
| 23 | 24 | ||
| 24 | detail::GetDisplayServiceImpl(ctx, nv_flinger, Permission::Manager); | 25 | detail::GetDisplayServiceImpl(ctx, system, nv_flinger, Permission::Manager); |
| 25 | } | 26 | } |
| 26 | 27 | ||
| 27 | } // namespace Service::VI | 28 | } // namespace Service::VI |
diff --git a/src/core/hle/service/vi/vi_m.h b/src/core/hle/service/vi/vi_m.h index ee2489874..d79c41beb 100644 --- a/src/core/hle/service/vi/vi_m.h +++ b/src/core/hle/service/vi/vi_m.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class HLERequestContext; | 14 | class HLERequestContext; |
| 11 | } | 15 | } |
| @@ -18,7 +22,7 @@ namespace Service::VI { | |||
| 18 | 22 | ||
| 19 | class VI_M final : public ServiceFramework<VI_M> { | 23 | class VI_M final : public ServiceFramework<VI_M> { |
| 20 | public: | 24 | public: |
| 21 | explicit VI_M(NVFlinger::NVFlinger& nv_flinger); | 25 | explicit VI_M(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_); |
| 22 | ~VI_M() override; | 26 | ~VI_M() override; |
| 23 | 27 | ||
| 24 | private: | 28 | private: |
diff --git a/src/core/hle/service/vi/vi_s.cpp b/src/core/hle/service/vi/vi_s.cpp index 6acb51e2a..5cd22f7df 100644 --- a/src/core/hle/service/vi/vi_s.cpp +++ b/src/core/hle/service/vi/vi_s.cpp | |||
| @@ -8,7 +8,8 @@ | |||
| 8 | 8 | ||
| 9 | namespace Service::VI { | 9 | namespace Service::VI { |
| 10 | 10 | ||
| 11 | VI_S::VI_S(NVFlinger::NVFlinger& nv_flinger) : ServiceFramework{"vi:s"}, nv_flinger{nv_flinger} { | 11 | VI_S::VI_S(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_) |
| 12 | : ServiceFramework{system_, "vi:s"}, nv_flinger{nv_flinger_} { | ||
| 12 | static const FunctionInfo functions[] = { | 13 | static const FunctionInfo functions[] = { |
| 13 | {1, &VI_S::GetDisplayService, "GetDisplayService"}, | 14 | {1, &VI_S::GetDisplayService, "GetDisplayService"}, |
| 14 | {3, nullptr, "GetDisplayServiceWithProxyNameExchange"}, | 15 | {3, nullptr, "GetDisplayServiceWithProxyNameExchange"}, |
| @@ -21,7 +22,7 @@ VI_S::~VI_S() = default; | |||
| 21 | void VI_S::GetDisplayService(Kernel::HLERequestContext& ctx) { | 22 | void VI_S::GetDisplayService(Kernel::HLERequestContext& ctx) { |
| 22 | LOG_DEBUG(Service_VI, "called"); | 23 | LOG_DEBUG(Service_VI, "called"); |
| 23 | 24 | ||
| 24 | detail::GetDisplayServiceImpl(ctx, nv_flinger, Permission::System); | 25 | detail::GetDisplayServiceImpl(ctx, system, nv_flinger, Permission::System); |
| 25 | } | 26 | } |
| 26 | 27 | ||
| 27 | } // namespace Service::VI | 28 | } // namespace Service::VI |
diff --git a/src/core/hle/service/vi/vi_s.h b/src/core/hle/service/vi/vi_s.h index 6790673ab..5f1f8f290 100644 --- a/src/core/hle/service/vi/vi_s.h +++ b/src/core/hle/service/vi/vi_s.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class HLERequestContext; | 14 | class HLERequestContext; |
| 11 | } | 15 | } |
| @@ -18,7 +22,7 @@ namespace Service::VI { | |||
| 18 | 22 | ||
| 19 | class VI_S final : public ServiceFramework<VI_S> { | 23 | class VI_S final : public ServiceFramework<VI_S> { |
| 20 | public: | 24 | public: |
| 21 | explicit VI_S(NVFlinger::NVFlinger& nv_flinger); | 25 | explicit VI_S(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_); |
| 22 | ~VI_S() override; | 26 | ~VI_S() override; |
| 23 | 27 | ||
| 24 | private: | 28 | private: |
diff --git a/src/core/hle/service/vi/vi_u.cpp b/src/core/hle/service/vi/vi_u.cpp index 44e00a4f6..0079d51f0 100644 --- a/src/core/hle/service/vi/vi_u.cpp +++ b/src/core/hle/service/vi/vi_u.cpp | |||
| @@ -8,7 +8,8 @@ | |||
| 8 | 8 | ||
| 9 | namespace Service::VI { | 9 | namespace Service::VI { |
| 10 | 10 | ||
| 11 | VI_U::VI_U(NVFlinger::NVFlinger& nv_flinger) : ServiceFramework{"vi:u"}, nv_flinger{nv_flinger} { | 11 | VI_U::VI_U(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_) |
| 12 | : ServiceFramework{system_, "vi:u"}, nv_flinger{nv_flinger_} { | ||
| 12 | static const FunctionInfo functions[] = { | 13 | static const FunctionInfo functions[] = { |
| 13 | {0, &VI_U::GetDisplayService, "GetDisplayService"}, | 14 | {0, &VI_U::GetDisplayService, "GetDisplayService"}, |
| 14 | {1, nullptr, "GetDisplayServiceWithProxyNameExchange"}, | 15 | {1, nullptr, "GetDisplayServiceWithProxyNameExchange"}, |
| @@ -21,7 +22,7 @@ VI_U::~VI_U() = default; | |||
| 21 | void VI_U::GetDisplayService(Kernel::HLERequestContext& ctx) { | 22 | void VI_U::GetDisplayService(Kernel::HLERequestContext& ctx) { |
| 22 | LOG_DEBUG(Service_VI, "called"); | 23 | LOG_DEBUG(Service_VI, "called"); |
| 23 | 24 | ||
| 24 | detail::GetDisplayServiceImpl(ctx, nv_flinger, Permission::User); | 25 | detail::GetDisplayServiceImpl(ctx, system, nv_flinger, Permission::User); |
| 25 | } | 26 | } |
| 26 | 27 | ||
| 27 | } // namespace Service::VI | 28 | } // namespace Service::VI |
diff --git a/src/core/hle/service/vi/vi_u.h b/src/core/hle/service/vi/vi_u.h index b59f986f0..8e3885c73 100644 --- a/src/core/hle/service/vi/vi_u.h +++ b/src/core/hle/service/vi/vi_u.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 8 | 8 | ||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 9 | namespace Kernel { | 13 | namespace Kernel { |
| 10 | class HLERequestContext; | 14 | class HLERequestContext; |
| 11 | } | 15 | } |
| @@ -18,7 +22,7 @@ namespace Service::VI { | |||
| 18 | 22 | ||
| 19 | class VI_U final : public ServiceFramework<VI_U> { | 23 | class VI_U final : public ServiceFramework<VI_U> { |
| 20 | public: | 24 | public: |
| 21 | explicit VI_U(NVFlinger::NVFlinger& nv_flinger); | 25 | explicit VI_U(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_); |
| 22 | ~VI_U() override; | 26 | ~VI_U() override; |
| 23 | 27 | ||
| 24 | private: | 28 | private: |
diff --git a/src/core/hle/service/wlan/wlan.cpp b/src/core/hle/service/wlan/wlan.cpp index 0260d7dcf..ddbf04069 100644 --- a/src/core/hle/service/wlan/wlan.cpp +++ b/src/core/hle/service/wlan/wlan.cpp | |||
| @@ -12,7 +12,7 @@ namespace Service::WLAN { | |||
| 12 | 12 | ||
| 13 | class WLANInfra final : public ServiceFramework<WLANInfra> { | 13 | class WLANInfra final : public ServiceFramework<WLANInfra> { |
| 14 | public: | 14 | public: |
| 15 | explicit WLANInfra() : ServiceFramework{"wlan:inf"} { | 15 | explicit WLANInfra(Core::System& system_) : ServiceFramework{system_, "wlan:inf"} { |
| 16 | // clang-format off | 16 | // clang-format off |
| 17 | static const FunctionInfo functions[] = { | 17 | static const FunctionInfo functions[] = { |
| 18 | {0, nullptr, "OpenMode"}, | 18 | {0, nullptr, "OpenMode"}, |
| @@ -55,7 +55,7 @@ public: | |||
| 55 | 55 | ||
| 56 | class WLANLocal final : public ServiceFramework<WLANLocal> { | 56 | class WLANLocal final : public ServiceFramework<WLANLocal> { |
| 57 | public: | 57 | public: |
| 58 | explicit WLANLocal() : ServiceFramework{"wlan:lcl"} { | 58 | explicit WLANLocal(Core::System& system_) : ServiceFramework{system_, "wlan:lcl"} { |
| 59 | // clang-format off | 59 | // clang-format off |
| 60 | static const FunctionInfo functions[] = { | 60 | static const FunctionInfo functions[] = { |
| 61 | {0, nullptr, "Unknown0"}, | 61 | {0, nullptr, "Unknown0"}, |
| @@ -120,7 +120,7 @@ public: | |||
| 120 | 120 | ||
| 121 | class WLANLocalGetFrame final : public ServiceFramework<WLANLocalGetFrame> { | 121 | class WLANLocalGetFrame final : public ServiceFramework<WLANLocalGetFrame> { |
| 122 | public: | 122 | public: |
| 123 | explicit WLANLocalGetFrame() : ServiceFramework{"wlan:lg"} { | 123 | explicit WLANLocalGetFrame(Core::System& system_) : ServiceFramework{system_, "wlan:lg"} { |
| 124 | // clang-format off | 124 | // clang-format off |
| 125 | static const FunctionInfo functions[] = { | 125 | static const FunctionInfo functions[] = { |
| 126 | {0, nullptr, "Unknown"}, | 126 | {0, nullptr, "Unknown"}, |
| @@ -133,7 +133,7 @@ public: | |||
| 133 | 133 | ||
| 134 | class WLANSocketGetFrame final : public ServiceFramework<WLANSocketGetFrame> { | 134 | class WLANSocketGetFrame final : public ServiceFramework<WLANSocketGetFrame> { |
| 135 | public: | 135 | public: |
| 136 | explicit WLANSocketGetFrame() : ServiceFramework{"wlan:sg"} { | 136 | explicit WLANSocketGetFrame(Core::System& system_) : ServiceFramework{system_, "wlan:sg"} { |
| 137 | // clang-format off | 137 | // clang-format off |
| 138 | static const FunctionInfo functions[] = { | 138 | static const FunctionInfo functions[] = { |
| 139 | {0, nullptr, "Unknown"}, | 139 | {0, nullptr, "Unknown"}, |
| @@ -146,7 +146,7 @@ public: | |||
| 146 | 146 | ||
| 147 | class WLANSocketManager final : public ServiceFramework<WLANSocketManager> { | 147 | class WLANSocketManager final : public ServiceFramework<WLANSocketManager> { |
| 148 | public: | 148 | public: |
| 149 | explicit WLANSocketManager() : ServiceFramework{"wlan:soc"} { | 149 | explicit WLANSocketManager(Core::System& system_) : ServiceFramework{system_, "wlan:soc"} { |
| 150 | // clang-format off | 150 | // clang-format off |
| 151 | static const FunctionInfo functions[] = { | 151 | static const FunctionInfo functions[] = { |
| 152 | {0, nullptr, "Unknown0"}, | 152 | {0, nullptr, "Unknown0"}, |
| @@ -169,12 +169,12 @@ public: | |||
| 169 | } | 169 | } |
| 170 | }; | 170 | }; |
| 171 | 171 | ||
| 172 | void InstallInterfaces(SM::ServiceManager& sm) { | 172 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system) { |
| 173 | std::make_shared<WLANInfra>()->InstallAsService(sm); | 173 | std::make_shared<WLANInfra>(system)->InstallAsService(sm); |
| 174 | std::make_shared<WLANLocal>()->InstallAsService(sm); | 174 | std::make_shared<WLANLocal>(system)->InstallAsService(sm); |
| 175 | std::make_shared<WLANLocalGetFrame>()->InstallAsService(sm); | 175 | std::make_shared<WLANLocalGetFrame>(system)->InstallAsService(sm); |
| 176 | std::make_shared<WLANSocketGetFrame>()->InstallAsService(sm); | 176 | std::make_shared<WLANSocketGetFrame>(system)->InstallAsService(sm); |
| 177 | std::make_shared<WLANSocketManager>()->InstallAsService(sm); | 177 | std::make_shared<WLANSocketManager>(system)->InstallAsService(sm); |
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | } // namespace Service::WLAN | 180 | } // namespace Service::WLAN |
diff --git a/src/core/hle/service/wlan/wlan.h b/src/core/hle/service/wlan/wlan.h index 054ea928a..3899eedbb 100644 --- a/src/core/hle/service/wlan/wlan.h +++ b/src/core/hle/service/wlan/wlan.h | |||
| @@ -4,12 +4,16 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | namespace Core { | ||
| 8 | class System; | ||
| 9 | } | ||
| 10 | |||
| 7 | namespace Service::SM { | 11 | namespace Service::SM { |
| 8 | class ServiceManager; | 12 | class ServiceManager; |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | namespace Service::WLAN { | 15 | namespace Service::WLAN { |
| 12 | 16 | ||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | 17 | void InstallInterfaces(SM::ServiceManager& sm, Core::System& system); |
| 14 | 18 | ||
| 15 | } // namespace Service::WLAN | 19 | } // namespace Service::WLAN |
diff --git a/src/yuzu_tester/service/yuzutest.cpp b/src/yuzu_tester/service/yuzutest.cpp index 2d3f6e3a7..e257fae25 100644 --- a/src/yuzu_tester/service/yuzutest.cpp +++ b/src/yuzu_tester/service/yuzutest.cpp | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | #include <memory> | 5 | #include <memory> |
| 6 | #include "common/string_util.h" | 6 | #include "common/string_util.h" |
| 7 | #include "core/core.h" | ||
| 7 | #include "core/hle/ipc_helpers.h" | 8 | #include "core/hle/ipc_helpers.h" |
| 8 | #include "core/hle/service/service.h" | 9 | #include "core/hle/service/service.h" |
| 9 | #include "core/hle/service/sm/sm.h" | 10 | #include "core/hle/service/sm/sm.h" |
| @@ -15,10 +16,10 @@ constexpr u64 SERVICE_VERSION = 0x00000002; | |||
| 15 | 16 | ||
| 16 | class YuzuTest final : public ServiceFramework<YuzuTest> { | 17 | class YuzuTest final : public ServiceFramework<YuzuTest> { |
| 17 | public: | 18 | public: |
| 18 | explicit YuzuTest(std::string data, | 19 | explicit YuzuTest(Core::System& system_, std::string data_, |
| 19 | std::function<void(std::vector<TestResult>)> finish_callback) | 20 | std::function<void(std::vector<TestResult>)> finish_callback_) |
| 20 | : ServiceFramework{"yuzutest"}, data(std::move(data)), | 21 | : ServiceFramework{system_, "yuzutest"}, data{std::move(data_)}, finish_callback{std::move( |
| 21 | finish_callback(std::move(finish_callback)) { | 22 | finish_callback_)} { |
| 22 | static const FunctionInfo functions[] = { | 23 | static const FunctionInfo functions[] = { |
| 23 | {0, &YuzuTest::Initialize, "Initialize"}, | 24 | {0, &YuzuTest::Initialize, "Initialize"}, |
| 24 | {1, &YuzuTest::GetServiceVersion, "GetServiceVersion"}, | 25 | {1, &YuzuTest::GetServiceVersion, "GetServiceVersion"}, |
| @@ -104,9 +105,11 @@ private: | |||
| 104 | std::function<void(std::vector<TestResult>)> finish_callback; | 105 | std::function<void(std::vector<TestResult>)> finish_callback; |
| 105 | }; | 106 | }; |
| 106 | 107 | ||
| 107 | void InstallInterfaces(SM::ServiceManager& sm, std::string data, | 108 | void InstallInterfaces(Core::System& system, std::string data, |
| 108 | std::function<void(std::vector<TestResult>)> finish_callback) { | 109 | std::function<void(std::vector<TestResult>)> finish_callback) { |
| 109 | std::make_shared<YuzuTest>(data, finish_callback)->InstallAsService(sm); | 110 | auto& sm = system.ServiceManager(); |
| 111 | std::make_shared<YuzuTest>(system, std::move(data), std::move(finish_callback)) | ||
| 112 | ->InstallAsService(sm); | ||
| 110 | } | 113 | } |
| 111 | 114 | ||
| 112 | } // namespace Service::Yuzu | 115 | } // namespace Service::Yuzu |
diff --git a/src/yuzu_tester/service/yuzutest.h b/src/yuzu_tester/service/yuzutest.h index eca129c8c..7794814fa 100644 --- a/src/yuzu_tester/service/yuzutest.h +++ b/src/yuzu_tester/service/yuzutest.h | |||
| @@ -7,8 +7,8 @@ | |||
| 7 | #include <functional> | 7 | #include <functional> |
| 8 | #include <string> | 8 | #include <string> |
| 9 | 9 | ||
| 10 | namespace Service::SM { | 10 | namespace Core { |
| 11 | class ServiceManager; | 11 | class System; |
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | namespace Service::Yuzu { | 14 | namespace Service::Yuzu { |
| @@ -19,7 +19,7 @@ struct TestResult { | |||
| 19 | std::string name; | 19 | std::string name; |
| 20 | }; | 20 | }; |
| 21 | 21 | ||
| 22 | void InstallInterfaces(SM::ServiceManager& sm, std::string data, | 22 | void InstallInterfaces(Core::System& system, std::string data, |
| 23 | std::function<void(std::vector<TestResult>)> finish_callback); | 23 | std::function<void(std::vector<TestResult>)> finish_callback); |
| 24 | 24 | ||
| 25 | } // namespace Service::Yuzu | 25 | } // namespace Service::Yuzu |
diff --git a/src/yuzu_tester/yuzu.cpp b/src/yuzu_tester/yuzu.cpp index 88e4bd1f7..ea94a6537 100644 --- a/src/yuzu_tester/yuzu.cpp +++ b/src/yuzu_tester/yuzu.cpp | |||
| @@ -247,9 +247,10 @@ int main(int argc, char** argv) { | |||
| 247 | "additional help.\n\nError Code: {:04X}-{:04X}\nError Description: {}", | 247 | "additional help.\n\nError Code: {:04X}-{:04X}\nError Description: {}", |
| 248 | loader_id, error_id, static_cast<Loader::ResultStatus>(error_id)); | 248 | loader_id, error_id, static_cast<Loader::ResultStatus>(error_id)); |
| 249 | } | 249 | } |
| 250 | break; | ||
| 250 | } | 251 | } |
| 251 | 252 | ||
| 252 | Service::Yuzu::InstallInterfaces(system.ServiceManager(), datastring, callback); | 253 | Service::Yuzu::InstallInterfaces(system, datastring, callback); |
| 253 | 254 | ||
| 254 | system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", | 255 | system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", |
| 255 | "SDLHideTester"); | 256 | "SDLHideTester"); |