summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Lioncash2018-09-10 21:20:52 -0400
committerGravatar Lioncash2018-09-10 23:55:31 -0400
commit6ac955a0b441d762a2ebc0ce96bc41954879c0fc (patch)
treeb3fffe585bf2c2ae052d94062bcc6844e8cdda8c
parentUse open-source shared fonts if no dumped file is available (#1269) (diff)
downloadyuzu-6ac955a0b441d762a2ebc0ce96bc41954879c0fc.tar.gz
yuzu-6ac955a0b441d762a2ebc0ce96bc41954879c0fc.tar.xz
yuzu-6ac955a0b441d762a2ebc0ce96bc41954879c0fc.zip
hle/service: Default constructors and destructors in the cpp file where applicable
When a destructor isn't defaulted into a cpp file, it can cause the use of forward declarations to seemingly fail to compile for non-obvious reasons. It also allows inlining of the construction/destruction logic all over the place where a constructor or destructor is invoked, which can lead to code bloat. This isn't so much a worry here, given the services won't be created and destroyed frequently. The cause of the above mentioned non-obvious errors can be demonstrated as follows: ------- Demonstrative example, if you know how the described error happens, skip forwards ------- Assume we have the following in the header, which we'll call "thing.h": \#include <memory> // Forward declaration. For example purposes, assume the definition // of Object is in some header named "object.h" class Object; class Thing { public: // assume no constructors or destructors are specified here, // or the constructors/destructors are defined as: // // Thing() = default; // ~Thing() = default; // // ... Some interface member functions would be defined here private: std::shared_ptr<Object> obj; }; If this header is included in a cpp file, (which we'll call "main.cpp"), this will result in a compilation error, because even though no destructor is specified, the destructor will still need to be generated by the compiler because std::shared_ptr's destructor is *not* trivial (in other words, it does something other than nothing), as std::shared_ptr's destructor needs to do two things: 1. Decrement the shared reference count of the object being pointed to, and if the reference count decrements to zero, 2. Free the Object instance's memory (aka deallocate the memory it's pointing to). And so the compiler generates the code for the destructor doing this inside main.cpp. Now, keep in mind, the Object forward declaration is not a complete type. All it does is tell the compiler "a type named Object exists" and allows us to use the name in certain situations to avoid a header dependency. So the compiler needs to generate destruction code for Object, but the compiler doesn't know *how* to destruct it. A forward declaration doesn't tell the compiler anything about Object's constructor or destructor. So, the compiler will issue an error in this case because it's undefined behavior to try and deallocate (or construct) an incomplete type and std::shared_ptr and std::unique_ptr make sure this isn't the case internally. Now, if we had defaulted the destructor in "thing.cpp", where we also include "object.h", this would never be an issue, as the destructor would only have its code generated in one place, and it would be in a place where the full class definition of Object would be visible to the compiler. ---------------------- End example ---------------------------- Given these service classes are more than certainly going to change in the future, this defaults the constructors and destructors into the relevant cpp files to make the construction and destruction of all of the services consistent and unlikely to run into cases where forward declarations are indirectly causing compilation errors. It also has the plus of avoiding the need to rebuild several services if destruction logic changes, since it would only be necessary to recompile the single cpp file.
-rw-r--r--src/core/hle/service/acc/acc_aa.cpp2
-rw-r--r--src/core/hle/service/acc/acc_aa.h1
-rw-r--r--src/core/hle/service/acc/acc_su.cpp2
-rw-r--r--src/core/hle/service/acc/acc_su.h1
-rw-r--r--src/core/hle/service/acc/acc_u0.cpp2
-rw-r--r--src/core/hle/service/acc/acc_u0.h1
-rw-r--r--src/core/hle/service/acc/acc_u1.cpp2
-rw-r--r--src/core/hle/service/acc/acc_u1.h1
-rw-r--r--src/core/hle/service/acc/profile_manager.cpp2
-rw-r--r--src/core/hle/service/acc/profile_manager.h2
-rw-r--r--src/core/hle/service/am/am.cpp23
-rw-r--r--src/core/hle/service/am/am.h12
-rw-r--r--src/core/hle/service/am/applet_ae.cpp2
-rw-r--r--src/core/hle/service/am/applet_ae.h2
-rw-r--r--src/core/hle/service/am/applet_oe.cpp2
-rw-r--r--src/core/hle/service/am/applet_oe.h2
-rw-r--r--src/core/hle/service/am/idle.cpp2
-rw-r--r--src/core/hle/service/am/idle.h1
-rw-r--r--src/core/hle/service/am/omm.cpp2
-rw-r--r--src/core/hle/service/am/omm.h1
-rw-r--r--src/core/hle/service/am/spsm.cpp2
-rw-r--r--src/core/hle/service/am/spsm.h1
-rw-r--r--src/core/hle/service/aoc/aoc_u.cpp2
-rw-r--r--src/core/hle/service/aoc/aoc_u.h2
-rw-r--r--src/core/hle/service/apm/apm.cpp3
-rw-r--r--src/core/hle/service/apm/apm.h4
-rw-r--r--src/core/hle/service/apm/interface.cpp4
-rw-r--r--src/core/hle/service/apm/interface.h3
-rw-r--r--src/core/hle/service/audio/audctl.cpp2
-rw-r--r--src/core/hle/service/audio/audctl.h1
-rw-r--r--src/core/hle/service/audio/auddbg.cpp2
-rw-r--r--src/core/hle/service/audio/auddbg.h1
-rw-r--r--src/core/hle/service/audio/audin_a.cpp2
-rw-r--r--src/core/hle/service/audio/audin_a.h1
-rw-r--r--src/core/hle/service/audio/audin_u.cpp2
-rw-r--r--src/core/hle/service/audio/audin_u.h2
-rw-r--r--src/core/hle/service/audio/audout_a.cpp2
-rw-r--r--src/core/hle/service/audio/audout_a.h1
-rw-r--r--src/core/hle/service/audio/audout_u.cpp2
-rw-r--r--src/core/hle/service/audio/audout_u.h2
-rw-r--r--src/core/hle/service/audio/audrec_a.cpp2
-rw-r--r--src/core/hle/service/audio/audrec_a.h1
-rw-r--r--src/core/hle/service/audio/audrec_u.cpp2
-rw-r--r--src/core/hle/service/audio/audrec_u.h2
-rw-r--r--src/core/hle/service/audio/audren_a.cpp2
-rw-r--r--src/core/hle/service/audio/audren_a.h1
-rw-r--r--src/core/hle/service/audio/audren_u.cpp2
-rw-r--r--src/core/hle/service/audio/audren_u.h2
-rw-r--r--src/core/hle/service/audio/codecctl.cpp2
-rw-r--r--src/core/hle/service/audio/codecctl.h2
-rw-r--r--src/core/hle/service/audio/hwopus.cpp2
-rw-r--r--src/core/hle/service/audio/hwopus.h2
-rw-r--r--src/core/hle/service/bcat/bcat.cpp2
-rw-r--r--src/core/hle/service/bcat/bcat.h1
-rw-r--r--src/core/hle/service/bcat/module.cpp2
-rw-r--r--src/core/hle/service/bcat/module.h1
-rw-r--r--src/core/hle/service/fatal/fatal.cpp2
-rw-r--r--src/core/hle/service/fatal/fatal.h1
-rw-r--r--src/core/hle/service/fatal/fatal_p.cpp2
-rw-r--r--src/core/hle/service/fatal/fatal_p.h1
-rw-r--r--src/core/hle/service/fatal/fatal_u.cpp2
-rw-r--r--src/core/hle/service/fatal/fatal_u.h1
-rw-r--r--src/core/hle/service/filesystem/filesystem.cpp2
-rw-r--r--src/core/hle/service/filesystem/filesystem.h1
-rw-r--r--src/core/hle/service/filesystem/fsp_ldr.cpp2
-rw-r--r--src/core/hle/service/filesystem/fsp_ldr.h1
-rw-r--r--src/core/hle/service/filesystem/fsp_pr.cpp2
-rw-r--r--src/core/hle/service/filesystem/fsp_pr.h1
-rw-r--r--src/core/hle/service/filesystem/fsp_srv.cpp2
-rw-r--r--src/core/hle/service/filesystem/fsp_srv.h2
-rw-r--r--src/core/hle/service/friend/friend.cpp2
-rw-r--r--src/core/hle/service/friend/friend.h1
-rw-r--r--src/core/hle/service/friend/interface.cpp2
-rw-r--r--src/core/hle/service/friend/interface.h1
-rw-r--r--src/core/hle/service/hid/irs.cpp4
-rw-r--r--src/core/hle/service/hid/irs.h2
-rw-r--r--src/core/hle/service/hid/xcd.cpp2
-rw-r--r--src/core/hle/service/hid/xcd.h1
-rw-r--r--src/core/hle/service/nfp/nfp.cpp2
-rw-r--r--src/core/hle/service/nfp/nfp.h1
-rw-r--r--src/core/hle/service/nfp/nfp_user.cpp2
-rw-r--r--src/core/hle/service/nfp/nfp_user.h1
-rw-r--r--src/core/hle/service/ns/pl_u.cpp2
-rw-r--r--src/core/hle/service/ns/pl_u.h2
-rw-r--r--src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp3
-rw-r--r--src/core/hle/service/nvdrv/devices/nvdisp_disp0.h4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp5
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h5
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp3
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_ctrl.h4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp3
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp3
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_gpu.h4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp3
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_nvdec.h4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp3
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_vic.cpp3
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_vic.h4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvmap.cpp3
-rw-r--r--src/core/hle/service/nvdrv/devices/nvmap.h4
-rw-r--r--src/core/hle/service/nvdrv/interface.cpp2
-rw-r--r--src/core/hle/service/nvdrv/interface.h2
-rw-r--r--src/core/hle/service/nvdrv/nvdrv.cpp2
-rw-r--r--src/core/hle/service/nvdrv/nvdrv.h2
-rw-r--r--src/core/hle/service/nvdrv/nvmemp.cpp2
-rw-r--r--src/core/hle/service/nvdrv/nvmemp.h2
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue.cpp2
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue.h2
-rw-r--r--src/core/hle/service/nvflinger/nvflinger.cpp3
-rw-r--r--src/core/hle/service/nvflinger/nvflinger.h4
-rw-r--r--src/core/hle/service/pctl/module.cpp2
-rw-r--r--src/core/hle/service/pctl/module.h1
-rw-r--r--src/core/hle/service/pctl/pctl.cpp2
-rw-r--r--src/core/hle/service/pctl/pctl.h1
-rw-r--r--src/core/hle/service/set/set.cpp2
-rw-r--r--src/core/hle/service/set/set.h2
-rw-r--r--src/core/hle/service/set/set_cal.cpp2
-rw-r--r--src/core/hle/service/set/set_cal.h2
-rw-r--r--src/core/hle/service/set/set_fd.cpp2
-rw-r--r--src/core/hle/service/set/set_fd.h2
-rw-r--r--src/core/hle/service/sockets/bsd.cpp4
-rw-r--r--src/core/hle/service/sockets/bsd.h3
-rw-r--r--src/core/hle/service/sockets/ethc.cpp4
-rw-r--r--src/core/hle/service/sockets/ethc.h2
-rw-r--r--src/core/hle/service/sockets/nsd.cpp2
-rw-r--r--src/core/hle/service/sockets/nsd.h2
-rw-r--r--src/core/hle/service/sockets/sfdnsres.cpp2
-rw-r--r--src/core/hle/service/sockets/sfdnsres.h2
-rw-r--r--src/core/hle/service/spl/csrng.cpp2
-rw-r--r--src/core/hle/service/spl/csrng.h1
-rw-r--r--src/core/hle/service/spl/module.cpp2
-rw-r--r--src/core/hle/service/spl/module.h1
-rw-r--r--src/core/hle/service/spl/spl.cpp2
-rw-r--r--src/core/hle/service/spl/spl.h1
-rw-r--r--src/core/hle/service/time/interface.cpp2
-rw-r--r--src/core/hle/service/time/interface.h1
-rw-r--r--src/core/hle/service/time/time.cpp2
-rw-r--r--src/core/hle/service/time/time.h1
-rw-r--r--src/core/hle/service/vi/vi.cpp2
-rw-r--r--src/core/hle/service/vi/vi.h1
-rw-r--r--src/core/hle/service/vi/vi_m.cpp2
-rw-r--r--src/core/hle/service/vi/vi_m.h1
-rw-r--r--src/core/hle/service/vi/vi_s.cpp2
-rw-r--r--src/core/hle/service/vi/vi_s.h1
-rw-r--r--src/core/hle/service/vi/vi_u.cpp2
-rw-r--r--src/core/hle/service/vi/vi_u.h1
148 files changed, 291 insertions, 45 deletions
diff --git a/src/core/hle/service/acc/acc_aa.cpp b/src/core/hle/service/acc/acc_aa.cpp
index 9bd595a37..e84d9f7cf 100644
--- a/src/core/hle/service/acc/acc_aa.cpp
+++ b/src/core/hle/service/acc/acc_aa.cpp
@@ -18,4 +18,6 @@ ACC_AA::ACC_AA(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> p
18 RegisterHandlers(functions); 18 RegisterHandlers(functions);
19} 19}
20 20
21ACC_AA::~ACC_AA() = default;
22
21} // namespace Service::Account 23} // namespace Service::Account
diff --git a/src/core/hle/service/acc/acc_aa.h b/src/core/hle/service/acc/acc_aa.h
index 2e08c781a..9edb0421b 100644
--- a/src/core/hle/service/acc/acc_aa.h
+++ b/src/core/hle/service/acc/acc_aa.h
@@ -12,6 +12,7 @@ class ACC_AA final : public Module::Interface {
12public: 12public:
13 explicit ACC_AA(std::shared_ptr<Module> module, 13 explicit ACC_AA(std::shared_ptr<Module> module,
14 std::shared_ptr<ProfileManager> profile_manager); 14 std::shared_ptr<ProfileManager> profile_manager);
15 ~ACC_AA() override;
15}; 16};
16 17
17} // namespace Service::Account 18} // namespace Service::Account
diff --git a/src/core/hle/service/acc/acc_su.cpp b/src/core/hle/service/acc/acc_su.cpp
index 0218ee859..ad455c3a7 100644
--- a/src/core/hle/service/acc/acc_su.cpp
+++ b/src/core/hle/service/acc/acc_su.cpp
@@ -51,4 +51,6 @@ ACC_SU::ACC_SU(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> p
51 RegisterHandlers(functions); 51 RegisterHandlers(functions);
52} 52}
53 53
54ACC_SU::~ACC_SU() = default;
55
54} // namespace Service::Account 56} // namespace Service::Account
diff --git a/src/core/hle/service/acc/acc_su.h b/src/core/hle/service/acc/acc_su.h
index 79a47d88d..a3eb885bf 100644
--- a/src/core/hle/service/acc/acc_su.h
+++ b/src/core/hle/service/acc/acc_su.h
@@ -13,6 +13,7 @@ class ACC_SU final : public Module::Interface {
13public: 13public:
14 explicit ACC_SU(std::shared_ptr<Module> module, 14 explicit ACC_SU(std::shared_ptr<Module> module,
15 std::shared_ptr<ProfileManager> profile_manager); 15 std::shared_ptr<ProfileManager> profile_manager);
16 ~ACC_SU() override;
16}; 17};
17 18
18} // namespace Account 19} // namespace Account
diff --git a/src/core/hle/service/acc/acc_u0.cpp b/src/core/hle/service/acc/acc_u0.cpp
index 84a4d05b8..72d4adf35 100644
--- a/src/core/hle/service/acc/acc_u0.cpp
+++ b/src/core/hle/service/acc/acc_u0.cpp
@@ -31,4 +31,6 @@ ACC_U0::ACC_U0(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> p
31 RegisterHandlers(functions); 31 RegisterHandlers(functions);
32} 32}
33 33
34ACC_U0::~ACC_U0() = default;
35
34} // namespace Service::Account 36} // namespace Service::Account
diff --git a/src/core/hle/service/acc/acc_u0.h b/src/core/hle/service/acc/acc_u0.h
index e8a114f99..a1290e0bd 100644
--- a/src/core/hle/service/acc/acc_u0.h
+++ b/src/core/hle/service/acc/acc_u0.h
@@ -12,6 +12,7 @@ class ACC_U0 final : public Module::Interface {
12public: 12public:
13 explicit ACC_U0(std::shared_ptr<Module> module, 13 explicit ACC_U0(std::shared_ptr<Module> module,
14 std::shared_ptr<ProfileManager> profile_manager); 14 std::shared_ptr<ProfileManager> profile_manager);
15 ~ACC_U0() override;
15}; 16};
16 17
17} // namespace Service::Account 18} // namespace Service::Account
diff --git a/src/core/hle/service/acc/acc_u1.cpp b/src/core/hle/service/acc/acc_u1.cpp
index 495693949..d480f08e5 100644
--- a/src/core/hle/service/acc/acc_u1.cpp
+++ b/src/core/hle/service/acc/acc_u1.cpp
@@ -38,4 +38,6 @@ ACC_U1::ACC_U1(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> p
38 RegisterHandlers(functions); 38 RegisterHandlers(functions);
39} 39}
40 40
41ACC_U1::~ACC_U1() = default;
42
41} // namespace Service::Account 43} // namespace Service::Account
diff --git a/src/core/hle/service/acc/acc_u1.h b/src/core/hle/service/acc/acc_u1.h
index a77520e6f..9e79daee3 100644
--- a/src/core/hle/service/acc/acc_u1.h
+++ b/src/core/hle/service/acc/acc_u1.h
@@ -12,6 +12,7 @@ class ACC_U1 final : public Module::Interface {
12public: 12public:
13 explicit ACC_U1(std::shared_ptr<Module> module, 13 explicit ACC_U1(std::shared_ptr<Module> module,
14 std::shared_ptr<ProfileManager> profile_manager); 14 std::shared_ptr<ProfileManager> profile_manager);
15 ~ACC_U1() override;
15}; 16};
16 17
17} // namespace Service::Account 18} // namespace Service::Account
diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp
index e0b03d763..4ccebef23 100644
--- a/src/core/hle/service/acc/profile_manager.cpp
+++ b/src/core/hle/service/acc/profile_manager.cpp
@@ -29,6 +29,8 @@ ProfileManager::ProfileManager() {
29 OpenUser(user_uuid); 29 OpenUser(user_uuid);
30} 30}
31 31
32ProfileManager::~ProfileManager() = default;
33
32/// After a users creation it needs to be "registered" to the system. AddToProfiles handles the 34/// After a users creation it needs to be "registered" to the system. AddToProfiles handles the
33/// internal management of the users profiles 35/// internal management of the users profiles
34boost::optional<size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) { 36boost::optional<size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) {
diff --git a/src/core/hle/service/acc/profile_manager.h b/src/core/hle/service/acc/profile_manager.h
index 52967844d..cd8df93a5 100644
--- a/src/core/hle/service/acc/profile_manager.h
+++ b/src/core/hle/service/acc/profile_manager.h
@@ -82,6 +82,8 @@ static_assert(sizeof(ProfileBase) == 0x38, "ProfileBase is an invalid size");
82class ProfileManager { 82class ProfileManager {
83public: 83public:
84 ProfileManager(); // TODO(ogniK): Load from system save 84 ProfileManager(); // TODO(ogniK): Load from system save
85 ~ProfileManager();
86
85 ResultCode AddUser(const ProfileInfo& user); 87 ResultCode AddUser(const ProfileInfo& user);
86 ResultCode CreateNewUser(UUID uuid, const ProfileUsername& username); 88 ResultCode CreateNewUser(UUID uuid, const ProfileUsername& username);
87 ResultCode CreateNewUser(UUID uuid, const std::string& username); 89 ResultCode CreateNewUser(UUID uuid, const std::string& username);
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index 818c03e0f..a57ed3042 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -35,6 +35,8 @@ IWindowController::IWindowController() : ServiceFramework("IWindowController") {
35 RegisterHandlers(functions); 35 RegisterHandlers(functions);
36} 36}
37 37
38IWindowController::~IWindowController() = default;
39
38void IWindowController::GetAppletResourceUserId(Kernel::HLERequestContext& ctx) { 40void IWindowController::GetAppletResourceUserId(Kernel::HLERequestContext& ctx) {
39 LOG_WARNING(Service_AM, "(STUBBED) called"); 41 LOG_WARNING(Service_AM, "(STUBBED) called");
40 IPC::ResponseBuilder rb{ctx, 4}; 42 IPC::ResponseBuilder rb{ctx, 4};
@@ -61,6 +63,8 @@ IAudioController::IAudioController() : ServiceFramework("IAudioController") {
61 RegisterHandlers(functions); 63 RegisterHandlers(functions);
62} 64}
63 65
66IAudioController::~IAudioController() = default;
67
64void IAudioController::SetExpectedMasterVolume(Kernel::HLERequestContext& ctx) { 68void IAudioController::SetExpectedMasterVolume(Kernel::HLERequestContext& ctx) {
65 LOG_WARNING(Service_AM, "(STUBBED) called"); 69 LOG_WARNING(Service_AM, "(STUBBED) called");
66 IPC::ResponseBuilder rb{ctx, 2}; 70 IPC::ResponseBuilder rb{ctx, 2};
@@ -116,7 +120,10 @@ IDisplayController::IDisplayController() : ServiceFramework("IDisplayController"
116 RegisterHandlers(functions); 120 RegisterHandlers(functions);
117} 121}
118 122
123IDisplayController::~IDisplayController() = default;
124
119IDebugFunctions::IDebugFunctions() : ServiceFramework("IDebugFunctions") {} 125IDebugFunctions::IDebugFunctions() : ServiceFramework("IDebugFunctions") {}
126IDebugFunctions::~IDebugFunctions() = default;
120 127
121ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger) 128ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
122 : ServiceFramework("ISelfController"), nvflinger(std::move(nvflinger)) { 129 : ServiceFramework("ISelfController"), nvflinger(std::move(nvflinger)) {
@@ -165,6 +172,8 @@ ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger
165 Kernel::Event::Create(kernel, Kernel::ResetType::Sticky, "ISelfController:LaunchableEvent"); 172 Kernel::Event::Create(kernel, Kernel::ResetType::Sticky, "ISelfController:LaunchableEvent");
166} 173}
167 174
175ISelfController::~ISelfController() = default;
176
168void ISelfController::SetFocusHandlingMode(Kernel::HLERequestContext& ctx) { 177void ISelfController::SetFocusHandlingMode(Kernel::HLERequestContext& ctx) {
169 // Takes 3 input u8s with each field located immediately after the previous u8, these are 178 // Takes 3 input u8s with each field located immediately after the previous u8, these are
170 // bool flags. No output. 179 // bool flags. No output.
@@ -337,6 +346,8 @@ ICommonStateGetter::ICommonStateGetter() : ServiceFramework("ICommonStateGetter"
337 event = Kernel::Event::Create(kernel, Kernel::ResetType::OneShot, "ICommonStateGetter:Event"); 346 event = Kernel::Event::Create(kernel, Kernel::ResetType::OneShot, "ICommonStateGetter:Event");
338} 347}
339 348
349ICommonStateGetter::~ICommonStateGetter() = default;
350
340void ICommonStateGetter::GetBootMode(Kernel::HLERequestContext& ctx) { 351void ICommonStateGetter::GetBootMode(Kernel::HLERequestContext& ctx) {
341 IPC::ResponseBuilder rb{ctx, 3}; 352 IPC::ResponseBuilder rb{ctx, 3};
342 rb.Push(RESULT_SUCCESS); 353 rb.Push(RESULT_SUCCESS);
@@ -573,6 +584,8 @@ ILibraryAppletCreator::ILibraryAppletCreator() : ServiceFramework("ILibraryApple
573 RegisterHandlers(functions); 584 RegisterHandlers(functions);
574} 585}
575 586
587ILibraryAppletCreator::~ILibraryAppletCreator() = default;
588
576void ILibraryAppletCreator::CreateLibraryApplet(Kernel::HLERequestContext& ctx) { 589void ILibraryAppletCreator::CreateLibraryApplet(Kernel::HLERequestContext& ctx) {
577 IPC::ResponseBuilder rb{ctx, 2, 0, 1}; 590 IPC::ResponseBuilder rb{ctx, 2, 0, 1};
578 591
@@ -638,6 +651,8 @@ IApplicationFunctions::IApplicationFunctions() : ServiceFramework("IApplicationF
638 RegisterHandlers(functions); 651 RegisterHandlers(functions);
639} 652}
640 653
654IApplicationFunctions::~IApplicationFunctions() = default;
655
641void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) { 656void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) {
642 constexpr std::array<u8, 0x88> data{{ 657 constexpr std::array<u8, 0x88> data{{
643 0xca, 0x97, 0x94, 0xc7, // Magic 658 0xca, 0x97, 0x94, 0xc7, // Magic
@@ -760,6 +775,8 @@ IHomeMenuFunctions::IHomeMenuFunctions() : ServiceFramework("IHomeMenuFunctions"
760 RegisterHandlers(functions); 775 RegisterHandlers(functions);
761} 776}
762 777
778IHomeMenuFunctions::~IHomeMenuFunctions() = default;
779
763void IHomeMenuFunctions::RequestToGetForeground(Kernel::HLERequestContext& ctx) { 780void IHomeMenuFunctions::RequestToGetForeground(Kernel::HLERequestContext& ctx) {
764 IPC::ResponseBuilder rb{ctx, 2}; 781 IPC::ResponseBuilder rb{ctx, 2};
765 rb.Push(RESULT_SUCCESS); 782 rb.Push(RESULT_SUCCESS);
@@ -783,6 +800,8 @@ IGlobalStateController::IGlobalStateController() : ServiceFramework("IGlobalStat
783 RegisterHandlers(functions); 800 RegisterHandlers(functions);
784} 801}
785 802
803IGlobalStateController::~IGlobalStateController() = default;
804
786IApplicationCreator::IApplicationCreator() : ServiceFramework("IApplicationCreator") { 805IApplicationCreator::IApplicationCreator() : ServiceFramework("IApplicationCreator") {
787 static const FunctionInfo functions[] = { 806 static const FunctionInfo functions[] = {
788 {0, nullptr, "CreateApplication"}, 807 {0, nullptr, "CreateApplication"},
@@ -793,6 +812,8 @@ IApplicationCreator::IApplicationCreator() : ServiceFramework("IApplicationCreat
793 RegisterHandlers(functions); 812 RegisterHandlers(functions);
794} 813}
795 814
815IApplicationCreator::~IApplicationCreator() = default;
816
796IProcessWindingController::IProcessWindingController() 817IProcessWindingController::IProcessWindingController()
797 : ServiceFramework("IProcessWindingController") { 818 : ServiceFramework("IProcessWindingController") {
798 static const FunctionInfo functions[] = { 819 static const FunctionInfo functions[] = {
@@ -807,4 +828,6 @@ IProcessWindingController::IProcessWindingController()
807 }; 828 };
808 RegisterHandlers(functions); 829 RegisterHandlers(functions);
809} 830}
831
832IProcessWindingController::~IProcessWindingController() = default;
810} // namespace Service::AM 833} // namespace Service::AM
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h
index 9e8bb4e43..fd9ae296b 100644
--- a/src/core/hle/service/am/am.h
+++ b/src/core/hle/service/am/am.h
@@ -42,6 +42,7 @@ enum SystemLanguage {
42class IWindowController final : public ServiceFramework<IWindowController> { 42class IWindowController final : public ServiceFramework<IWindowController> {
43public: 43public:
44 IWindowController(); 44 IWindowController();
45 ~IWindowController() override;
45 46
46private: 47private:
47 void GetAppletResourceUserId(Kernel::HLERequestContext& ctx); 48 void GetAppletResourceUserId(Kernel::HLERequestContext& ctx);
@@ -51,6 +52,7 @@ private:
51class IAudioController final : public ServiceFramework<IAudioController> { 52class IAudioController final : public ServiceFramework<IAudioController> {
52public: 53public:
53 IAudioController(); 54 IAudioController();
55 ~IAudioController() override;
54 56
55private: 57private:
56 void SetExpectedMasterVolume(Kernel::HLERequestContext& ctx); 58 void SetExpectedMasterVolume(Kernel::HLERequestContext& ctx);
@@ -63,16 +65,19 @@ private:
63class IDisplayController final : public ServiceFramework<IDisplayController> { 65class IDisplayController final : public ServiceFramework<IDisplayController> {
64public: 66public:
65 IDisplayController(); 67 IDisplayController();
68 ~IDisplayController() override;
66}; 69};
67 70
68class IDebugFunctions final : public ServiceFramework<IDebugFunctions> { 71class IDebugFunctions final : public ServiceFramework<IDebugFunctions> {
69public: 72public:
70 IDebugFunctions(); 73 IDebugFunctions();
74 ~IDebugFunctions() override;
71}; 75};
72 76
73class ISelfController final : public ServiceFramework<ISelfController> { 77class ISelfController final : public ServiceFramework<ISelfController> {
74public: 78public:
75 explicit ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger); 79 explicit ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger);
80 ~ISelfController() override;
76 81
77private: 82private:
78 void SetFocusHandlingMode(Kernel::HLERequestContext& ctx); 83 void SetFocusHandlingMode(Kernel::HLERequestContext& ctx);
@@ -98,6 +103,7 @@ private:
98class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> { 103class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> {
99public: 104public:
100 ICommonStateGetter(); 105 ICommonStateGetter();
106 ~ICommonStateGetter() override;
101 107
102private: 108private:
103 enum class FocusState : u8 { 109 enum class FocusState : u8 {
@@ -124,6 +130,7 @@ private:
124class ILibraryAppletCreator final : public ServiceFramework<ILibraryAppletCreator> { 130class ILibraryAppletCreator final : public ServiceFramework<ILibraryAppletCreator> {
125public: 131public:
126 ILibraryAppletCreator(); 132 ILibraryAppletCreator();
133 ~ILibraryAppletCreator() override;
127 134
128private: 135private:
129 void CreateLibraryApplet(Kernel::HLERequestContext& ctx); 136 void CreateLibraryApplet(Kernel::HLERequestContext& ctx);
@@ -133,6 +140,7 @@ private:
133class IApplicationFunctions final : public ServiceFramework<IApplicationFunctions> { 140class IApplicationFunctions final : public ServiceFramework<IApplicationFunctions> {
134public: 141public:
135 IApplicationFunctions(); 142 IApplicationFunctions();
143 ~IApplicationFunctions() override;
136 144
137private: 145private:
138 void PopLaunchParameter(Kernel::HLERequestContext& ctx); 146 void PopLaunchParameter(Kernel::HLERequestContext& ctx);
@@ -150,6 +158,7 @@ private:
150class IHomeMenuFunctions final : public ServiceFramework<IHomeMenuFunctions> { 158class IHomeMenuFunctions final : public ServiceFramework<IHomeMenuFunctions> {
151public: 159public:
152 IHomeMenuFunctions(); 160 IHomeMenuFunctions();
161 ~IHomeMenuFunctions() override;
153 162
154private: 163private:
155 void RequestToGetForeground(Kernel::HLERequestContext& ctx); 164 void RequestToGetForeground(Kernel::HLERequestContext& ctx);
@@ -158,16 +167,19 @@ private:
158class IGlobalStateController final : public ServiceFramework<IGlobalStateController> { 167class IGlobalStateController final : public ServiceFramework<IGlobalStateController> {
159public: 168public:
160 IGlobalStateController(); 169 IGlobalStateController();
170 ~IGlobalStateController() override;
161}; 171};
162 172
163class IApplicationCreator final : public ServiceFramework<IApplicationCreator> { 173class IApplicationCreator final : public ServiceFramework<IApplicationCreator> {
164public: 174public:
165 IApplicationCreator(); 175 IApplicationCreator();
176 ~IApplicationCreator() override;
166}; 177};
167 178
168class IProcessWindingController final : public ServiceFramework<IProcessWindingController> { 179class IProcessWindingController final : public ServiceFramework<IProcessWindingController> {
169public: 180public:
170 IProcessWindingController(); 181 IProcessWindingController();
182 ~IProcessWindingController() override;
171}; 183};
172 184
173/// Registers all AM services with the specified service manager. 185/// Registers all AM services with the specified service manager.
diff --git a/src/core/hle/service/am/applet_ae.cpp b/src/core/hle/service/am/applet_ae.cpp
index 7cebc918a..4296c255e 100644
--- a/src/core/hle/service/am/applet_ae.cpp
+++ b/src/core/hle/service/am/applet_ae.cpp
@@ -222,4 +222,6 @@ AppletAE::AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
222 RegisterHandlers(functions); 222 RegisterHandlers(functions);
223} 223}
224 224
225AppletAE::~AppletAE() = default;
226
225} // namespace Service::AM 227} // namespace Service::AM
diff --git a/src/core/hle/service/am/applet_ae.h b/src/core/hle/service/am/applet_ae.h
index bdc57b9bc..1ed77baa4 100644
--- a/src/core/hle/service/am/applet_ae.h
+++ b/src/core/hle/service/am/applet_ae.h
@@ -18,7 +18,7 @@ namespace AM {
18class AppletAE final : public ServiceFramework<AppletAE> { 18class AppletAE final : public ServiceFramework<AppletAE> {
19public: 19public:
20 explicit AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger); 20 explicit AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger);
21 ~AppletAE() = default; 21 ~AppletAE() override;
22 22
23private: 23private:
24 void OpenSystemAppletProxy(Kernel::HLERequestContext& ctx); 24 void OpenSystemAppletProxy(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/am/applet_oe.cpp b/src/core/hle/service/am/applet_oe.cpp
index beea7d19b..e45cf6e20 100644
--- a/src/core/hle/service/am/applet_oe.cpp
+++ b/src/core/hle/service/am/applet_oe.cpp
@@ -103,4 +103,6 @@ AppletOE::AppletOE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
103 RegisterHandlers(functions); 103 RegisterHandlers(functions);
104} 104}
105 105
106AppletOE::~AppletOE() = default;
107
106} // namespace Service::AM 108} // namespace Service::AM
diff --git a/src/core/hle/service/am/applet_oe.h b/src/core/hle/service/am/applet_oe.h
index c52e2a322..60cfdfd9d 100644
--- a/src/core/hle/service/am/applet_oe.h
+++ b/src/core/hle/service/am/applet_oe.h
@@ -18,7 +18,7 @@ namespace AM {
18class AppletOE final : public ServiceFramework<AppletOE> { 18class AppletOE final : public ServiceFramework<AppletOE> {
19public: 19public:
20 explicit AppletOE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger); 20 explicit AppletOE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger);
21 ~AppletOE() = default; 21 ~AppletOE() override;
22 22
23private: 23private:
24 void OpenApplicationProxy(Kernel::HLERequestContext& ctx); 24 void OpenApplicationProxy(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/am/idle.cpp b/src/core/hle/service/am/idle.cpp
index af46e9494..0e3088bc8 100644
--- a/src/core/hle/service/am/idle.cpp
+++ b/src/core/hle/service/am/idle.cpp
@@ -21,4 +21,6 @@ IdleSys::IdleSys() : ServiceFramework{"idle:sys"} {
21 RegisterHandlers(functions); 21 RegisterHandlers(functions);
22} 22}
23 23
24IdleSys::~IdleSys() = default;
25
24} // namespace Service::AM 26} // namespace Service::AM
diff --git a/src/core/hle/service/am/idle.h b/src/core/hle/service/am/idle.h
index 1eb68d2c9..c44e856b1 100644
--- a/src/core/hle/service/am/idle.h
+++ b/src/core/hle/service/am/idle.h
@@ -11,6 +11,7 @@ namespace Service::AM {
11class IdleSys final : public ServiceFramework<IdleSys> { 11class IdleSys final : public ServiceFramework<IdleSys> {
12public: 12public:
13 explicit IdleSys(); 13 explicit IdleSys();
14 ~IdleSys() override;
14}; 15};
15 16
16} // namespace Service::AM 17} // namespace Service::AM
diff --git a/src/core/hle/service/am/omm.cpp b/src/core/hle/service/am/omm.cpp
index 447fe8669..1c37f849f 100644
--- a/src/core/hle/service/am/omm.cpp
+++ b/src/core/hle/service/am/omm.cpp
@@ -39,4 +39,6 @@ OMM::OMM() : ServiceFramework{"omm"} {
39 RegisterHandlers(functions); 39 RegisterHandlers(functions);
40} 40}
41 41
42OMM::~OMM() = default;
43
42} // namespace Service::AM 44} // namespace Service::AM
diff --git a/src/core/hle/service/am/omm.h b/src/core/hle/service/am/omm.h
index 49e5d331c..59dc91b72 100644
--- a/src/core/hle/service/am/omm.h
+++ b/src/core/hle/service/am/omm.h
@@ -11,6 +11,7 @@ namespace Service::AM {
11class OMM final : public ServiceFramework<OMM> { 11class OMM final : public ServiceFramework<OMM> {
12public: 12public:
13 explicit OMM(); 13 explicit OMM();
14 ~OMM() override;
14}; 15};
15 16
16} // namespace Service::AM 17} // namespace Service::AM
diff --git a/src/core/hle/service/am/spsm.cpp b/src/core/hle/service/am/spsm.cpp
index a05d433d0..003ee8667 100644
--- a/src/core/hle/service/am/spsm.cpp
+++ b/src/core/hle/service/am/spsm.cpp
@@ -27,4 +27,6 @@ SPSM::SPSM() : ServiceFramework{"spsm"} {
27 RegisterHandlers(functions); 27 RegisterHandlers(functions);
28} 28}
29 29
30SPSM::~SPSM() = default;
31
30} // namespace Service::AM 32} // namespace Service::AM
diff --git a/src/core/hle/service/am/spsm.h b/src/core/hle/service/am/spsm.h
index 57dde62e1..3a0b979fa 100644
--- a/src/core/hle/service/am/spsm.h
+++ b/src/core/hle/service/am/spsm.h
@@ -11,6 +11,7 @@ namespace Service::AM {
11class SPSM final : public ServiceFramework<SPSM> { 11class SPSM final : public ServiceFramework<SPSM> {
12public: 12public:
13 explicit SPSM(); 13 explicit SPSM();
14 ~SPSM() override;
14}; 15};
15 16
16} // namespace Service::AM 17} // namespace Service::AM
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp
index 6e7438580..d9eeac9ec 100644
--- a/src/core/hle/service/aoc/aoc_u.cpp
+++ b/src/core/hle/service/aoc/aoc_u.cpp
@@ -23,6 +23,8 @@ AOC_U::AOC_U() : ServiceFramework("aoc:u") {
23 RegisterHandlers(functions); 23 RegisterHandlers(functions);
24} 24}
25 25
26AOC_U::~AOC_U() = default;
27
26void AOC_U::CountAddOnContent(Kernel::HLERequestContext& ctx) { 28void AOC_U::CountAddOnContent(Kernel::HLERequestContext& ctx) {
27 IPC::ResponseBuilder rb{ctx, 4}; 29 IPC::ResponseBuilder rb{ctx, 4};
28 rb.Push(RESULT_SUCCESS); 30 rb.Push(RESULT_SUCCESS);
diff --git a/src/core/hle/service/aoc/aoc_u.h b/src/core/hle/service/aoc/aoc_u.h
index 17d48ef30..29ce8f488 100644
--- a/src/core/hle/service/aoc/aoc_u.h
+++ b/src/core/hle/service/aoc/aoc_u.h
@@ -11,7 +11,7 @@ namespace Service::AOC {
11class AOC_U final : public ServiceFramework<AOC_U> { 11class AOC_U final : public ServiceFramework<AOC_U> {
12public: 12public:
13 AOC_U(); 13 AOC_U();
14 ~AOC_U() = default; 14 ~AOC_U() override;
15 15
16private: 16private:
17 void CountAddOnContent(Kernel::HLERequestContext& ctx); 17 void CountAddOnContent(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/apm/apm.cpp b/src/core/hle/service/apm/apm.cpp
index 4109cb7f7..f3c09bbb1 100644
--- a/src/core/hle/service/apm/apm.cpp
+++ b/src/core/hle/service/apm/apm.cpp
@@ -9,6 +9,9 @@
9 9
10namespace Service::APM { 10namespace Service::APM {
11 11
12Module::Module() = default;
13Module::~Module() = default;
14
12void InstallInterfaces(SM::ServiceManager& service_manager) { 15void InstallInterfaces(SM::ServiceManager& service_manager) {
13 auto module_ = std::make_shared<Module>(); 16 auto module_ = std::make_shared<Module>();
14 std::make_shared<APM>(module_, "apm")->InstallAsService(service_manager); 17 std::make_shared<APM>(module_, "apm")->InstallAsService(service_manager);
diff --git a/src/core/hle/service/apm/apm.h b/src/core/hle/service/apm/apm.h
index 90a80d51b..4d7d5bb7c 100644
--- a/src/core/hle/service/apm/apm.h
+++ b/src/core/hle/service/apm/apm.h
@@ -15,8 +15,8 @@ enum class PerformanceMode : u8 {
15 15
16class Module final { 16class Module final {
17public: 17public:
18 Module() = default; 18 Module();
19 ~Module() = default; 19 ~Module();
20}; 20};
21 21
22/// Registers all AM services with the specified service manager. 22/// Registers all AM services with the specified service manager.
diff --git a/src/core/hle/service/apm/interface.cpp b/src/core/hle/service/apm/interface.cpp
index 4cd8132f5..c22bd3859 100644
--- a/src/core/hle/service/apm/interface.cpp
+++ b/src/core/hle/service/apm/interface.cpp
@@ -70,6 +70,8 @@ APM::APM(std::shared_ptr<Module> apm, const char* name)
70 RegisterHandlers(functions); 70 RegisterHandlers(functions);
71} 71}
72 72
73APM::~APM() = default;
74
73void APM::OpenSession(Kernel::HLERequestContext& ctx) { 75void APM::OpenSession(Kernel::HLERequestContext& ctx) {
74 IPC::ResponseBuilder rb{ctx, 2, 0, 1}; 76 IPC::ResponseBuilder rb{ctx, 2, 0, 1};
75 rb.Push(RESULT_SUCCESS); 77 rb.Push(RESULT_SUCCESS);
@@ -93,6 +95,8 @@ APM_Sys::APM_Sys() : ServiceFramework{"apm:sys"} {
93 RegisterHandlers(functions); 95 RegisterHandlers(functions);
94} 96}
95 97
98APM_Sys::~APM_Sys() = default;
99
96void APM_Sys::GetPerformanceEvent(Kernel::HLERequestContext& ctx) { 100void APM_Sys::GetPerformanceEvent(Kernel::HLERequestContext& ctx) {
97 IPC::ResponseBuilder rb{ctx, 2, 0, 1}; 101 IPC::ResponseBuilder rb{ctx, 2, 0, 1};
98 rb.Push(RESULT_SUCCESS); 102 rb.Push(RESULT_SUCCESS);
diff --git a/src/core/hle/service/apm/interface.h b/src/core/hle/service/apm/interface.h
index d14264ad7..773541aa4 100644
--- a/src/core/hle/service/apm/interface.h
+++ b/src/core/hle/service/apm/interface.h
@@ -11,7 +11,7 @@ namespace Service::APM {
11class APM final : public ServiceFramework<APM> { 11class APM final : public ServiceFramework<APM> {
12public: 12public:
13 explicit APM(std::shared_ptr<Module> apm, const char* name); 13 explicit APM(std::shared_ptr<Module> apm, const char* name);
14 ~APM() = default; 14 ~APM() override;
15 15
16private: 16private:
17 void OpenSession(Kernel::HLERequestContext& ctx); 17 void OpenSession(Kernel::HLERequestContext& ctx);
@@ -22,6 +22,7 @@ private:
22class APM_Sys final : public ServiceFramework<APM_Sys> { 22class APM_Sys final : public ServiceFramework<APM_Sys> {
23public: 23public:
24 explicit APM_Sys(); 24 explicit APM_Sys();
25 ~APM_Sys() override;
25 26
26private: 27private:
27 void GetPerformanceEvent(Kernel::HLERequestContext& ctx); 28 void GetPerformanceEvent(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/audio/audctl.cpp b/src/core/hle/service/audio/audctl.cpp
index 37c3fdcac..b6b71f966 100644
--- a/src/core/hle/service/audio/audctl.cpp
+++ b/src/core/hle/service/audio/audctl.cpp
@@ -42,4 +42,6 @@ AudCtl::AudCtl() : ServiceFramework{"audctl"} {
42 RegisterHandlers(functions); 42 RegisterHandlers(functions);
43} 43}
44 44
45AudCtl::~AudCtl() = default;
46
45} // namespace Service::Audio 47} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audctl.h b/src/core/hle/service/audio/audctl.h
index ed837bdf2..9d2d9e83b 100644
--- a/src/core/hle/service/audio/audctl.h
+++ b/src/core/hle/service/audio/audctl.h
@@ -11,6 +11,7 @@ namespace Service::Audio {
11class AudCtl final : public ServiceFramework<AudCtl> { 11class AudCtl final : public ServiceFramework<AudCtl> {
12public: 12public:
13 explicit AudCtl(); 13 explicit AudCtl();
14 ~AudCtl() override;
14}; 15};
15 16
16} // namespace Service::Audio 17} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/auddbg.cpp b/src/core/hle/service/audio/auddbg.cpp
index b08c21a20..8fff3e4b4 100644
--- a/src/core/hle/service/audio/auddbg.cpp
+++ b/src/core/hle/service/audio/auddbg.cpp
@@ -17,4 +17,6 @@ AudDbg::AudDbg(const char* name) : ServiceFramework{name} {
17 RegisterHandlers(functions); 17 RegisterHandlers(functions);
18} 18}
19 19
20AudDbg::~AudDbg() = default;
21
20} // namespace Service::Audio 22} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/auddbg.h b/src/core/hle/service/audio/auddbg.h
index a2f540b75..6689f4759 100644
--- a/src/core/hle/service/audio/auddbg.h
+++ b/src/core/hle/service/audio/auddbg.h
@@ -11,6 +11,7 @@ namespace Service::Audio {
11class AudDbg final : public ServiceFramework<AudDbg> { 11class AudDbg final : public ServiceFramework<AudDbg> {
12public: 12public:
13 explicit AudDbg(const char* name); 13 explicit AudDbg(const char* name);
14 ~AudDbg() override;
14}; 15};
15 16
16} // namespace Service::Audio 17} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audin_a.cpp b/src/core/hle/service/audio/audin_a.cpp
index a70d5bca4..ddd12f35e 100644
--- a/src/core/hle/service/audio/audin_a.cpp
+++ b/src/core/hle/service/audio/audin_a.cpp
@@ -19,4 +19,6 @@ AudInA::AudInA() : ServiceFramework{"audin:a"} {
19 RegisterHandlers(functions); 19 RegisterHandlers(functions);
20} 20}
21 21
22AudInA::~AudInA() = default;
23
22} // namespace Service::Audio 24} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audin_a.h b/src/core/hle/service/audio/audin_a.h
index e4c75510f..e7623bc29 100644
--- a/src/core/hle/service/audio/audin_a.h
+++ b/src/core/hle/service/audio/audin_a.h
@@ -11,6 +11,7 @@ namespace Service::Audio {
11class AudInA final : public ServiceFramework<AudInA> { 11class AudInA final : public ServiceFramework<AudInA> {
12public: 12public:
13 explicit AudInA(); 13 explicit AudInA();
14 ~AudInA() override;
14}; 15};
15 16
16} // namespace Service::Audio 17} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audin_u.cpp b/src/core/hle/service/audio/audin_u.cpp
index cbc49e55e..657010312 100644
--- a/src/core/hle/service/audio/audin_u.cpp
+++ b/src/core/hle/service/audio/audin_u.cpp
@@ -41,4 +41,6 @@ AudInU::AudInU() : ServiceFramework("audin:u") {
41 RegisterHandlers(functions); 41 RegisterHandlers(functions);
42} 42}
43 43
44AudInU::~AudInU() = default;
45
44} // namespace Service::Audio 46} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audin_u.h b/src/core/hle/service/audio/audin_u.h
index 2e65efb5b..0538b9560 100644
--- a/src/core/hle/service/audio/audin_u.h
+++ b/src/core/hle/service/audio/audin_u.h
@@ -15,7 +15,7 @@ namespace Service::Audio {
15class AudInU final : public ServiceFramework<AudInU> { 15class AudInU final : public ServiceFramework<AudInU> {
16public: 16public:
17 explicit AudInU(); 17 explicit AudInU();
18 ~AudInU() = default; 18 ~AudInU() override;
19}; 19};
20 20
21} // namespace Service::Audio 21} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audout_a.cpp b/src/core/hle/service/audio/audout_a.cpp
index bf8d40157..85febbca3 100644
--- a/src/core/hle/service/audio/audout_a.cpp
+++ b/src/core/hle/service/audio/audout_a.cpp
@@ -21,4 +21,6 @@ AudOutA::AudOutA() : ServiceFramework{"audout:a"} {
21 RegisterHandlers(functions); 21 RegisterHandlers(functions);
22} 22}
23 23
24AudOutA::~AudOutA() = default;
25
24} // namespace Service::Audio 26} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audout_a.h b/src/core/hle/service/audio/audout_a.h
index 91a069152..d65b66e8e 100644
--- a/src/core/hle/service/audio/audout_a.h
+++ b/src/core/hle/service/audio/audout_a.h
@@ -11,6 +11,7 @@ namespace Service::Audio {
11class AudOutA final : public ServiceFramework<AudOutA> { 11class AudOutA final : public ServiceFramework<AudOutA> {
12public: 12public:
13 explicit AudOutA(); 13 explicit AudOutA();
14 ~AudOutA() override;
14}; 15};
15 16
16} // namespace Service::Audio 17} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp
index 5f370bbdf..05100ca8f 100644
--- a/src/core/hle/service/audio/audout_u.cpp
+++ b/src/core/hle/service/audio/audout_u.cpp
@@ -218,4 +218,6 @@ AudOutU::AudOutU() : ServiceFramework("audout:u") {
218 audio_core = std::make_unique<AudioCore::AudioOut>(); 218 audio_core = std::make_unique<AudioCore::AudioOut>();
219} 219}
220 220
221AudOutU::~AudOutU() = default;
222
221} // namespace Service::Audio 223} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audout_u.h b/src/core/hle/service/audio/audout_u.h
index fd491f65d..aa52d3855 100644
--- a/src/core/hle/service/audio/audout_u.h
+++ b/src/core/hle/service/audio/audout_u.h
@@ -30,7 +30,7 @@ class IAudioOut;
30class AudOutU final : public ServiceFramework<AudOutU> { 30class AudOutU final : public ServiceFramework<AudOutU> {
31public: 31public:
32 AudOutU(); 32 AudOutU();
33 ~AudOutU() = default; 33 ~AudOutU() override;
34 34
35private: 35private:
36 std::shared_ptr<IAudioOut> audio_out_interface; 36 std::shared_ptr<IAudioOut> audio_out_interface;
diff --git a/src/core/hle/service/audio/audrec_a.cpp b/src/core/hle/service/audio/audrec_a.cpp
index 016eabf53..ce1bfb48d 100644
--- a/src/core/hle/service/audio/audrec_a.cpp
+++ b/src/core/hle/service/audio/audrec_a.cpp
@@ -17,4 +17,6 @@ AudRecA::AudRecA() : ServiceFramework{"audrec:a"} {
17 RegisterHandlers(functions); 17 RegisterHandlers(functions);
18} 18}
19 19
20AudRecA::~AudRecA() = default;
21
20} // namespace Service::Audio 22} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audrec_a.h b/src/core/hle/service/audio/audrec_a.h
index 9685047f2..384d24c69 100644
--- a/src/core/hle/service/audio/audrec_a.h
+++ b/src/core/hle/service/audio/audrec_a.h
@@ -11,6 +11,7 @@ namespace Service::Audio {
11class AudRecA final : public ServiceFramework<AudRecA> { 11class AudRecA final : public ServiceFramework<AudRecA> {
12public: 12public:
13 explicit AudRecA(); 13 explicit AudRecA();
14 ~AudRecA() override;
14}; 15};
15 16
16} // namespace Service::Audio 17} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audrec_u.cpp b/src/core/hle/service/audio/audrec_u.cpp
index 74909415c..34974afa9 100644
--- a/src/core/hle/service/audio/audrec_u.cpp
+++ b/src/core/hle/service/audio/audrec_u.cpp
@@ -36,4 +36,6 @@ AudRecU::AudRecU() : ServiceFramework("audrec:u") {
36 RegisterHandlers(functions); 36 RegisterHandlers(functions);
37} 37}
38 38
39AudRecU::~AudRecU() = default;
40
39} // namespace Service::Audio 41} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audrec_u.h b/src/core/hle/service/audio/audrec_u.h
index 46daa33a4..ca3d638e8 100644
--- a/src/core/hle/service/audio/audrec_u.h
+++ b/src/core/hle/service/audio/audrec_u.h
@@ -15,7 +15,7 @@ namespace Service::Audio {
15class AudRecU final : public ServiceFramework<AudRecU> { 15class AudRecU final : public ServiceFramework<AudRecU> {
16public: 16public:
17 explicit AudRecU(); 17 explicit AudRecU();
18 ~AudRecU() = default; 18 ~AudRecU() override;
19}; 19};
20 20
21} // namespace Service::Audio 21} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audren_a.cpp b/src/core/hle/service/audio/audren_a.cpp
index 616ff3dc4..edb66d985 100644
--- a/src/core/hle/service/audio/audren_a.cpp
+++ b/src/core/hle/service/audio/audren_a.cpp
@@ -23,4 +23,6 @@ AudRenA::AudRenA() : ServiceFramework{"audren:a"} {
23 RegisterHandlers(functions); 23 RegisterHandlers(functions);
24} 24}
25 25
26AudRenA::~AudRenA() = default;
27
26} // namespace Service::Audio 28} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audren_a.h b/src/core/hle/service/audio/audren_a.h
index 5ecf2e184..81fef0ffe 100644
--- a/src/core/hle/service/audio/audren_a.h
+++ b/src/core/hle/service/audio/audren_a.h
@@ -11,6 +11,7 @@ namespace Service::Audio {
11class AudRenA final : public ServiceFramework<AudRenA> { 11class AudRenA final : public ServiceFramework<AudRenA> {
12public: 12public:
13 explicit AudRenA(); 13 explicit AudRenA();
14 ~AudRenA() override;
14}; 15};
15 16
16} // namespace Service::Audio 17} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp
index 016db7c82..3870bec65 100644
--- a/src/core/hle/service/audio/audren_u.cpp
+++ b/src/core/hle/service/audio/audren_u.cpp
@@ -198,6 +198,8 @@ AudRenU::AudRenU() : ServiceFramework("audren:u") {
198 RegisterHandlers(functions); 198 RegisterHandlers(functions);
199} 199}
200 200
201AudRenU::~AudRenU() = default;
202
201void AudRenU::OpenAudioRenderer(Kernel::HLERequestContext& ctx) { 203void AudRenU::OpenAudioRenderer(Kernel::HLERequestContext& ctx) {
202 IPC::RequestParser rp{ctx}; 204 IPC::RequestParser rp{ctx};
203 auto params = rp.PopRaw<AudioCore::AudioRendererParameter>(); 205 auto params = rp.PopRaw<AudioCore::AudioRendererParameter>();
diff --git a/src/core/hle/service/audio/audren_u.h b/src/core/hle/service/audio/audren_u.h
index 8600ac6e4..85a995a2f 100644
--- a/src/core/hle/service/audio/audren_u.h
+++ b/src/core/hle/service/audio/audren_u.h
@@ -16,7 +16,7 @@ namespace Service::Audio {
16class AudRenU final : public ServiceFramework<AudRenU> { 16class AudRenU final : public ServiceFramework<AudRenU> {
17public: 17public:
18 explicit AudRenU(); 18 explicit AudRenU();
19 ~AudRenU() = default; 19 ~AudRenU() override;
20 20
21private: 21private:
22 void OpenAudioRenderer(Kernel::HLERequestContext& ctx); 22 void OpenAudioRenderer(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/audio/codecctl.cpp b/src/core/hle/service/audio/codecctl.cpp
index 212c8d448..c6864146d 100644
--- a/src/core/hle/service/audio/codecctl.cpp
+++ b/src/core/hle/service/audio/codecctl.cpp
@@ -28,4 +28,6 @@ CodecCtl::CodecCtl() : ServiceFramework("codecctl") {
28 RegisterHandlers(functions); 28 RegisterHandlers(functions);
29} 29}
30 30
31CodecCtl::~CodecCtl() = default;
32
31} // namespace Service::Audio 33} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/codecctl.h b/src/core/hle/service/audio/codecctl.h
index d9ac29b67..2fe75b6e2 100644
--- a/src/core/hle/service/audio/codecctl.h
+++ b/src/core/hle/service/audio/codecctl.h
@@ -15,7 +15,7 @@ namespace Service::Audio {
15class CodecCtl final : public ServiceFramework<CodecCtl> { 15class CodecCtl final : public ServiceFramework<CodecCtl> {
16public: 16public:
17 explicit CodecCtl(); 17 explicit CodecCtl();
18 ~CodecCtl() = default; 18 ~CodecCtl() override;
19}; 19};
20 20
21} // namespace Service::Audio 21} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp
index 371cd4997..341bfda42 100644
--- a/src/core/hle/service/audio/hwopus.cpp
+++ b/src/core/hle/service/audio/hwopus.cpp
@@ -151,4 +151,6 @@ HwOpus::HwOpus() : ServiceFramework("hwopus") {
151 RegisterHandlers(functions); 151 RegisterHandlers(functions);
152} 152}
153 153
154HwOpus::~HwOpus() = default;
155
154} // namespace Service::Audio 156} // namespace Service::Audio
diff --git a/src/core/hle/service/audio/hwopus.h b/src/core/hle/service/audio/hwopus.h
index 5258d59f3..602ede8ba 100644
--- a/src/core/hle/service/audio/hwopus.h
+++ b/src/core/hle/service/audio/hwopus.h
@@ -11,7 +11,7 @@ namespace Service::Audio {
11class HwOpus final : public ServiceFramework<HwOpus> { 11class HwOpus final : public ServiceFramework<HwOpus> {
12public: 12public:
13 explicit HwOpus(); 13 explicit HwOpus();
14 ~HwOpus() = default; 14 ~HwOpus() override;
15 15
16private: 16private:
17 void OpenOpusDecoder(Kernel::HLERequestContext& ctx); 17 void OpenOpusDecoder(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/bcat/bcat.cpp b/src/core/hle/service/bcat/bcat.cpp
index 20ce692dc..179aa4949 100644
--- a/src/core/hle/service/bcat/bcat.cpp
+++ b/src/core/hle/service/bcat/bcat.cpp
@@ -13,4 +13,6 @@ BCAT::BCAT(std::shared_ptr<Module> module, const char* name)
13 }; 13 };
14 RegisterHandlers(functions); 14 RegisterHandlers(functions);
15} 15}
16
17BCAT::~BCAT() = default;
16} // namespace Service::BCAT 18} // namespace Service::BCAT
diff --git a/src/core/hle/service/bcat/bcat.h b/src/core/hle/service/bcat/bcat.h
index 6632996a0..802bd689a 100644
--- a/src/core/hle/service/bcat/bcat.h
+++ b/src/core/hle/service/bcat/bcat.h
@@ -11,6 +11,7 @@ namespace Service::BCAT {
11class BCAT final : public Module::Interface { 11class BCAT final : public Module::Interface {
12public: 12public:
13 explicit BCAT(std::shared_ptr<Module> module, const char* name); 13 explicit BCAT(std::shared_ptr<Module> module, const char* name);
14 ~BCAT() override;
14}; 15};
15 16
16} // namespace Service::BCAT 17} // namespace Service::BCAT
diff --git a/src/core/hle/service/bcat/module.cpp b/src/core/hle/service/bcat/module.cpp
index 35e024c3d..6e7b795fb 100644
--- a/src/core/hle/service/bcat/module.cpp
+++ b/src/core/hle/service/bcat/module.cpp
@@ -42,6 +42,8 @@ void Module::Interface::CreateBcatService(Kernel::HLERequestContext& ctx) {
42Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) 42Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
43 : ServiceFramework(name), module(std::move(module)) {} 43 : ServiceFramework(name), module(std::move(module)) {}
44 44
45Module::Interface::~Interface() = default;
46
45void InstallInterfaces(SM::ServiceManager& service_manager) { 47void InstallInterfaces(SM::ServiceManager& service_manager) {
46 auto module = std::make_shared<Module>(); 48 auto module = std::make_shared<Module>();
47 std::make_shared<BCAT>(module, "bcat:a")->InstallAsService(service_manager); 49 std::make_shared<BCAT>(module, "bcat:a")->InstallAsService(service_manager);
diff --git a/src/core/hle/service/bcat/module.h b/src/core/hle/service/bcat/module.h
index 62f6f5f9d..f0d63cab0 100644
--- a/src/core/hle/service/bcat/module.h
+++ b/src/core/hle/service/bcat/module.h
@@ -13,6 +13,7 @@ public:
13 class Interface : public ServiceFramework<Interface> { 13 class Interface : public ServiceFramework<Interface> {
14 public: 14 public:
15 explicit Interface(std::shared_ptr<Module> module, const char* name); 15 explicit Interface(std::shared_ptr<Module> module, const char* name);
16 ~Interface() override;
16 17
17 void CreateBcatService(Kernel::HLERequestContext& ctx); 18 void CreateBcatService(Kernel::HLERequestContext& ctx);
18 19
diff --git a/src/core/hle/service/fatal/fatal.cpp b/src/core/hle/service/fatal/fatal.cpp
index 299b9474f..b436ce4e6 100644
--- a/src/core/hle/service/fatal/fatal.cpp
+++ b/src/core/hle/service/fatal/fatal.cpp
@@ -13,6 +13,8 @@ namespace Service::Fatal {
13Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) 13Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
14 : ServiceFramework(name), module(std::move(module)) {} 14 : ServiceFramework(name), module(std::move(module)) {}
15 15
16Module::Interface::~Interface() = default;
17
16void Module::Interface::ThrowFatalWithPolicy(Kernel::HLERequestContext& ctx) { 18void Module::Interface::ThrowFatalWithPolicy(Kernel::HLERequestContext& ctx) {
17 IPC::RequestParser rp(ctx); 19 IPC::RequestParser rp(ctx);
18 u32 error_code = rp.Pop<u32>(); 20 u32 error_code = rp.Pop<u32>();
diff --git a/src/core/hle/service/fatal/fatal.h b/src/core/hle/service/fatal/fatal.h
index ca607e236..4d9a5be52 100644
--- a/src/core/hle/service/fatal/fatal.h
+++ b/src/core/hle/service/fatal/fatal.h
@@ -13,6 +13,7 @@ public:
13 class Interface : public ServiceFramework<Interface> { 13 class Interface : public ServiceFramework<Interface> {
14 public: 14 public:
15 explicit Interface(std::shared_ptr<Module> module, const char* name); 15 explicit Interface(std::shared_ptr<Module> module, const char* name);
16 ~Interface() override;
16 17
17 void ThrowFatalWithPolicy(Kernel::HLERequestContext& ctx); 18 void ThrowFatalWithPolicy(Kernel::HLERequestContext& ctx);
18 void ThrowFatalWithCpuContext(Kernel::HLERequestContext& ctx); 19 void ThrowFatalWithCpuContext(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/fatal/fatal_p.cpp b/src/core/hle/service/fatal/fatal_p.cpp
index a5254ac2f..9e5f872ff 100644
--- a/src/core/hle/service/fatal/fatal_p.cpp
+++ b/src/core/hle/service/fatal/fatal_p.cpp
@@ -9,4 +9,6 @@ namespace Service::Fatal {
9Fatal_P::Fatal_P(std::shared_ptr<Module> module) 9Fatal_P::Fatal_P(std::shared_ptr<Module> module)
10 : Module::Interface(std::move(module), "fatal:p") {} 10 : Module::Interface(std::move(module), "fatal:p") {}
11 11
12Fatal_P::~Fatal_P() = default;
13
12} // namespace Service::Fatal 14} // namespace Service::Fatal
diff --git a/src/core/hle/service/fatal/fatal_p.h b/src/core/hle/service/fatal/fatal_p.h
index bfd8c8b74..6e9c5979f 100644
--- a/src/core/hle/service/fatal/fatal_p.h
+++ b/src/core/hle/service/fatal/fatal_p.h
@@ -11,6 +11,7 @@ namespace Service::Fatal {
11class Fatal_P final : public Module::Interface { 11class Fatal_P final : public Module::Interface {
12public: 12public:
13 explicit Fatal_P(std::shared_ptr<Module> module); 13 explicit Fatal_P(std::shared_ptr<Module> module);
14 ~Fatal_P() override;
14}; 15};
15 16
16} // namespace Service::Fatal 17} // namespace Service::Fatal
diff --git a/src/core/hle/service/fatal/fatal_u.cpp b/src/core/hle/service/fatal/fatal_u.cpp
index f0631329e..befc307cf 100644
--- a/src/core/hle/service/fatal/fatal_u.cpp
+++ b/src/core/hle/service/fatal/fatal_u.cpp
@@ -15,4 +15,6 @@ Fatal_U::Fatal_U(std::shared_ptr<Module> module) : Module::Interface(std::move(m
15 RegisterHandlers(functions); 15 RegisterHandlers(functions);
16} 16}
17 17
18Fatal_U::~Fatal_U() = default;
19
18} // namespace Service::Fatal 20} // namespace Service::Fatal
diff --git a/src/core/hle/service/fatal/fatal_u.h b/src/core/hle/service/fatal/fatal_u.h
index 9b1a9e97a..72cb6d076 100644
--- a/src/core/hle/service/fatal/fatal_u.h
+++ b/src/core/hle/service/fatal/fatal_u.h
@@ -11,6 +11,7 @@ namespace Service::Fatal {
11class Fatal_U final : public Module::Interface { 11class Fatal_U final : public Module::Interface {
12public: 12public:
13 explicit Fatal_U(std::shared_ptr<Module> module); 13 explicit Fatal_U(std::shared_ptr<Module> module);
14 ~Fatal_U() override;
14}; 15};
15 16
16} // namespace Service::Fatal 17} // namespace Service::Fatal
diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp
index 04c9d750f..5c4971724 100644
--- a/src/core/hle/service/filesystem/filesystem.cpp
+++ b/src/core/hle/service/filesystem/filesystem.cpp
@@ -40,6 +40,8 @@ static FileSys::VirtualDir GetDirectoryRelativeWrapped(FileSys::VirtualDir base,
40VfsDirectoryServiceWrapper::VfsDirectoryServiceWrapper(FileSys::VirtualDir backing_) 40VfsDirectoryServiceWrapper::VfsDirectoryServiceWrapper(FileSys::VirtualDir backing_)
41 : backing(std::move(backing_)) {} 41 : backing(std::move(backing_)) {}
42 42
43VfsDirectoryServiceWrapper::~VfsDirectoryServiceWrapper() = default;
44
43std::string VfsDirectoryServiceWrapper::GetName() const { 45std::string VfsDirectoryServiceWrapper::GetName() const {
44 return backing->GetName(); 46 return backing->GetName();
45} 47}
diff --git a/src/core/hle/service/filesystem/filesystem.h b/src/core/hle/service/filesystem/filesystem.h
index 793a7b06f..aab65a2b8 100644
--- a/src/core/hle/service/filesystem/filesystem.h
+++ b/src/core/hle/service/filesystem/filesystem.h
@@ -64,6 +64,7 @@ void InstallInterfaces(SM::ServiceManager& service_manager, const FileSys::Virtu
64class VfsDirectoryServiceWrapper { 64class VfsDirectoryServiceWrapper {
65public: 65public:
66 explicit VfsDirectoryServiceWrapper(FileSys::VirtualDir backing); 66 explicit VfsDirectoryServiceWrapper(FileSys::VirtualDir backing);
67 ~VfsDirectoryServiceWrapper();
67 68
68 /** 69 /**
69 * Get a descriptive name for the archive (e.g. "RomFS", "SaveData", etc.) 70 * Get a descriptive name for the archive (e.g. "RomFS", "SaveData", etc.)
diff --git a/src/core/hle/service/filesystem/fsp_ldr.cpp b/src/core/hle/service/filesystem/fsp_ldr.cpp
index 0ab9c2606..fb487d5bc 100644
--- a/src/core/hle/service/filesystem/fsp_ldr.cpp
+++ b/src/core/hle/service/filesystem/fsp_ldr.cpp
@@ -19,4 +19,6 @@ FSP_LDR::FSP_LDR() : ServiceFramework{"fsp:ldr"} {
19 RegisterHandlers(functions); 19 RegisterHandlers(functions);
20} 20}
21 21
22FSP_LDR::~FSP_LDR() = default;
23
22} // namespace Service::FileSystem 24} // namespace Service::FileSystem
diff --git a/src/core/hle/service/filesystem/fsp_ldr.h b/src/core/hle/service/filesystem/fsp_ldr.h
index fa8e11b4c..8210b7729 100644
--- a/src/core/hle/service/filesystem/fsp_ldr.h
+++ b/src/core/hle/service/filesystem/fsp_ldr.h
@@ -11,6 +11,7 @@ namespace Service::FileSystem {
11class FSP_LDR final : public ServiceFramework<FSP_LDR> { 11class FSP_LDR final : public ServiceFramework<FSP_LDR> {
12public: 12public:
13 explicit FSP_LDR(); 13 explicit FSP_LDR();
14 ~FSP_LDR() override;
14}; 15};
15 16
16} // namespace Service::FileSystem 17} // namespace Service::FileSystem
diff --git a/src/core/hle/service/filesystem/fsp_pr.cpp b/src/core/hle/service/filesystem/fsp_pr.cpp
index 32b0ae454..378201610 100644
--- a/src/core/hle/service/filesystem/fsp_pr.cpp
+++ b/src/core/hle/service/filesystem/fsp_pr.cpp
@@ -20,4 +20,6 @@ FSP_PR::FSP_PR() : ServiceFramework{"fsp:pr"} {
20 RegisterHandlers(functions); 20 RegisterHandlers(functions);
21} 21}
22 22
23FSP_PR::~FSP_PR() = default;
24
23} // namespace Service::FileSystem 25} // namespace Service::FileSystem
diff --git a/src/core/hle/service/filesystem/fsp_pr.h b/src/core/hle/service/filesystem/fsp_pr.h
index 62edcd08a..556ae5ce9 100644
--- a/src/core/hle/service/filesystem/fsp_pr.h
+++ b/src/core/hle/service/filesystem/fsp_pr.h
@@ -11,6 +11,7 @@ namespace Service::FileSystem {
11class FSP_PR final : public ServiceFramework<FSP_PR> { 11class FSP_PR final : public ServiceFramework<FSP_PR> {
12public: 12public:
13 explicit FSP_PR(); 13 explicit FSP_PR();
14 ~FSP_PR() override;
14}; 15};
15 16
16} // namespace Service::FileSystem 17} // namespace Service::FileSystem
diff --git a/src/core/hle/service/filesystem/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp_srv.cpp
index 3f8ff67e8..cabaf5a55 100644
--- a/src/core/hle/service/filesystem/fsp_srv.cpp
+++ b/src/core/hle/service/filesystem/fsp_srv.cpp
@@ -520,6 +520,8 @@ FSP_SRV::FSP_SRV() : ServiceFramework("fsp-srv") {
520 RegisterHandlers(functions); 520 RegisterHandlers(functions);
521} 521}
522 522
523FSP_SRV::~FSP_SRV() = default;
524
523void FSP_SRV::Initialize(Kernel::HLERequestContext& ctx) { 525void FSP_SRV::Initialize(Kernel::HLERequestContext& ctx) {
524 LOG_WARNING(Service_FS, "(STUBBED) called"); 526 LOG_WARNING(Service_FS, "(STUBBED) called");
525 527
diff --git a/src/core/hle/service/filesystem/fsp_srv.h b/src/core/hle/service/filesystem/fsp_srv.h
index 2b5c21abb..4aa0358cb 100644
--- a/src/core/hle/service/filesystem/fsp_srv.h
+++ b/src/core/hle/service/filesystem/fsp_srv.h
@@ -16,7 +16,7 @@ namespace Service::FileSystem {
16class FSP_SRV final : public ServiceFramework<FSP_SRV> { 16class FSP_SRV final : public ServiceFramework<FSP_SRV> {
17public: 17public:
18 explicit FSP_SRV(); 18 explicit FSP_SRV();
19 ~FSP_SRV() = default; 19 ~FSP_SRV() override;
20 20
21private: 21private:
22 void Initialize(Kernel::HLERequestContext& ctx); 22 void Initialize(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp
index f2b0e509a..d9225d624 100644
--- a/src/core/hle/service/friend/friend.cpp
+++ b/src/core/hle/service/friend/friend.cpp
@@ -118,6 +118,8 @@ void Module::Interface::CreateFriendService(Kernel::HLERequestContext& ctx) {
118Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) 118Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
119 : ServiceFramework(name), module(std::move(module)) {} 119 : ServiceFramework(name), module(std::move(module)) {}
120 120
121Module::Interface::~Interface() = default;
122
121void InstallInterfaces(SM::ServiceManager& service_manager) { 123void InstallInterfaces(SM::ServiceManager& service_manager) {
122 auto module = std::make_shared<Module>(); 124 auto module = std::make_shared<Module>();
123 std::make_shared<Friend>(module, "friend:a")->InstallAsService(service_manager); 125 std::make_shared<Friend>(module, "friend:a")->InstallAsService(service_manager);
diff --git a/src/core/hle/service/friend/friend.h b/src/core/hle/service/friend/friend.h
index c1b36518a..e762840cb 100644
--- a/src/core/hle/service/friend/friend.h
+++ b/src/core/hle/service/friend/friend.h
@@ -13,6 +13,7 @@ public:
13 class Interface : public ServiceFramework<Interface> { 13 class Interface : public ServiceFramework<Interface> {
14 public: 14 public:
15 explicit Interface(std::shared_ptr<Module> module, const char* name); 15 explicit Interface(std::shared_ptr<Module> module, const char* name);
16 ~Interface() override;
16 17
17 void CreateFriendService(Kernel::HLERequestContext& ctx); 18 void CreateFriendService(Kernel::HLERequestContext& ctx);
18 19
diff --git a/src/core/hle/service/friend/interface.cpp b/src/core/hle/service/friend/interface.cpp
index 27c6a09e2..5a6840af5 100644
--- a/src/core/hle/service/friend/interface.cpp
+++ b/src/core/hle/service/friend/interface.cpp
@@ -16,4 +16,6 @@ Friend::Friend(std::shared_ptr<Module> module, const char* name)
16 RegisterHandlers(functions); 16 RegisterHandlers(functions);
17} 17}
18 18
19Friend::~Friend() = default;
20
19} // namespace Service::Friend 21} // namespace Service::Friend
diff --git a/src/core/hle/service/friend/interface.h b/src/core/hle/service/friend/interface.h
index 89dae8471..1963def39 100644
--- a/src/core/hle/service/friend/interface.h
+++ b/src/core/hle/service/friend/interface.h
@@ -11,6 +11,7 @@ namespace Service::Friend {
11class Friend final : public Module::Interface { 11class Friend final : public Module::Interface {
12public: 12public:
13 explicit Friend(std::shared_ptr<Module> module, const char* name); 13 explicit Friend(std::shared_ptr<Module> module, const char* name);
14 ~Friend() override;
14}; 15};
15 16
16} // namespace Service::Friend 17} // namespace Service::Friend
diff --git a/src/core/hle/service/hid/irs.cpp b/src/core/hle/service/hid/irs.cpp
index aaf311912..e587ad0d8 100644
--- a/src/core/hle/service/hid/irs.cpp
+++ b/src/core/hle/service/hid/irs.cpp
@@ -33,6 +33,8 @@ IRS::IRS() : ServiceFramework{"irs"} {
33 RegisterHandlers(functions); 33 RegisterHandlers(functions);
34} 34}
35 35
36IRS::~IRS() = default;
37
36IRS_SYS::IRS_SYS() : ServiceFramework{"irs:sys"} { 38IRS_SYS::IRS_SYS() : ServiceFramework{"irs:sys"} {
37 // clang-format off 39 // clang-format off
38 static const FunctionInfo functions[] = { 40 static const FunctionInfo functions[] = {
@@ -46,4 +48,6 @@ IRS_SYS::IRS_SYS() : ServiceFramework{"irs:sys"} {
46 RegisterHandlers(functions); 48 RegisterHandlers(functions);
47} 49}
48 50
51IRS_SYS::~IRS_SYS() = default;
52
49} // namespace Service::HID 53} // namespace Service::HID
diff --git a/src/core/hle/service/hid/irs.h b/src/core/hle/service/hid/irs.h
index a8be701c7..6fb16b45d 100644
--- a/src/core/hle/service/hid/irs.h
+++ b/src/core/hle/service/hid/irs.h
@@ -11,11 +11,13 @@ namespace Service::HID {
11class IRS final : public ServiceFramework<IRS> { 11class IRS final : public ServiceFramework<IRS> {
12public: 12public:
13 explicit IRS(); 13 explicit IRS();
14 ~IRS() override;
14}; 15};
15 16
16class IRS_SYS final : public ServiceFramework<IRS_SYS> { 17class IRS_SYS final : public ServiceFramework<IRS_SYS> {
17public: 18public:
18 explicit IRS_SYS(); 19 explicit IRS_SYS();
20 ~IRS_SYS() override;
19}; 21};
20 22
21} // namespace Service::HID 23} // namespace Service::HID
diff --git a/src/core/hle/service/hid/xcd.cpp b/src/core/hle/service/hid/xcd.cpp
index 49f733f60..c8e9125f6 100644
--- a/src/core/hle/service/hid/xcd.cpp
+++ b/src/core/hle/service/hid/xcd.cpp
@@ -34,4 +34,6 @@ XCD_SYS::XCD_SYS() : ServiceFramework{"xcd:sys"} {
34 RegisterHandlers(functions); 34 RegisterHandlers(functions);
35} 35}
36 36
37XCD_SYS::~XCD_SYS() = default;
38
37} // namespace Service::HID 39} // namespace Service::HID
diff --git a/src/core/hle/service/hid/xcd.h b/src/core/hle/service/hid/xcd.h
index 232a044df..fd506d303 100644
--- a/src/core/hle/service/hid/xcd.h
+++ b/src/core/hle/service/hid/xcd.h
@@ -11,6 +11,7 @@ namespace Service::HID {
11class XCD_SYS final : public ServiceFramework<XCD_SYS> { 11class XCD_SYS final : public ServiceFramework<XCD_SYS> {
12public: 12public:
13 explicit XCD_SYS(); 13 explicit XCD_SYS();
14 ~XCD_SYS() override;
14}; 15};
15 16
16} // namespace Service::HID 17} // namespace Service::HID
diff --git a/src/core/hle/service/nfp/nfp.cpp b/src/core/hle/service/nfp/nfp.cpp
index 4f7543af5..f8d2127d9 100644
--- a/src/core/hle/service/nfp/nfp.cpp
+++ b/src/core/hle/service/nfp/nfp.cpp
@@ -14,6 +14,8 @@ namespace Service::NFP {
14Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) 14Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
15 : ServiceFramework(name), module(std::move(module)) {} 15 : ServiceFramework(name), module(std::move(module)) {}
16 16
17Module::Interface::~Interface() = default;
18
17class IUser final : public ServiceFramework<IUser> { 19class IUser final : public ServiceFramework<IUser> {
18public: 20public:
19 IUser() : ServiceFramework("IUser") { 21 IUser() : ServiceFramework("IUser") {
diff --git a/src/core/hle/service/nfp/nfp.h b/src/core/hle/service/nfp/nfp.h
index 0cd7be3d5..77df343c4 100644
--- a/src/core/hle/service/nfp/nfp.h
+++ b/src/core/hle/service/nfp/nfp.h
@@ -13,6 +13,7 @@ public:
13 class Interface : public ServiceFramework<Interface> { 13 class Interface : public ServiceFramework<Interface> {
14 public: 14 public:
15 explicit Interface(std::shared_ptr<Module> module, const char* name); 15 explicit Interface(std::shared_ptr<Module> module, const char* name);
16 ~Interface() override;
16 17
17 void CreateUserInterface(Kernel::HLERequestContext& ctx); 18 void CreateUserInterface(Kernel::HLERequestContext& ctx);
18 19
diff --git a/src/core/hle/service/nfp/nfp_user.cpp b/src/core/hle/service/nfp/nfp_user.cpp
index b608fe693..784a87c1b 100644
--- a/src/core/hle/service/nfp/nfp_user.cpp
+++ b/src/core/hle/service/nfp/nfp_user.cpp
@@ -14,4 +14,6 @@ NFP_User::NFP_User(std::shared_ptr<Module> module)
14 RegisterHandlers(functions); 14 RegisterHandlers(functions);
15} 15}
16 16
17NFP_User::~NFP_User() = default;
18
17} // namespace Service::NFP 19} // namespace Service::NFP
diff --git a/src/core/hle/service/nfp/nfp_user.h b/src/core/hle/service/nfp/nfp_user.h
index 700043114..65d9aaf48 100644
--- a/src/core/hle/service/nfp/nfp_user.h
+++ b/src/core/hle/service/nfp/nfp_user.h
@@ -11,6 +11,7 @@ namespace Service::NFP {
11class NFP_User final : public Module::Interface { 11class NFP_User final : public Module::Interface {
12public: 12public:
13 explicit NFP_User(std::shared_ptr<Module> module); 13 explicit NFP_User(std::shared_ptr<Module> module);
14 ~NFP_User() override;
14}; 15};
15 16
16} // namespace Service::NFP 17} // namespace Service::NFP
diff --git a/src/core/hle/service/ns/pl_u.cpp b/src/core/hle/service/ns/pl_u.cpp
index 77f635ae2..ebefd25aa 100644
--- a/src/core/hle/service/ns/pl_u.cpp
+++ b/src/core/hle/service/ns/pl_u.cpp
@@ -247,6 +247,8 @@ PL_U::PL_U() : ServiceFramework("pl:u") {
247 } 247 }
248} 248}
249 249
250PL_U::~PL_U() = default;
251
250void PL_U::RequestLoad(Kernel::HLERequestContext& ctx) { 252void PL_U::RequestLoad(Kernel::HLERequestContext& ctx) {
251 IPC::RequestParser rp{ctx}; 253 IPC::RequestParser rp{ctx};
252 const u32 shared_font_type{rp.Pop<u32>()}; 254 const u32 shared_font_type{rp.Pop<u32>()};
diff --git a/src/core/hle/service/ns/pl_u.h b/src/core/hle/service/ns/pl_u.h
index fcc2acab7..296c3db05 100644
--- a/src/core/hle/service/ns/pl_u.h
+++ b/src/core/hle/service/ns/pl_u.h
@@ -13,7 +13,7 @@ namespace Service::NS {
13class PL_U final : public ServiceFramework<PL_U> { 13class PL_U final : public ServiceFramework<PL_U> {
14public: 14public:
15 PL_U(); 15 PL_U();
16 ~PL_U() = default; 16 ~PL_U() override;
17 17
18private: 18private:
19 void RequestLoad(Kernel::HLERequestContext& ctx); 19 void RequestLoad(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp
index 0b37098e1..92acc57b1 100644
--- a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp
@@ -13,6 +13,9 @@
13 13
14namespace Service::Nvidia::Devices { 14namespace Service::Nvidia::Devices {
15 15
16nvdisp_disp0::nvdisp_disp0(std::shared_ptr<nvmap> nvmap_dev) : nvmap_dev(std::move(nvmap_dev)) {}
17nvdisp_disp0 ::~nvdisp_disp0() = default;
18
16u32 nvdisp_disp0::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { 19u32 nvdisp_disp0::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
17 UNIMPLEMENTED_MSG("Unimplemented ioctl"); 20 UNIMPLEMENTED_MSG("Unimplemented ioctl");
18 return 0; 21 return 0;
diff --git a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.h b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.h
index 6f0697b58..a45086e45 100644
--- a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.h
+++ b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.h
@@ -17,8 +17,8 @@ class nvmap;
17 17
18class nvdisp_disp0 final : public nvdevice { 18class nvdisp_disp0 final : public nvdevice {
19public: 19public:
20 explicit nvdisp_disp0(std::shared_ptr<nvmap> nvmap_dev) : nvmap_dev(std::move(nvmap_dev)) {} 20 explicit nvdisp_disp0(std::shared_ptr<nvmap> nvmap_dev);
21 ~nvdisp_disp0() = default; 21 ~nvdisp_disp0();
22 22
23 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; 23 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
24 24
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
index 75487c4e8..25d5a93fa 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
@@ -3,6 +3,8 @@
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include <cstring> 5#include <cstring>
6#include <utility>
7
6#include "common/assert.h" 8#include "common/assert.h"
7#include "common/logging/log.h" 9#include "common/logging/log.h"
8#include "core/core.h" 10#include "core/core.h"
@@ -14,6 +16,9 @@
14 16
15namespace Service::Nvidia::Devices { 17namespace Service::Nvidia::Devices {
16 18
19nvhost_as_gpu::nvhost_as_gpu(std::shared_ptr<nvmap> nvmap_dev) : nvmap_dev(std::move(nvmap_dev)) {}
20nvhost_as_gpu::~nvhost_as_gpu() = default;
21
17u32 nvhost_as_gpu::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { 22u32 nvhost_as_gpu::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
18 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", 23 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
19 command.raw, input.size(), output.size()); 24 command.raw, input.size(), output.size());
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h
index 9f8999d9c..eb14b1da8 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h
+++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h
@@ -6,7 +6,6 @@
6 6
7#include <memory> 7#include <memory>
8#include <unordered_map> 8#include <unordered_map>
9#include <utility>
10#include <vector> 9#include <vector>
11#include "common/common_types.h" 10#include "common/common_types.h"
12#include "common/swap.h" 11#include "common/swap.h"
@@ -18,8 +17,8 @@ class nvmap;
18 17
19class nvhost_as_gpu final : public nvdevice { 18class nvhost_as_gpu final : public nvdevice {
20public: 19public:
21 explicit nvhost_as_gpu(std::shared_ptr<nvmap> nvmap_dev) : nvmap_dev(std::move(nvmap_dev)) {} 20 explicit nvhost_as_gpu(std::shared_ptr<nvmap> nvmap_dev);
22 ~nvhost_as_gpu() override = default; 21 ~nvhost_as_gpu() override;
23 22
24 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; 23 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
25 24
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
index 5685eb2be..b39fb9ef9 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
@@ -11,6 +11,9 @@
11 11
12namespace Service::Nvidia::Devices { 12namespace Service::Nvidia::Devices {
13 13
14nvhost_ctrl::nvhost_ctrl() = default;
15nvhost_ctrl::~nvhost_ctrl() = default;
16
14u32 nvhost_ctrl::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { 17u32 nvhost_ctrl::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
15 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", 18 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
16 command.raw, input.size(), output.size()); 19 command.raw, input.size(), output.size());
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.h b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.h
index 6b496e9fe..6d0de2212 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.h
+++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.h
@@ -13,8 +13,8 @@ namespace Service::Nvidia::Devices {
13 13
14class nvhost_ctrl final : public nvdevice { 14class nvhost_ctrl final : public nvdevice {
15public: 15public:
16 nvhost_ctrl() = default; 16 nvhost_ctrl();
17 ~nvhost_ctrl() override = default; 17 ~nvhost_ctrl() override;
18 18
19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; 19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
20 20
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
index ae421247d..7a88ae029 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
@@ -9,6 +9,9 @@
9 9
10namespace Service::Nvidia::Devices { 10namespace Service::Nvidia::Devices {
11 11
12nvhost_ctrl_gpu::nvhost_ctrl_gpu() = default;
13nvhost_ctrl_gpu::~nvhost_ctrl_gpu() = default;
14
12u32 nvhost_ctrl_gpu::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { 15u32 nvhost_ctrl_gpu::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
13 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", 16 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
14 command.raw, input.size(), output.size()); 17 command.raw, input.size(), output.size());
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h
index f09113e67..3bbf028ad 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h
+++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h
@@ -13,8 +13,8 @@ namespace Service::Nvidia::Devices {
13 13
14class nvhost_ctrl_gpu final : public nvdevice { 14class nvhost_ctrl_gpu final : public nvdevice {
15public: 15public:
16 nvhost_ctrl_gpu() = default; 16 nvhost_ctrl_gpu();
17 ~nvhost_ctrl_gpu() override = default; 17 ~nvhost_ctrl_gpu() override;
18 18
19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; 19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
20 20
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
index 8e0f9a9e5..874d5e1c3 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
@@ -14,6 +14,9 @@
14 14
15namespace Service::Nvidia::Devices { 15namespace Service::Nvidia::Devices {
16 16
17nvhost_gpu::nvhost_gpu(std::shared_ptr<nvmap> nvmap_dev) : nvmap_dev(std::move(nvmap_dev)) {}
18nvhost_gpu::~nvhost_gpu() = default;
19
17u32 nvhost_gpu::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { 20u32 nvhost_gpu::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
18 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", 21 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
19 command.raw, input.size(), output.size()); 22 command.raw, input.size(), output.size());
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.h b/src/core/hle/service/nvdrv/devices/nvhost_gpu.h
index baaefd79a..62beb5c0c 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.h
+++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.h
@@ -20,8 +20,8 @@ constexpr u32 NVGPU_IOCTL_CHANNEL_KICKOFF_PB(0x1b);
20 20
21class nvhost_gpu final : public nvdevice { 21class nvhost_gpu final : public nvdevice {
22public: 22public:
23 explicit nvhost_gpu(std::shared_ptr<nvmap> nvmap_dev) : nvmap_dev(std::move(nvmap_dev)) {} 23 explicit nvhost_gpu(std::shared_ptr<nvmap> nvmap_dev);
24 ~nvhost_gpu() override = default; 24 ~nvhost_gpu() override;
25 25
26 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; 26 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
27 27
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp
index 364619e67..46dbbc37c 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp
@@ -10,6 +10,9 @@
10 10
11namespace Service::Nvidia::Devices { 11namespace Service::Nvidia::Devices {
12 12
13nvhost_nvdec::nvhost_nvdec() = default;
14nvhost_nvdec::~nvhost_nvdec() = default;
15
13u32 nvhost_nvdec::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { 16u32 nvhost_nvdec::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
14 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", 17 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
15 command.raw, input.size(), output.size()); 18 command.raw, input.size(), output.size());
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.h b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.h
index 6ad74421b..0e7b284f8 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.h
+++ b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.h
@@ -13,8 +13,8 @@ namespace Service::Nvidia::Devices {
13 13
14class nvhost_nvdec final : public nvdevice { 14class nvhost_nvdec final : public nvdevice {
15public: 15public:
16 nvhost_nvdec() = default; 16 nvhost_nvdec();
17 ~nvhost_nvdec() override = default; 17 ~nvhost_nvdec() override;
18 18
19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; 19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
20 20
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
index 51f01077b..c67f934f6 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
@@ -10,6 +10,9 @@
10 10
11namespace Service::Nvidia::Devices { 11namespace Service::Nvidia::Devices {
12 12
13nvhost_nvjpg::nvhost_nvjpg() = default;
14nvhost_nvjpg::~nvhost_nvjpg() = default;
15
13u32 nvhost_nvjpg::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { 16u32 nvhost_nvjpg::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
14 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", 17 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
15 command.raw, input.size(), output.size()); 18 command.raw, input.size(), output.size());
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h
index 2b0eb43ee..89fd5e95e 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h
+++ b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h
@@ -13,8 +13,8 @@ namespace Service::Nvidia::Devices {
13 13
14class nvhost_nvjpg final : public nvdevice { 14class nvhost_nvjpg final : public nvdevice {
15public: 15public:
16 nvhost_nvjpg() = default; 16 nvhost_nvjpg();
17 ~nvhost_nvjpg() override = default; 17 ~nvhost_nvjpg() override;
18 18
19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; 19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
20 20
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp b/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
index fcb488d50..727b9fee4 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
@@ -10,6 +10,9 @@
10 10
11namespace Service::Nvidia::Devices { 11namespace Service::Nvidia::Devices {
12 12
13nvhost_vic::nvhost_vic() = default;
14nvhost_vic::~nvhost_vic() = default;
15
13u32 nvhost_vic::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { 16u32 nvhost_vic::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
14 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", 17 LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
15 command.raw, input.size(), output.size()); 18 command.raw, input.size(), output.size());
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_vic.h b/src/core/hle/service/nvdrv/devices/nvhost_vic.h
index c7d681e52..fc24c3f9c 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_vic.h
+++ b/src/core/hle/service/nvdrv/devices/nvhost_vic.h
@@ -13,8 +13,8 @@ namespace Service::Nvidia::Devices {
13 13
14class nvhost_vic final : public nvdevice { 14class nvhost_vic final : public nvdevice {
15public: 15public:
16 nvhost_vic() = default; 16 nvhost_vic();
17 ~nvhost_vic() override = default; 17 ~nvhost_vic() override;
18 18
19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; 19 u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
20 20
diff --git a/src/core/hle/service/nvdrv/devices/nvmap.cpp b/src/core/hle/service/nvdrv/devices/nvmap.cpp
index e9305bfb3..a2287cc1b 100644
--- a/src/core/hle/service/nvdrv/devices/nvmap.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvmap.cpp
@@ -11,6 +11,9 @@
11 11
12namespace Service::Nvidia::Devices { 12namespace Service::Nvidia::Devices {
13 13
14nvmap::nvmap() = default;
15nvmap::~nvmap() = default;
16
14VAddr nvmap::GetObjectAddress(u32 handle) const { 17VAddr nvmap::GetObjectAddress(u32 handle) const {
15 auto object = GetObject(handle); 18 auto object = GetObject(handle);
16 ASSERT(object); 19 ASSERT(object);
diff --git a/src/core/hle/service/nvdrv/devices/nvmap.h b/src/core/hle/service/nvdrv/devices/nvmap.h
index f2eec6409..396230c19 100644
--- a/src/core/hle/service/nvdrv/devices/nvmap.h
+++ b/src/core/hle/service/nvdrv/devices/nvmap.h
@@ -16,8 +16,8 @@ namespace Service::Nvidia::Devices {
16 16
17class nvmap final : public nvdevice { 17class nvmap final : public nvdevice {
18public: 18public:
19 nvmap() = default; 19 nvmap();
20 ~nvmap() override = default; 20 ~nvmap() override;
21 21
22 /// Returns the allocated address of an nvmap object given its handle. 22 /// Returns the allocated address of an nvmap object given its handle.
23 VAddr GetObjectAddress(u32 handle) const; 23 VAddr GetObjectAddress(u32 handle) const;
diff --git a/src/core/hle/service/nvdrv/interface.cpp b/src/core/hle/service/nvdrv/interface.cpp
index 634ab9196..ac3859353 100644
--- a/src/core/hle/service/nvdrv/interface.cpp
+++ b/src/core/hle/service/nvdrv/interface.cpp
@@ -112,4 +112,6 @@ NVDRV::NVDRV(std::shared_ptr<Module> nvdrv, const char* name)
112 query_event = Kernel::Event::Create(kernel, Kernel::ResetType::OneShot, "NVDRV::query_event"); 112 query_event = Kernel::Event::Create(kernel, Kernel::ResetType::OneShot, "NVDRV::query_event");
113} 113}
114 114
115NVDRV::~NVDRV() = default;
116
115} // namespace Service::Nvidia 117} // namespace Service::Nvidia
diff --git a/src/core/hle/service/nvdrv/interface.h b/src/core/hle/service/nvdrv/interface.h
index 1c3529bb6..d340893c2 100644
--- a/src/core/hle/service/nvdrv/interface.h
+++ b/src/core/hle/service/nvdrv/interface.h
@@ -14,7 +14,7 @@ namespace Service::Nvidia {
14class NVDRV final : public ServiceFramework<NVDRV> { 14class NVDRV final : public ServiceFramework<NVDRV> {
15public: 15public:
16 NVDRV(std::shared_ptr<Module> nvdrv, const char* name); 16 NVDRV(std::shared_ptr<Module> nvdrv, const char* name);
17 ~NVDRV() = default; 17 ~NVDRV();
18 18
19private: 19private:
20 void Open(Kernel::HLERequestContext& ctx); 20 void Open(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/nvdrv/nvdrv.cpp b/src/core/hle/service/nvdrv/nvdrv.cpp
index 2de39822f..6e4b8f2c6 100644
--- a/src/core/hle/service/nvdrv/nvdrv.cpp
+++ b/src/core/hle/service/nvdrv/nvdrv.cpp
@@ -45,6 +45,8 @@ Module::Module() {
45 devices["/dev/nvhost-vic"] = std::make_shared<Devices::nvhost_vic>(); 45 devices["/dev/nvhost-vic"] = std::make_shared<Devices::nvhost_vic>();
46} 46}
47 47
48Module::~Module() = default;
49
48u32 Module::Open(const std::string& device_name) { 50u32 Module::Open(const std::string& device_name) {
49 ASSERT_MSG(devices.find(device_name) != devices.end(), "Trying to open unknown device {}", 51 ASSERT_MSG(devices.find(device_name) != devices.end(), "Trying to open unknown device {}",
50 device_name); 52 device_name);
diff --git a/src/core/hle/service/nvdrv/nvdrv.h b/src/core/hle/service/nvdrv/nvdrv.h
index 99eb1128a..53564f696 100644
--- a/src/core/hle/service/nvdrv/nvdrv.h
+++ b/src/core/hle/service/nvdrv/nvdrv.h
@@ -30,7 +30,7 @@ static_assert(sizeof(IoctlFence) == 8, "IoctlFence has wrong size");
30class Module final { 30class Module final {
31public: 31public:
32 Module(); 32 Module();
33 ~Module() = default; 33 ~Module();
34 34
35 /// Returns a pointer to one of the available devices, identified by its name. 35 /// Returns a pointer to one of the available devices, identified by its name.
36 template <typename T> 36 template <typename T>
diff --git a/src/core/hle/service/nvdrv/nvmemp.cpp b/src/core/hle/service/nvdrv/nvmemp.cpp
index 0e8e21bad..b7b8b7a1b 100644
--- a/src/core/hle/service/nvdrv/nvmemp.cpp
+++ b/src/core/hle/service/nvdrv/nvmemp.cpp
@@ -16,6 +16,8 @@ NVMEMP::NVMEMP() : ServiceFramework("nvmemp") {
16 RegisterHandlers(functions); 16 RegisterHandlers(functions);
17} 17}
18 18
19NVMEMP::~NVMEMP() = default;
20
19void NVMEMP::Cmd0(Kernel::HLERequestContext& ctx) { 21void NVMEMP::Cmd0(Kernel::HLERequestContext& ctx) {
20 UNIMPLEMENTED(); 22 UNIMPLEMENTED();
21} 23}
diff --git a/src/core/hle/service/nvdrv/nvmemp.h b/src/core/hle/service/nvdrv/nvmemp.h
index dfdcabf4a..5a4dfc1f9 100644
--- a/src/core/hle/service/nvdrv/nvmemp.h
+++ b/src/core/hle/service/nvdrv/nvmemp.h
@@ -11,7 +11,7 @@ namespace Service::Nvidia {
11class NVMEMP final : public ServiceFramework<NVMEMP> { 11class NVMEMP final : public ServiceFramework<NVMEMP> {
12public: 12public:
13 NVMEMP(); 13 NVMEMP();
14 ~NVMEMP() = default; 14 ~NVMEMP();
15 15
16private: 16private:
17 void Cmd0(Kernel::HLERequestContext& ctx); 17 void Cmd0(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/nvflinger/buffer_queue.cpp b/src/core/hle/service/nvflinger/buffer_queue.cpp
index 8d8962276..34f98fe5a 100644
--- a/src/core/hle/service/nvflinger/buffer_queue.cpp
+++ b/src/core/hle/service/nvflinger/buffer_queue.cpp
@@ -18,6 +18,8 @@ BufferQueue::BufferQueue(u32 id, u64 layer_id) : id(id), layer_id(layer_id) {
18 Kernel::Event::Create(kernel, Kernel::ResetType::Sticky, "BufferQueue NativeHandle"); 18 Kernel::Event::Create(kernel, Kernel::ResetType::Sticky, "BufferQueue NativeHandle");
19} 19}
20 20
21BufferQueue::~BufferQueue() = default;
22
21void BufferQueue::SetPreallocatedBuffer(u32 slot, const IGBPBuffer& igbp_buffer) { 23void BufferQueue::SetPreallocatedBuffer(u32 slot, const IGBPBuffer& igbp_buffer) {
22 Buffer buffer{}; 24 Buffer buffer{};
23 buffer.slot = slot; 25 buffer.slot = slot;
diff --git a/src/core/hle/service/nvflinger/buffer_queue.h b/src/core/hle/service/nvflinger/buffer_queue.h
index db2e17c0c..17c81928a 100644
--- a/src/core/hle/service/nvflinger/buffer_queue.h
+++ b/src/core/hle/service/nvflinger/buffer_queue.h
@@ -46,7 +46,7 @@ public:
46 }; 46 };
47 47
48 BufferQueue(u32 id, u64 layer_id); 48 BufferQueue(u32 id, u64 layer_id);
49 ~BufferQueue() = default; 49 ~BufferQueue();
50 50
51 enum class BufferTransformFlags : u32 { 51 enum class BufferTransformFlags : u32 {
52 /// No transform flags are set 52 /// No transform flags are set
diff --git a/src/core/hle/service/nvflinger/nvflinger.cpp b/src/core/hle/service/nvflinger/nvflinger.cpp
index 06040da6f..7455ddd19 100644
--- a/src/core/hle/service/nvflinger/nvflinger.cpp
+++ b/src/core/hle/service/nvflinger/nvflinger.cpp
@@ -160,10 +160,13 @@ void NVFlinger::Compose() {
160} 160}
161 161
162Layer::Layer(u64 id, std::shared_ptr<BufferQueue> queue) : id(id), buffer_queue(std::move(queue)) {} 162Layer::Layer(u64 id, std::shared_ptr<BufferQueue> queue) : id(id), buffer_queue(std::move(queue)) {}
163Layer::~Layer() = default;
163 164
164Display::Display(u64 id, std::string name) : id(id), name(std::move(name)) { 165Display::Display(u64 id, std::string name) : id(id), name(std::move(name)) {
165 auto& kernel = Core::System::GetInstance().Kernel(); 166 auto& kernel = Core::System::GetInstance().Kernel();
166 vsync_event = Kernel::Event::Create(kernel, Kernel::ResetType::Pulse, "Display VSync Event"); 167 vsync_event = Kernel::Event::Create(kernel, Kernel::ResetType::Pulse, "Display VSync Event");
167} 168}
168 169
170Display::~Display() = default;
171
169} // namespace Service::NVFlinger 172} // namespace Service::NVFlinger
diff --git a/src/core/hle/service/nvflinger/nvflinger.h b/src/core/hle/service/nvflinger/nvflinger.h
index f7112949f..3dc69e69b 100644
--- a/src/core/hle/service/nvflinger/nvflinger.h
+++ b/src/core/hle/service/nvflinger/nvflinger.h
@@ -26,7 +26,7 @@ class BufferQueue;
26 26
27struct Layer { 27struct Layer {
28 Layer(u64 id, std::shared_ptr<BufferQueue> queue); 28 Layer(u64 id, std::shared_ptr<BufferQueue> queue);
29 ~Layer() = default; 29 ~Layer();
30 30
31 u64 id; 31 u64 id;
32 std::shared_ptr<BufferQueue> buffer_queue; 32 std::shared_ptr<BufferQueue> buffer_queue;
@@ -34,7 +34,7 @@ struct Layer {
34 34
35struct Display { 35struct Display {
36 Display(u64 id, std::string name); 36 Display(u64 id, std::string name);
37 ~Display() = default; 37 ~Display();
38 38
39 u64 id; 39 u64 id;
40 std::string name; 40 std::string name;
diff --git a/src/core/hle/service/pctl/module.cpp b/src/core/hle/service/pctl/module.cpp
index 6cc3b1992..4fd185f69 100644
--- a/src/core/hle/service/pctl/module.cpp
+++ b/src/core/hle/service/pctl/module.cpp
@@ -142,6 +142,8 @@ void Module::Interface::CreateServiceWithoutInitialize(Kernel::HLERequestContext
142Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) 142Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
143 : ServiceFramework(name), module(std::move(module)) {} 143 : ServiceFramework(name), module(std::move(module)) {}
144 144
145Module::Interface::~Interface() = default;
146
145void InstallInterfaces(SM::ServiceManager& service_manager) { 147void InstallInterfaces(SM::ServiceManager& service_manager) {
146 auto module = std::make_shared<Module>(); 148 auto module = std::make_shared<Module>();
147 std::make_shared<PCTL>(module, "pctl")->InstallAsService(service_manager); 149 std::make_shared<PCTL>(module, "pctl")->InstallAsService(service_manager);
diff --git a/src/core/hle/service/pctl/module.h b/src/core/hle/service/pctl/module.h
index e7d492760..3e449110d 100644
--- a/src/core/hle/service/pctl/module.h
+++ b/src/core/hle/service/pctl/module.h
@@ -13,6 +13,7 @@ public:
13 class Interface : public ServiceFramework<Interface> { 13 class Interface : public ServiceFramework<Interface> {
14 public: 14 public:
15 explicit Interface(std::shared_ptr<Module> module, const char* name); 15 explicit Interface(std::shared_ptr<Module> module, const char* name);
16 ~Interface() override;
16 17
17 void CreateService(Kernel::HLERequestContext& ctx); 18 void CreateService(Kernel::HLERequestContext& ctx);
18 void CreateServiceWithoutInitialize(Kernel::HLERequestContext& ctx); 19 void CreateServiceWithoutInitialize(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/pctl/pctl.cpp b/src/core/hle/service/pctl/pctl.cpp
index de2741d66..af9d1433a 100644
--- a/src/core/hle/service/pctl/pctl.cpp
+++ b/src/core/hle/service/pctl/pctl.cpp
@@ -14,4 +14,6 @@ PCTL::PCTL(std::shared_ptr<Module> module, const char* name)
14 }; 14 };
15 RegisterHandlers(functions); 15 RegisterHandlers(functions);
16} 16}
17
18PCTL::~PCTL() = default;
17} // namespace Service::PCTL 19} // namespace Service::PCTL
diff --git a/src/core/hle/service/pctl/pctl.h b/src/core/hle/service/pctl/pctl.h
index 8ddf69128..c33ea80b6 100644
--- a/src/core/hle/service/pctl/pctl.h
+++ b/src/core/hle/service/pctl/pctl.h
@@ -11,6 +11,7 @@ namespace Service::PCTL {
11class PCTL final : public Module::Interface { 11class PCTL final : public Module::Interface {
12public: 12public:
13 explicit PCTL(std::shared_ptr<Module> module, const char* name); 13 explicit PCTL(std::shared_ptr<Module> module, const char* name);
14 ~PCTL() override;
14}; 15};
15 16
16} // namespace Service::PCTL 17} // namespace Service::PCTL
diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp
index 92b0640e8..59eb20155 100644
--- a/src/core/hle/service/set/set.cpp
+++ b/src/core/hle/service/set/set.cpp
@@ -112,4 +112,6 @@ SET::SET() : ServiceFramework("set") {
112 RegisterHandlers(functions); 112 RegisterHandlers(functions);
113} 113}
114 114
115SET::~SET() = default;
116
115} // namespace Service::Set 117} // namespace Service::Set
diff --git a/src/core/hle/service/set/set.h b/src/core/hle/service/set/set.h
index 669e740b7..5f0214359 100644
--- a/src/core/hle/service/set/set.h
+++ b/src/core/hle/service/set/set.h
@@ -33,7 +33,7 @@ LanguageCode GetLanguageCodeFromIndex(size_t idx);
33class SET final : public ServiceFramework<SET> { 33class SET final : public ServiceFramework<SET> {
34public: 34public:
35 explicit SET(); 35 explicit SET();
36 ~SET() = default; 36 ~SET() override;
37 37
38private: 38private:
39 void GetLanguageCode(Kernel::HLERequestContext& ctx); 39 void GetLanguageCode(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/set/set_cal.cpp b/src/core/hle/service/set/set_cal.cpp
index 7066ef725..5af356d10 100644
--- a/src/core/hle/service/set/set_cal.cpp
+++ b/src/core/hle/service/set/set_cal.cpp
@@ -44,4 +44,6 @@ SET_CAL::SET_CAL() : ServiceFramework("set:cal") {
44 RegisterHandlers(functions); 44 RegisterHandlers(functions);
45} 45}
46 46
47SET_CAL::~SET_CAL() = default;
48
47} // namespace Service::Set 49} // namespace Service::Set
diff --git a/src/core/hle/service/set/set_cal.h b/src/core/hle/service/set/set_cal.h
index bb50336aa..583036eac 100644
--- a/src/core/hle/service/set/set_cal.h
+++ b/src/core/hle/service/set/set_cal.h
@@ -11,7 +11,7 @@ namespace Service::Set {
11class SET_CAL final : public ServiceFramework<SET_CAL> { 11class SET_CAL final : public ServiceFramework<SET_CAL> {
12public: 12public:
13 explicit SET_CAL(); 13 explicit SET_CAL();
14 ~SET_CAL() = default; 14 ~SET_CAL();
15}; 15};
16 16
17} // namespace Service::Set 17} // namespace Service::Set
diff --git a/src/core/hle/service/set/set_fd.cpp b/src/core/hle/service/set/set_fd.cpp
index c9f938716..cac6af86d 100644
--- a/src/core/hle/service/set/set_fd.cpp
+++ b/src/core/hle/service/set/set_fd.cpp
@@ -20,4 +20,6 @@ SET_FD::SET_FD() : ServiceFramework("set:fd") {
20 RegisterHandlers(functions); 20 RegisterHandlers(functions);
21} 21}
22 22
23SET_FD::~SET_FD() = default;
24
23} // namespace Service::Set 25} // namespace Service::Set
diff --git a/src/core/hle/service/set/set_fd.h b/src/core/hle/service/set/set_fd.h
index dbd850bc7..216e65f1f 100644
--- a/src/core/hle/service/set/set_fd.h
+++ b/src/core/hle/service/set/set_fd.h
@@ -11,7 +11,7 @@ namespace Service::Set {
11class SET_FD final : public ServiceFramework<SET_FD> { 11class SET_FD final : public ServiceFramework<SET_FD> {
12public: 12public:
13 explicit SET_FD(); 13 explicit SET_FD();
14 ~SET_FD() = default; 14 ~SET_FD() override;
15}; 15};
16 16
17} // namespace Service::Set 17} // namespace Service::Set
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp
index 3211a8346..4342f3b2d 100644
--- a/src/core/hle/service/sockets/bsd.cpp
+++ b/src/core/hle/service/sockets/bsd.cpp
@@ -109,6 +109,8 @@ BSD::BSD(const char* name) : ServiceFramework(name) {
109 RegisterHandlers(functions); 109 RegisterHandlers(functions);
110} 110}
111 111
112BSD::~BSD() = default;
113
112BSDCFG::BSDCFG() : ServiceFramework{"bsdcfg"} { 114BSDCFG::BSDCFG() : ServiceFramework{"bsdcfg"} {
113 // clang-format off 115 // clang-format off
114 static const FunctionInfo functions[] = { 116 static const FunctionInfo functions[] = {
@@ -131,4 +133,6 @@ BSDCFG::BSDCFG() : ServiceFramework{"bsdcfg"} {
131 RegisterHandlers(functions); 133 RegisterHandlers(functions);
132} 134}
133 135
136BSDCFG::~BSDCFG() = default;
137
134} // namespace Service::Sockets 138} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/bsd.h b/src/core/hle/service/sockets/bsd.h
index c1da59b24..0fe0e65c6 100644
--- a/src/core/hle/service/sockets/bsd.h
+++ b/src/core/hle/service/sockets/bsd.h
@@ -12,7 +12,7 @@ namespace Service::Sockets {
12class BSD final : public ServiceFramework<BSD> { 12class BSD final : public ServiceFramework<BSD> {
13public: 13public:
14 explicit BSD(const char* name); 14 explicit BSD(const char* name);
15 ~BSD() = default; 15 ~BSD() override;
16 16
17private: 17private:
18 void RegisterClient(Kernel::HLERequestContext& ctx); 18 void RegisterClient(Kernel::HLERequestContext& ctx);
@@ -29,6 +29,7 @@ private:
29class BSDCFG final : public ServiceFramework<BSDCFG> { 29class BSDCFG final : public ServiceFramework<BSDCFG> {
30public: 30public:
31 explicit BSDCFG(); 31 explicit BSDCFG();
32 ~BSDCFG() override;
32}; 33};
33 34
34} // namespace Service::Sockets 35} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/ethc.cpp b/src/core/hle/service/sockets/ethc.cpp
index d53c25eec..abbeb4c50 100644
--- a/src/core/hle/service/sockets/ethc.cpp
+++ b/src/core/hle/service/sockets/ethc.cpp
@@ -21,6 +21,8 @@ ETHC_C::ETHC_C() : ServiceFramework{"ethc:c"} {
21 RegisterHandlers(functions); 21 RegisterHandlers(functions);
22} 22}
23 23
24ETHC_C::~ETHC_C() = default;
25
24ETHC_I::ETHC_I() : ServiceFramework{"ethc:i"} { 26ETHC_I::ETHC_I() : ServiceFramework{"ethc:i"} {
25 // clang-format off 27 // clang-format off
26 static const FunctionInfo functions[] = { 28 static const FunctionInfo functions[] = {
@@ -35,4 +37,6 @@ ETHC_I::ETHC_I() : ServiceFramework{"ethc:i"} {
35 RegisterHandlers(functions); 37 RegisterHandlers(functions);
36} 38}
37 39
40ETHC_I::~ETHC_I() = default;
41
38} // namespace Service::Sockets 42} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/ethc.h b/src/core/hle/service/sockets/ethc.h
index 9a3c88100..da2c7f741 100644
--- a/src/core/hle/service/sockets/ethc.h
+++ b/src/core/hle/service/sockets/ethc.h
@@ -11,11 +11,13 @@ namespace Service::Sockets {
11class ETHC_C final : public ServiceFramework<ETHC_C> { 11class ETHC_C final : public ServiceFramework<ETHC_C> {
12public: 12public:
13 explicit ETHC_C(); 13 explicit ETHC_C();
14 ~ETHC_C() override;
14}; 15};
15 16
16class ETHC_I final : public ServiceFramework<ETHC_I> { 17class ETHC_I final : public ServiceFramework<ETHC_I> {
17public: 18public:
18 explicit ETHC_I(); 19 explicit ETHC_I();
20 ~ETHC_I() override;
19}; 21};
20 22
21} // namespace Service::Sockets 23} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/nsd.cpp b/src/core/hle/service/sockets/nsd.cpp
index 8682dc2e0..e6d73065e 100644
--- a/src/core/hle/service/sockets/nsd.cpp
+++ b/src/core/hle/service/sockets/nsd.cpp
@@ -29,4 +29,6 @@ NSD::NSD(const char* name) : ServiceFramework(name) {
29 RegisterHandlers(functions); 29 RegisterHandlers(functions);
30} 30}
31 31
32NSD::~NSD() = default;
33
32} // namespace Service::Sockets 34} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/nsd.h b/src/core/hle/service/sockets/nsd.h
index 3b7edfc43..d842e3232 100644
--- a/src/core/hle/service/sockets/nsd.h
+++ b/src/core/hle/service/sockets/nsd.h
@@ -12,7 +12,7 @@ namespace Service::Sockets {
12class NSD final : public ServiceFramework<NSD> { 12class NSD final : public ServiceFramework<NSD> {
13public: 13public:
14 explicit NSD(const char* name); 14 explicit NSD(const char* name);
15 ~NSD() = default; 15 ~NSD() override;
16}; 16};
17 17
18} // namespace Service::Sockets 18} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/sfdnsres.cpp b/src/core/hle/service/sockets/sfdnsres.cpp
index d235c4cfd..13ab1d31e 100644
--- a/src/core/hle/service/sockets/sfdnsres.cpp
+++ b/src/core/hle/service/sockets/sfdnsres.cpp
@@ -34,4 +34,6 @@ SFDNSRES::SFDNSRES() : ServiceFramework("sfdnsres") {
34 RegisterHandlers(functions); 34 RegisterHandlers(functions);
35} 35}
36 36
37SFDNSRES::~SFDNSRES() = default;
38
37} // namespace Service::Sockets 39} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/sfdnsres.h b/src/core/hle/service/sockets/sfdnsres.h
index 62c7e35bf..eda432903 100644
--- a/src/core/hle/service/sockets/sfdnsres.h
+++ b/src/core/hle/service/sockets/sfdnsres.h
@@ -12,7 +12,7 @@ namespace Service::Sockets {
12class SFDNSRES final : public ServiceFramework<SFDNSRES> { 12class SFDNSRES final : public ServiceFramework<SFDNSRES> {
13public: 13public:
14 explicit SFDNSRES(); 14 explicit SFDNSRES();
15 ~SFDNSRES() = default; 15 ~SFDNSRES() override;
16 16
17private: 17private:
18 void GetAddrInfo(Kernel::HLERequestContext& ctx); 18 void GetAddrInfo(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/spl/csrng.cpp b/src/core/hle/service/spl/csrng.cpp
index b9e6b799d..674928798 100644
--- a/src/core/hle/service/spl/csrng.cpp
+++ b/src/core/hle/service/spl/csrng.cpp
@@ -13,4 +13,6 @@ CSRNG::CSRNG(std::shared_ptr<Module> module) : Module::Interface(std::move(modul
13 RegisterHandlers(functions); 13 RegisterHandlers(functions);
14} 14}
15 15
16CSRNG::~CSRNG() = default;
17
16} // namespace Service::SPL 18} // namespace Service::SPL
diff --git a/src/core/hle/service/spl/csrng.h b/src/core/hle/service/spl/csrng.h
index 3f849b5a7..764d5ceb0 100644
--- a/src/core/hle/service/spl/csrng.h
+++ b/src/core/hle/service/spl/csrng.h
@@ -11,6 +11,7 @@ namespace Service::SPL {
11class CSRNG final : public Module::Interface { 11class CSRNG final : public Module::Interface {
12public: 12public:
13 explicit CSRNG(std::shared_ptr<Module> module); 13 explicit CSRNG(std::shared_ptr<Module> module);
14 ~CSRNG() override;
14}; 15};
15 16
16} // namespace Service::SPL 17} // namespace Service::SPL
diff --git a/src/core/hle/service/spl/module.cpp b/src/core/hle/service/spl/module.cpp
index 3f5a342a7..0d8441fb1 100644
--- a/src/core/hle/service/spl/module.cpp
+++ b/src/core/hle/service/spl/module.cpp
@@ -16,6 +16,8 @@ namespace Service::SPL {
16Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) 16Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
17 : ServiceFramework(name), module(std::move(module)) {} 17 : ServiceFramework(name), module(std::move(module)) {}
18 18
19Module::Interface::~Interface() = default;
20
19void Module::Interface::GetRandomBytes(Kernel::HLERequestContext& ctx) { 21void Module::Interface::GetRandomBytes(Kernel::HLERequestContext& ctx) {
20 IPC::RequestParser rp{ctx}; 22 IPC::RequestParser rp{ctx};
21 23
diff --git a/src/core/hle/service/spl/module.h b/src/core/hle/service/spl/module.h
index f24d998e8..48fda6099 100644
--- a/src/core/hle/service/spl/module.h
+++ b/src/core/hle/service/spl/module.h
@@ -13,6 +13,7 @@ public:
13 class Interface : public ServiceFramework<Interface> { 13 class Interface : public ServiceFramework<Interface> {
14 public: 14 public:
15 explicit Interface(std::shared_ptr<Module> module, const char* name); 15 explicit Interface(std::shared_ptr<Module> module, const char* name);
16 ~Interface() override;
16 17
17 void GetRandomBytes(Kernel::HLERequestContext& ctx); 18 void GetRandomBytes(Kernel::HLERequestContext& ctx);
18 19
diff --git a/src/core/hle/service/spl/spl.cpp b/src/core/hle/service/spl/spl.cpp
index bb1e03342..70cb41905 100644
--- a/src/core/hle/service/spl/spl.cpp
+++ b/src/core/hle/service/spl/spl.cpp
@@ -42,4 +42,6 @@ SPL::SPL(std::shared_ptr<Module> module) : Module::Interface(std::move(module),
42 RegisterHandlers(functions); 42 RegisterHandlers(functions);
43} 43}
44 44
45SPL::~SPL() = default;
46
45} // namespace Service::SPL 47} // namespace Service::SPL
diff --git a/src/core/hle/service/spl/spl.h b/src/core/hle/service/spl/spl.h
index 69c4c1747..3637d1623 100644
--- a/src/core/hle/service/spl/spl.h
+++ b/src/core/hle/service/spl/spl.h
@@ -11,6 +11,7 @@ namespace Service::SPL {
11class SPL final : public Module::Interface { 11class SPL final : public Module::Interface {
12public: 12public:
13 explicit SPL(std::shared_ptr<Module> module); 13 explicit SPL(std::shared_ptr<Module> module);
14 ~SPL() override;
14}; 15};
15 16
16} // namespace Service::SPL 17} // namespace Service::SPL
diff --git a/src/core/hle/service/time/interface.cpp b/src/core/hle/service/time/interface.cpp
index 048d5b077..18a5d71d5 100644
--- a/src/core/hle/service/time/interface.cpp
+++ b/src/core/hle/service/time/interface.cpp
@@ -29,4 +29,6 @@ Time::Time(std::shared_ptr<Module> time, const char* name)
29 RegisterHandlers(functions); 29 RegisterHandlers(functions);
30} 30}
31 31
32Time::~Time() = default;
33
32} // namespace Service::Time 34} // namespace Service::Time
diff --git a/src/core/hle/service/time/interface.h b/src/core/hle/service/time/interface.h
index 183a53db1..cd6b44dec 100644
--- a/src/core/hle/service/time/interface.h
+++ b/src/core/hle/service/time/interface.h
@@ -11,6 +11,7 @@ namespace Service::Time {
11class Time final : public Module::Interface { 11class Time final : public Module::Interface {
12public: 12public:
13 explicit Time(std::shared_ptr<Module> time, const char* name); 13 explicit Time(std::shared_ptr<Module> time, const char* name);
14 ~Time() override;
14}; 15};
15 16
16} // namespace Service::Time 17} // namespace Service::Time
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp
index 2172c681b..28fd8debc 100644
--- a/src/core/hle/service/time/time.cpp
+++ b/src/core/hle/service/time/time.cpp
@@ -210,6 +210,8 @@ void Module::Interface::GetStandardLocalSystemClock(Kernel::HLERequestContext& c
210Module::Interface::Interface(std::shared_ptr<Module> time, const char* name) 210Module::Interface::Interface(std::shared_ptr<Module> time, const char* name)
211 : ServiceFramework(name), time(std::move(time)) {} 211 : ServiceFramework(name), time(std::move(time)) {}
212 212
213Module::Interface::~Interface() = default;
214
213void InstallInterfaces(SM::ServiceManager& service_manager) { 215void InstallInterfaces(SM::ServiceManager& service_manager) {
214 auto time = std::make_shared<Module>(); 216 auto time = std::make_shared<Module>();
215 std::make_shared<Time>(time, "time:a")->InstallAsService(service_manager); 217 std::make_shared<Time>(time, "time:a")->InstallAsService(service_manager);
diff --git a/src/core/hle/service/time/time.h b/src/core/hle/service/time/time.h
index 8dde28a94..5659ecad3 100644
--- a/src/core/hle/service/time/time.h
+++ b/src/core/hle/service/time/time.h
@@ -58,6 +58,7 @@ public:
58 class Interface : public ServiceFramework<Interface> { 58 class Interface : public ServiceFramework<Interface> {
59 public: 59 public:
60 explicit Interface(std::shared_ptr<Module> time, const char* name); 60 explicit Interface(std::shared_ptr<Module> time, const char* name);
61 ~Interface() override;
61 62
62 void GetStandardUserSystemClock(Kernel::HLERequestContext& ctx); 63 void GetStandardUserSystemClock(Kernel::HLERequestContext& ctx);
63 void GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx); 64 void GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp
index 993f1e65a..85244ac3b 100644
--- a/src/core/hle/service/vi/vi.cpp
+++ b/src/core/hle/service/vi/vi.cpp
@@ -984,6 +984,8 @@ Module::Interface::Interface(std::shared_ptr<Module> module, const char* name,
984 std::shared_ptr<NVFlinger::NVFlinger> nv_flinger) 984 std::shared_ptr<NVFlinger::NVFlinger> nv_flinger)
985 : ServiceFramework(name), module(std::move(module)), nv_flinger(std::move(nv_flinger)) {} 985 : ServiceFramework(name), module(std::move(module)), nv_flinger(std::move(nv_flinger)) {}
986 986
987Module::Interface::~Interface() = default;
988
987void Module::Interface::GetDisplayService(Kernel::HLERequestContext& ctx) { 989void Module::Interface::GetDisplayService(Kernel::HLERequestContext& ctx) {
988 LOG_WARNING(Service_VI, "(STUBBED) called"); 990 LOG_WARNING(Service_VI, "(STUBBED) called");
989 991
diff --git a/src/core/hle/service/vi/vi.h b/src/core/hle/service/vi/vi.h
index 92f5b6059..c2dc83605 100644
--- a/src/core/hle/service/vi/vi.h
+++ b/src/core/hle/service/vi/vi.h
@@ -26,6 +26,7 @@ public:
26 public: 26 public:
27 explicit Interface(std::shared_ptr<Module> module, const char* name, 27 explicit Interface(std::shared_ptr<Module> module, const char* name,
28 std::shared_ptr<NVFlinger::NVFlinger> nv_flinger); 28 std::shared_ptr<NVFlinger::NVFlinger> nv_flinger);
29 ~Interface() override;
29 30
30 void GetDisplayService(Kernel::HLERequestContext& ctx); 31 void GetDisplayService(Kernel::HLERequestContext& ctx);
31 32
diff --git a/src/core/hle/service/vi/vi_m.cpp b/src/core/hle/service/vi/vi_m.cpp
index d47da565b..207c06b16 100644
--- a/src/core/hle/service/vi/vi_m.cpp
+++ b/src/core/hle/service/vi/vi_m.cpp
@@ -15,4 +15,6 @@ VI_M::VI_M(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger>
15 RegisterHandlers(functions); 15 RegisterHandlers(functions);
16} 16}
17 17
18VI_M::~VI_M() = default;
19
18} // namespace Service::VI 20} // namespace Service::VI
diff --git a/src/core/hle/service/vi/vi_m.h b/src/core/hle/service/vi/vi_m.h
index 6abb9b3a3..487d58d50 100644
--- a/src/core/hle/service/vi/vi_m.h
+++ b/src/core/hle/service/vi/vi_m.h
@@ -11,6 +11,7 @@ namespace Service::VI {
11class VI_M final : public Module::Interface { 11class VI_M final : public Module::Interface {
12public: 12public:
13 explicit VI_M(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger> nv_flinger); 13 explicit VI_M(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger> nv_flinger);
14 ~VI_M() override;
14}; 15};
15 16
16} // namespace Service::VI 17} // namespace Service::VI
diff --git a/src/core/hle/service/vi/vi_s.cpp b/src/core/hle/service/vi/vi_s.cpp
index 8f82e797f..920e6a1f6 100644
--- a/src/core/hle/service/vi/vi_s.cpp
+++ b/src/core/hle/service/vi/vi_s.cpp
@@ -15,4 +15,6 @@ VI_S::VI_S(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger>
15 RegisterHandlers(functions); 15 RegisterHandlers(functions);
16} 16}
17 17
18VI_S::~VI_S() = default;
19
18} // namespace Service::VI 20} // namespace Service::VI
diff --git a/src/core/hle/service/vi/vi_s.h b/src/core/hle/service/vi/vi_s.h
index 8f16f804f..bbc31148f 100644
--- a/src/core/hle/service/vi/vi_s.h
+++ b/src/core/hle/service/vi/vi_s.h
@@ -11,6 +11,7 @@ namespace Service::VI {
11class VI_S final : public Module::Interface { 11class VI_S final : public Module::Interface {
12public: 12public:
13 explicit VI_S(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger> nv_flinger); 13 explicit VI_S(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger> nv_flinger);
14 ~VI_S() override;
14}; 15};
15 16
16} // namespace Service::VI 17} // namespace Service::VI
diff --git a/src/core/hle/service/vi/vi_u.cpp b/src/core/hle/service/vi/vi_u.cpp
index b84aed1d5..d81e410d6 100644
--- a/src/core/hle/service/vi/vi_u.cpp
+++ b/src/core/hle/service/vi/vi_u.cpp
@@ -14,4 +14,6 @@ VI_U::VI_U(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger>
14 RegisterHandlers(functions); 14 RegisterHandlers(functions);
15} 15}
16 16
17VI_U::~VI_U() = default;
18
17} // namespace Service::VI 19} // namespace Service::VI
diff --git a/src/core/hle/service/vi/vi_u.h b/src/core/hle/service/vi/vi_u.h
index e9b4f76b2..b92f28c92 100644
--- a/src/core/hle/service/vi/vi_u.h
+++ b/src/core/hle/service/vi/vi_u.h
@@ -11,6 +11,7 @@ namespace Service::VI {
11class VI_U final : public Module::Interface { 11class VI_U final : public Module::Interface {
12public: 12public:
13 explicit VI_U(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger> nv_flinger); 13 explicit VI_U(std::shared_ptr<Module> module, std::shared_ptr<NVFlinger::NVFlinger> nv_flinger);
14 ~VI_U() override;
14}; 15};
15 16
16} // namespace Service::VI 17} // namespace Service::VI