diff options
| author | bunnei <bunneidev@gmail.com> | 2021-03-07 13:46:53 -0800 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2021-03-07 13:46:53 -0800 |
| commit | 8f7eb194af199ef7a3b225399e8d6fede27234f2 (patch) | |
| tree | 5b4bc3648e7dc9abf39312cb62e55e8feba92ae1 /src/core/hle/kernel | |
| parent | 68ffac250ae2d1c2d5d961304d2c61f6755ab033 (diff) | |
common: Fiber: use a reference for YieldTo.
- Fixes another small leak.
Diffstat (limited to 'src/core/hle/kernel')
| -rw-r--r-- | src/core/hle/kernel/k_scheduler.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/src/core/hle/kernel/k_scheduler.cpp b/src/core/hle/kernel/k_scheduler.cpp index 6e89c3042..e7de48476 100644 --- a/src/core/hle/kernel/k_scheduler.cpp +++ b/src/core/hle/kernel/k_scheduler.cpp @@ -734,7 +734,7 @@ void KScheduler::ScheduleImpl() { } guard.unlock(); - Common::Fiber::YieldTo(*old_context, switch_fiber); + Common::Fiber::YieldTo(*old_context, *switch_fiber); /// When a thread wakes up, the scheduler may have changed to other in another core. auto& next_scheduler = *system.Kernel().CurrentScheduler(); next_scheduler.SwitchContextStep2(); @@ -769,13 +769,8 @@ void KScheduler::SwitchToCurrent() { break; } } - std::shared_ptr<Common::Fiber>* next_context; - if (next_thread != nullptr) { - next_context = &next_thread->GetHostContext(); - } else { - next_context = &idle_thread->GetHostContext(); - } - Common::Fiber::YieldTo(switch_fiber, *next_context); + auto thread = next_thread ? next_thread : idle_thread; + Common::Fiber::YieldTo(switch_fiber, *thread->GetHostContext()); } while (!is_switch_pending()); } } |
