diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2016-08-10 16:15:52 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-08-10 16:15:52 +0200 |
| commit | caa7ff7c2597ab42cbf2b21c4be90ae4a2345326 (patch) | |
| tree | 5b404c3f0f13cb0cd716f9e311089e7989d8d8de /Source/Core/VideoCommon/CommandProcessor.cpp | |
| parent | c6a0e543a520204c1e56033ffa2511252b0dda4a (diff) | |
| parent | dca22e08eb96a401406ef7fa62c59eea1b837f7b (diff) | |
Merge pull request #4093 from leoetlino/flags-and-events
Use Common::Flag and Common::Event when possible
Diffstat (limited to 'Source/Core/VideoCommon/CommandProcessor.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/CommandProcessor.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/Source/Core/VideoCommon/CommandProcessor.cpp b/Source/Core/VideoCommon/CommandProcessor.cpp index 6e841d5fca..2b82173110 100644 --- a/Source/Core/VideoCommon/CommandProcessor.cpp +++ b/Source/Core/VideoCommon/CommandProcessor.cpp @@ -9,6 +9,7 @@ #include "Common/Atomic.h" #include "Common/ChunkFile.h" #include "Common/CommonTypes.h" +#include "Common/Flag.h" #include "Common/Logging/Log.h" #include "Core/ConfigManager.h" #include "Core/CoreTiming.h" @@ -36,8 +37,8 @@ static u16 m_bboxright; static u16 m_bboxbottom; static u16 m_tokenReg; -static std::atomic<bool> s_interrupt_set; -static std::atomic<bool> s_interrupt_waiting; +static Common::Flag s_interrupt_set; +static Common::Flag s_interrupt_waiting; static bool IsOnThread() { @@ -106,8 +107,8 @@ void Init() fifo.bFF_LoWatermark = 0; fifo.bFF_LoWatermarkInt = 0; - s_interrupt_set.store(false); - s_interrupt_waiting.store(false); + s_interrupt_set.Clear(); + s_interrupt_waiting.Clear(); et_UpdateInterrupts = CoreTiming::RegisterEvent("CPInterrupt", UpdateInterrupts_Wrapper); } @@ -324,18 +325,18 @@ void UpdateInterrupts(u64 userdata) { if (userdata) { - s_interrupt_set.store(true); + s_interrupt_set.Set(); INFO_LOG(COMMANDPROCESSOR, "Interrupt set"); ProcessorInterface::SetInterrupt(INT_CAUSE_CP, true); } else { - s_interrupt_set.store(false); + s_interrupt_set.Clear(); INFO_LOG(COMMANDPROCESSOR, "Interrupt cleared"); ProcessorInterface::SetInterrupt(INT_CAUSE_CP, false); } CoreTiming::ForceExceptionCheck(0); - s_interrupt_waiting.store(false); + s_interrupt_waiting.Clear(); Fifo::RunGpu(); } @@ -347,7 +348,7 @@ void UpdateInterruptsFromVideoBackend(u64 userdata) bool IsInterruptWaiting() { - return s_interrupt_waiting.load(); + return s_interrupt_waiting.IsSet(); } void SetCPStatusFromGPU() @@ -387,7 +388,7 @@ void SetCPStatusFromGPU() bool interrupt = (bpInt || ovfInt || undfInt) && m_CPCtrlReg.GPReadEnable; - if (interrupt != s_interrupt_set.load() && !s_interrupt_waiting.load()) + if (interrupt != s_interrupt_set.IsSet() && !s_interrupt_waiting.IsSet()) { u64 userdata = interrupt ? 1 : 0; if (IsOnThread()) @@ -395,7 +396,7 @@ void SetCPStatusFromGPU() if (!interrupt || bpInt || undfInt || ovfInt) { // Schedule the interrupt asynchronously - s_interrupt_waiting.store(true); + s_interrupt_waiting.Set(); CommandProcessor::UpdateInterruptsFromVideoBackend(userdata); } } @@ -418,14 +419,14 @@ void SetCPStatusFromCPU() bool interrupt = (bpInt || ovfInt || undfInt) && m_CPCtrlReg.GPReadEnable; - if (interrupt != s_interrupt_set.load() && !s_interrupt_waiting.load()) + if (interrupt != s_interrupt_set.IsSet() && !s_interrupt_waiting.IsSet()) { u64 userdata = interrupt ? 1 : 0; if (IsOnThread()) { if (!interrupt || bpInt || undfInt || ovfInt) { - s_interrupt_set.store(interrupt); + s_interrupt_set.Set(interrupt); INFO_LOG(COMMANDPROCESSOR, "Interrupt set"); ProcessorInterface::SetInterrupt(INT_CAUSE_CP, interrupt); } |
