diff options
| author | 2021-02-20 20:51:11 -0500 | |
|---|---|---|
| committer | 2021-02-20 20:51:11 -0500 | |
| commit | 8e4c9c9852b17082f9cb2e2b3d954dee6be7280f (patch) | |
| tree | 15e4fc8fb15f1d574063d89649c62bda74ac02b2 /src/core/hle/service | |
| parent | Merge pull request #5965 from Morph1984/shader-count (diff) | |
| download | yuzu-8e4c9c9852b17082f9cb2e2b3d954dee6be7280f.tar.gz yuzu-8e4c9c9852b17082f9cb2e2b3d954dee6be7280f.tar.xz yuzu-8e4c9c9852b17082f9cb2e2b3d954dee6be7280f.zip | |
kernel: Fix resource release exception on exit
After rewriting the resource limit, objects releasing reserved resources require a live kernel instance.
This commit fixes exceptions that occur due to the kernel being destroyed before some objects released their resources, allowing for a graceful exit.
Diffstat (limited to 'src/core/hle/service')
| -rw-r--r-- | src/core/hle/service/time/time_manager.cpp | 4 | ||||
| -rw-r--r-- | src/core/hle/service/time/time_manager.h | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/core/hle/service/time/time_manager.cpp b/src/core/hle/service/time/time_manager.cpp index 858623e2b..1f7309f6b 100644 --- a/src/core/hle/service/time/time_manager.cpp +++ b/src/core/hle/service/time/time_manager.cpp | |||
| @@ -279,6 +279,10 @@ const SharedMemory& TimeManager::GetSharedMemory() const { | |||
| 279 | return impl->shared_memory; | 279 | return impl->shared_memory; |
| 280 | } | 280 | } |
| 281 | 281 | ||
| 282 | void TimeManager::Shutdown() { | ||
| 283 | impl.reset(); | ||
| 284 | } | ||
| 285 | |||
| 282 | void TimeManager::UpdateLocalSystemClockTime(s64 posix_time) { | 286 | void TimeManager::UpdateLocalSystemClockTime(s64 posix_time) { |
| 283 | impl->UpdateLocalSystemClockTime(system, posix_time); | 287 | impl->UpdateLocalSystemClockTime(system, posix_time); |
| 284 | } | 288 | } |
diff --git a/src/core/hle/service/time/time_manager.h b/src/core/hle/service/time/time_manager.h index 993c7c288..4db8cc0e1 100644 --- a/src/core/hle/service/time/time_manager.h +++ b/src/core/hle/service/time/time_manager.h | |||
| @@ -61,6 +61,8 @@ public: | |||
| 61 | 61 | ||
| 62 | const SharedMemory& GetSharedMemory() const; | 62 | const SharedMemory& GetSharedMemory() const; |
| 63 | 63 | ||
| 64 | void Shutdown(); | ||
| 65 | |||
| 64 | void SetupTimeZoneManager(std::string location_name, | 66 | void SetupTimeZoneManager(std::string location_name, |
| 65 | Clock::SteadyClockTimePoint time_zone_updated_time_point, | 67 | Clock::SteadyClockTimePoint time_zone_updated_time_point, |
| 66 | std::size_t total_location_name_count, u128 time_zone_rule_version, | 68 | std::size_t total_location_name_count, u128 time_zone_rule_version, |