diff options
author | Timo Rothenpieler <[email protected]> | 2025-09-16 15:32:10 +0200 |
---|---|---|
committer | Timo Rothenpieler <[email protected]> | 2025-09-16 15:52:11 +0000 |
commit | b8256b82f5341d9ae5774f77779507db09f97b96 (patch) | |
tree | 999582527e829f7c561b22e89fcc18dd82f505ce | |
parent | 61378d6b911d30ef7ec095bcbb25b243ea07673c (diff) |
avfilter/vsrc_gfxcapture: remove needless use of atomics
-rw-r--r-- | libavfilter/vsrc_gfxcapture_winrt.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/libavfilter/vsrc_gfxcapture_winrt.cpp b/libavfilter/vsrc_gfxcapture_winrt.cpp index 0849380b3a..9562863d7f 100644 --- a/libavfilter/vsrc_gfxcapture_winrt.cpp +++ b/libavfilter/vsrc_gfxcapture_winrt.cpp @@ -47,7 +47,6 @@ extern "C" { #include "vsrc_gfxcapture.h" } -#include <atomic> #include <cinttypes> #include <condition_variable> #include <cwchar> @@ -709,21 +708,19 @@ static int run_on_wgc_thread(AVFilterContext *avctx, F &&cb) struct CBData { std::mutex mutex; std::condition_variable cond; - std::atomic<bool> done { false }; - std::atomic<bool> cancel { false }; - int ret = AVERROR_BUG; + bool done { false }; + bool cancel { false }; + int ret { AVERROR_BUG }; }; auto cbdata = std::make_shared<CBData>(); - std::unique_lock cblock(cbdata->mutex); - boolean res = 0; CHECK_HR_RET(wgctx->dispatcher_queue->TryEnqueue( create_cb_handler<IDispatcherQueueHandler>( [cb = std::forward<F>(cb), cbdata]() { { std::lock_guard lock(cbdata->mutex); - if (cbdata->cancel.load(std::memory_order_acquire)) + if (cbdata->cancel) return S_OK; try { @@ -734,7 +731,7 @@ static int run_on_wgc_thread(AVFilterContext *avctx, F &&cb) cbdata->ret = AVERROR_BUG; } - cbdata->done.store(true, std::memory_order_release); + cbdata->done = true; } cbdata->cond.notify_one(); @@ -745,8 +742,9 @@ static int run_on_wgc_thread(AVFilterContext *avctx, F &&cb) return AVERROR_EXTERNAL; } - if (!cbdata->cond.wait_for(cblock, std::chrono::seconds(1), [&]() { return cbdata->done.load(std::memory_order_acquire); })) { - cbdata->cancel.store(true, std::memory_order_release); + std::unique_lock cblock(cbdata->mutex); + if (!cbdata->cond.wait_for(cblock, std::chrono::seconds(1), [&]() { return cbdata->done; })) { + cbdata->cancel = true; av_log(avctx, AV_LOG_ERROR, "WGC thread callback timed out\n"); return AVERROR(ETIMEDOUT); } |