diff options
author | bunnei <bunneidev@gmail.com> | 2020-11-17 06:02:45 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2020-12-06 09:03:24 +0100 |
commit | e18ee8d681bf05e8c1480dd1ad7133778ead773d (patch) | |
tree | fd319df94f2fd26d621d1b14fc5c57d7cb567d9e /src/core/hle/kernel/thread.cpp | |
parent | Merge pull request #5133 from lioncash/video-shadow2 (diff) | |
download | yuzu-e18ee8d681bf05e8c1480dd1ad7133778ead773d.tar yuzu-e18ee8d681bf05e8c1480dd1ad7133778ead773d.tar.gz yuzu-e18ee8d681bf05e8c1480dd1ad7133778ead773d.tar.bz2 yuzu-e18ee8d681bf05e8c1480dd1ad7133778ead773d.tar.lz yuzu-e18ee8d681bf05e8c1480dd1ad7133778ead773d.tar.xz yuzu-e18ee8d681bf05e8c1480dd1ad7133778ead773d.tar.zst yuzu-e18ee8d681bf05e8c1480dd1ad7133778ead773d.zip |
Diffstat (limited to 'src/core/hle/kernel/thread.cpp')
-rw-r--r-- | src/core/hle/kernel/thread.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 7d1eb2c6e..38b4a0987 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -191,7 +191,7 @@ ResultVal<std::shared_ptr<Thread>> Thread::Create(Core::System& system, ThreadTy thread->last_running_ticks = 0; thread->processor_id = processor_id; thread->ideal_core = processor_id; - thread->affinity_mask = 1ULL << processor_id; + thread->affinity_mask.SetAffinity(processor_id, true); thread->wait_objects = nullptr; thread->mutex_wait_address = 0; thread->condvar_wait_address = 0; @@ -479,15 +479,16 @@ ResultCode Thread::SetCoreAndAffinityMask(s32 new_core, u64 new_affinity_mask) { } if (use_override) { ideal_core_override = new_core; - affinity_mask_override = new_affinity_mask; } else { - const u64 old_affinity_mask = std::exchange(affinity_mask, new_affinity_mask); + const auto old_affinity_mask = affinity_mask.GetAffinityMask(); + affinity_mask.SetAffinityMask(new_affinity_mask); ideal_core = new_core; if (old_affinity_mask != new_affinity_mask) { const s32 old_core = processor_id; - if (processor_id >= 0 && ((affinity_mask >> processor_id) & 1) == 0) { + if (processor_id >= 0 && !affinity_mask.GetAffinity(processor_id)) { if (static_cast<s32>(ideal_core) < 0) { - processor_id = HighestSetCore(affinity_mask, Core::Hardware::NUM_CPU_CORES); + processor_id = HighestSetCore(affinity_mask.GetAffinityMask(), + Core::Hardware::NUM_CPU_CORES); } else { processor_id = ideal_core; } |