diff options
| author | 2021-06-22 04:22:19 -0300 | |
|---|---|---|
| committer | 2021-06-22 04:33:07 -0300 | |
| commit | c9c8537643b970c44d60961f3fefaa223a4a2362 (patch) | |
| tree | bd770fb510107c73fce5ce94da9576639f42817e /src/core/core.cpp | |
| parent | Merge pull request #6499 from FernandoS27/we-were-on-a-break (diff) | |
| download | yuzu-c9c8537643b970c44d60961f3fefaa223a4a2362.tar.gz yuzu-c9c8537643b970c44d60961f3fefaa223a4a2362.tar.xz yuzu-c9c8537643b970c44d60961f3fefaa223a4a2362.zip | |
core: Make is_powered_on atomic
Fixes potential data races when shutting down.
Diffstat (limited to 'src/core/core.cpp')
| -rw-r--r-- | src/core/core.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index c5004b7b4..e6f1aa0e7 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <array> | 5 | #include <array> |
| 6 | #include <atomic> | ||
| 6 | #include <memory> | 7 | #include <memory> |
| 7 | #include <utility> | 8 | #include <utility> |
| 8 | 9 | ||
| @@ -377,7 +378,7 @@ struct System::Impl { | |||
| 377 | std::unique_ptr<Core::DeviceMemory> device_memory; | 378 | std::unique_ptr<Core::DeviceMemory> device_memory; |
| 378 | Core::Memory::Memory memory; | 379 | Core::Memory::Memory memory; |
| 379 | CpuManager cpu_manager; | 380 | CpuManager cpu_manager; |
| 380 | bool is_powered_on = false; | 381 | std::atomic_bool is_powered_on{}; |
| 381 | bool exit_lock = false; | 382 | bool exit_lock = false; |
| 382 | 383 | ||
| 383 | Reporter reporter; | 384 | Reporter reporter; |
| @@ -463,7 +464,7 @@ System::ResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::st | |||
| 463 | } | 464 | } |
| 464 | 465 | ||
| 465 | bool System::IsPoweredOn() const { | 466 | bool System::IsPoweredOn() const { |
| 466 | return impl->is_powered_on; | 467 | return impl->is_powered_on.load(std::memory_order::relaxed); |
| 467 | } | 468 | } |
| 468 | 469 | ||
| 469 | void System::PrepareReschedule() { | 470 | void System::PrepareReschedule() { |