diff options
| author | 2022-07-10 10:29:56 +0200 | |
|---|---|---|
| committer | 2022-07-10 10:29:56 +0200 | |
| commit | 25e47738f71e6a6469ff251dd84e28289133dad1 (patch) | |
| tree | c431a3b1ee04fb4da60e08ab21d78a5813e9b528 /src/core/hle/kernel/kernel.cpp | |
| parent | Merge pull request #8531 from FernandoS27/core-timing-fix-reg (diff) | |
| parent | PR (diff) | |
| download | yuzu-25e47738f71e6a6469ff251dd84e28289133dad1.tar.gz yuzu-25e47738f71e6a6469ff251dd84e28289133dad1.tar.xz yuzu-25e47738f71e6a6469ff251dd84e28289133dad1.zip | |
Merge pull request #8561 from Kelebek1/Audio-CoreTiming
Rework CoreTiming events
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 0009193be..7307cf262 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -234,17 +234,18 @@ struct KernelCore::Impl { | |||
| 234 | 234 | ||
| 235 | void InitializePreemption(KernelCore& kernel) { | 235 | void InitializePreemption(KernelCore& kernel) { |
| 236 | preemption_event = Core::Timing::CreateEvent( | 236 | preemption_event = Core::Timing::CreateEvent( |
| 237 | "PreemptionCallback", [this, &kernel](std::uintptr_t, std::chrono::nanoseconds) { | 237 | "PreemptionCallback", |
| 238 | [this, &kernel](std::uintptr_t, s64 time, | ||
| 239 | std::chrono::nanoseconds) -> std::optional<std::chrono::nanoseconds> { | ||
| 238 | { | 240 | { |
| 239 | KScopedSchedulerLock lock(kernel); | 241 | KScopedSchedulerLock lock(kernel); |
| 240 | global_scheduler_context->PreemptThreads(); | 242 | global_scheduler_context->PreemptThreads(); |
| 241 | } | 243 | } |
| 242 | const auto time_interval = std::chrono::nanoseconds{std::chrono::milliseconds(10)}; | 244 | return std::nullopt; |
| 243 | system.CoreTiming().ScheduleEvent(time_interval, preemption_event); | ||
| 244 | }); | 245 | }); |
| 245 | 246 | ||
| 246 | const auto time_interval = std::chrono::nanoseconds{std::chrono::milliseconds(10)}; | 247 | const auto time_interval = std::chrono::nanoseconds{std::chrono::milliseconds(10)}; |
| 247 | system.CoreTiming().ScheduleEvent(time_interval, preemption_event); | 248 | system.CoreTiming().ScheduleLoopingEvent(time_interval, time_interval, preemption_event); |
| 248 | } | 249 | } |
| 249 | 250 | ||
| 250 | void InitializeShutdownThreads() { | 251 | void InitializeShutdownThreads() { |