From dca22e08eb96a401406ef7fa62c59eea1b837f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 5 Aug 2016 16:04:39 +0200 Subject: Use Common::Flag and Common::Event when possible Replaces old and simple usages of std::atomic with Common::Flag (which was introduced after the initial usage), so it's clear that the variable is a flag and because Common::Flag is well tested. This also replaces the ready logic in WiimoteReal with Common::Event since it was basically just unnecessarily reimplementing Common::Event. --- Source/Core/VideoCommon/CommandProcessor.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'Source/Core/VideoCommon/CommandProcessor.cpp') 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 s_interrupt_set; -static std::atomic 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); } -- cgit v1.2.3