diff options
Diffstat (limited to '')
| -rw-r--r-- | src/core/hle/kernel/time_manager.cpp | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/time_manager.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/core/hle/kernel/time_manager.cpp b/src/core/hle/kernel/time_manager.cpp index ea9089ff8..caf329bfb 100644 --- a/src/core/hle/kernel/time_manager.cpp +++ b/src/core/hle/kernel/time_manager.cpp | |||
| @@ -32,6 +32,7 @@ TimeManager::TimeManager(Core::System& system_) : system{system_} { | |||
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | void TimeManager::ScheduleTimeEvent(Handle& event_handle, Thread* timetask, s64 nanoseconds) { | 34 | void TimeManager::ScheduleTimeEvent(Handle& event_handle, Thread* timetask, s64 nanoseconds) { |
| 35 | std::lock_guard lock{mutex}; | ||
| 35 | event_handle = timetask->GetGlobalHandle(); | 36 | event_handle = timetask->GetGlobalHandle(); |
| 36 | if (nanoseconds > 0) { | 37 | if (nanoseconds > 0) { |
| 37 | ASSERT(timetask); | 38 | ASSERT(timetask); |
| @@ -46,6 +47,7 @@ void TimeManager::ScheduleTimeEvent(Handle& event_handle, Thread* timetask, s64 | |||
| 46 | } | 47 | } |
| 47 | 48 | ||
| 48 | void TimeManager::UnscheduleTimeEvent(Handle event_handle) { | 49 | void TimeManager::UnscheduleTimeEvent(Handle event_handle) { |
| 50 | std::lock_guard lock{mutex}; | ||
| 49 | if (event_handle == InvalidHandle) { | 51 | if (event_handle == InvalidHandle) { |
| 50 | return; | 52 | return; |
| 51 | } | 53 | } |
| @@ -54,7 +56,7 @@ void TimeManager::UnscheduleTimeEvent(Handle event_handle) { | |||
| 54 | } | 56 | } |
| 55 | 57 | ||
| 56 | void TimeManager::CancelTimeEvent(Thread* time_task) { | 58 | void TimeManager::CancelTimeEvent(Thread* time_task) { |
| 57 | Handle event_handle = time_task->GetGlobalHandle(); | 59 | const Handle event_handle = time_task->GetGlobalHandle(); |
| 58 | UnscheduleTimeEvent(event_handle); | 60 | UnscheduleTimeEvent(event_handle); |
| 59 | } | 61 | } |
| 60 | 62 | ||
diff --git a/src/core/hle/kernel/time_manager.h b/src/core/hle/kernel/time_manager.h index 307a18765..f39df39a0 100644 --- a/src/core/hle/kernel/time_manager.h +++ b/src/core/hle/kernel/time_manager.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <mutex> | ||
| 8 | #include <unordered_map> | 9 | #include <unordered_map> |
| 9 | 10 | ||
| 10 | #include "core/hle/kernel/object.h" | 11 | #include "core/hle/kernel/object.h" |
| @@ -42,6 +43,7 @@ private: | |||
| 42 | Core::System& system; | 43 | Core::System& system; |
| 43 | std::shared_ptr<Core::Timing::EventType> time_manager_event_type; | 44 | std::shared_ptr<Core::Timing::EventType> time_manager_event_type; |
| 44 | std::unordered_map<Handle, bool> cancelled_events; | 45 | std::unordered_map<Handle, bool> cancelled_events; |
| 46 | std::mutex mutex; | ||
| 45 | }; | 47 | }; |
| 46 | 48 | ||
| 47 | } // namespace Kernel | 49 | } // namespace Kernel |