summaryrefslogtreecommitdiffstats
path: root/libavfilter/vsrc_gfxcapture_winrt.cpp
diff options
context:
space:
mode:
authorTimo Rothenpieler <[email protected]>2025-09-16 15:32:10 +0200
committerTimo Rothenpieler <[email protected]>2025-09-16 15:52:11 +0000
commitb8256b82f5341d9ae5774f77779507db09f97b96 (patch)
tree999582527e829f7c561b22e89fcc18dd82f505ce /libavfilter/vsrc_gfxcapture_winrt.cpp
parent61378d6b911d30ef7ec095bcbb25b243ea07673c (diff)
avfilter/vsrc_gfxcapture: remove needless use of atomics
Diffstat (limited to 'libavfilter/vsrc_gfxcapture_winrt.cpp')
-rw-r--r--libavfilter/vsrc_gfxcapture_winrt.cpp18
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);
}