From a47332bf8a0f2b98a0b7043088d13d9fc0f44b30 Mon Sep 17 00:00:00 2001 From: degasus Date: Mon, 7 Nov 2016 22:16:34 +0100 Subject: [PATCH] VideoCommon/Render: Use a flag for screenshot. --- Source/Core/VideoCommon/RenderBase.cpp | 10 ++++------ Source/Core/VideoCommon/RenderBase.h | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index b1823a9126..94d51ee481 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -62,8 +62,7 @@ std::mutex Renderer::s_criticalScreenshot; std::string Renderer::s_sScreenshotName; Common::Event Renderer::s_screenshotCompleted; - -volatile bool Renderer::s_bScreenshot; +Common::Flag Renderer::s_screenshot; // The framebuffer size int Renderer::s_target_width; @@ -303,7 +302,7 @@ void Renderer::SetScreenshot(const std::string& filename) { std::lock_guard lk(s_criticalScreenshot); s_sScreenshotName = filename; - s_bScreenshot = true; + s_screenshot.Set(); } // Create On-Screen-Messages @@ -644,7 +643,7 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, const bool Renderer::IsFrameDumping() { - if (s_bScreenshot) + if (s_screenshot.IsSet()) return true; #if defined(HAVE_LIBAV) || defined(_WIN32) @@ -718,7 +717,7 @@ void Renderer::RunFrameDumps() FlipImageData(data.data(), config.width, config.height, 4); // Save screenshot - if (s_bScreenshot) + if (s_screenshot.TestAndClear()) { std::lock_guard lk(s_criticalScreenshot); @@ -728,7 +727,6 @@ void Renderer::RunFrameDumps() // Reset settings s_sScreenshotName.clear(); - s_bScreenshot = false; s_screenshotCompleted.Set(); } diff --git a/Source/Core/VideoCommon/RenderBase.h b/Source/Core/VideoCommon/RenderBase.h index 80b4a88161..2de4034bdf 100644 --- a/Source/Core/VideoCommon/RenderBase.h +++ b/Source/Core/VideoCommon/RenderBase.h @@ -153,7 +153,7 @@ protected: bool swap_upside_down = false); void FinishFrameData(); - static volatile bool s_bScreenshot; + static Common::Flag s_screenshot; static std::mutex s_criticalScreenshot; static std::string s_sScreenshotName;