diff options
| author | Markus Wick <markus+github@selfnet.de> | 2015-05-22 14:11:16 +0200 |
|---|---|---|
| committer | Markus Wick <markus+github@selfnet.de> | 2015-05-22 14:11:16 +0200 |
| commit | ad9dae30a850cb31576f01ab80441e79d630f345 (patch) | |
| tree | 5176a0947c4f456b9bc57e3ff1ba7fd5f3a1d107 /Source/Core/VideoBackends/Software/SWmain.cpp | |
| parent | 474188d606c8f20301dfacb8985ffe19df8c3195 (diff) | |
| parent | 26a3eaf95906b047170a6871371fb6201d90d81b (diff) | |
Merge pull request #2410 from lioncash/swatomic
Software: Convert most volatile variables to atomics
Diffstat (limited to 'Source/Core/VideoBackends/Software/SWmain.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Software/SWmain.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/Source/Core/VideoBackends/Software/SWmain.cpp b/Source/Core/VideoBackends/Software/SWmain.cpp index 784fe6d07b..1b35e0dde3 100644 --- a/Source/Core/VideoBackends/Software/SWmain.cpp +++ b/Source/Core/VideoBackends/Software/SWmain.cpp @@ -2,9 +2,9 @@ // Licensed under GPLv2 // Refer to the license.txt file included. +#include <atomic> #include <string> -#include "Common/Atomic.h" #include "Common/CommonTypes.h" #include "Common/FileUtil.h" #include "Common/StringUtil.h" @@ -41,7 +41,7 @@ #define VSYNC_ENABLED 0 -static volatile u32 s_swapRequested = false; +static std::atomic<bool> s_swapRequested; static volatile struct { @@ -53,8 +53,8 @@ static volatile struct namespace SW { -static volatile bool fifoStateRun = false; -static volatile bool emuRunningState = false; +static std::atomic<bool> fifoStateRun; +static std::atomic<bool> emuRunningState; static std::mutex m_csSWVidOccupied; std::string VideoSoftware::GetName() const @@ -144,12 +144,12 @@ void VideoSoftware::PauseAndLock(bool doLock, bool unpauseOnUnlock) void VideoSoftware::RunLoop(bool enable) { - emuRunningState = enable; + emuRunningState.store(enable); } void VideoSoftware::EmuStateChange(EMUSTATE_CHANGE newState) { - emuRunningState = (newState == EMUSTATE_CHANGE_PLAY) ? true : false; + emuRunningState.store(newState == EMUSTATE_CHANGE_PLAY); } void VideoSoftware::Shutdown() @@ -243,7 +243,7 @@ void VideoSoftware::Video_EndField() // If we are in dual core mode, notify the GPU thread about the new color texture. if (SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread) - Common::AtomicStoreRelease(s_swapRequested, true); + s_swapRequested.store(true); else SWRenderer::Swap(s_beginFieldArgs.fbWidth, s_beginFieldArgs.fbHeight); } @@ -300,10 +300,10 @@ bool VideoSoftware::Video_Screenshot(const std::string& filename) // Run from the graphics thread static void VideoFifo_CheckSwapRequest() { - if (Common::AtomicLoadAcquire(s_swapRequested)) + if (s_swapRequested.load()) { SWRenderer::Swap(s_beginFieldArgs.fbWidth, s_beginFieldArgs.fbHeight); - Common::AtomicStoreRelease(s_swapRequested, false); + s_swapRequested.store(false); } } @@ -313,9 +313,9 @@ static void VideoFifo_CheckSwapRequest() void VideoSoftware::Video_EnterLoop() { std::lock_guard<std::mutex> lk(m_csSWVidOccupied); - fifoStateRun = true; + fifoStateRun.store(true); - while (fifoStateRun) + while (fifoStateRun.load()) { VideoFifo_CheckSwapRequest(); g_video_backend->PeekMessages(); @@ -325,7 +325,7 @@ void VideoSoftware::Video_EnterLoop() Common::YieldCPU(); } - while (!emuRunningState && fifoStateRun) + while (!emuRunningState.load() && fifoStateRun.load()) { g_video_backend->PeekMessages(); VideoFifo_CheckSwapRequest(); @@ -338,7 +338,7 @@ void VideoSoftware::Video_EnterLoop() void VideoSoftware::Video_ExitLoop() { - fifoStateRun = false; + fifoStateRun.store(false); } // TODO : could use the OSD class in video common, we would need to implement the Renderer class |
