[Live-devel] [PATCH v1] BasicUsageEnvironment: fix compilation on older toolchains

Thomas Devoogdt thomas at devoogdt.com
Tue Jun 9 08:15:18 PDT 2026


$ ./genMakefiles linux-64bit && make

```
BasicTaskScheduler.cpp: In member function ‘virtual void BasicTaskScheduler::SingleStep(unsigned int)’:
BasicTaskScheduler.cpp:191:40: error: ‘struct std::atomic_flag’ has no member named ‘test’
  191 |       if (fTriggersAwaitingHandling[i].test()) {
      |                                        ^~~~
```

https://en.cppreference.com/cpp/atomic/atomic_flag/test

test() is a C++20 feature, the code base does not require C++20
anywhere, so just use test_and_set() to allow compilation with C++11

Signed-off-by: Thomas Devoogdt <thomas at devoogdt.com>
---
 BasicUsageEnvironment/BasicTaskScheduler.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/BasicUsageEnvironment/BasicTaskScheduler.cpp b/BasicUsageEnvironment/BasicTaskScheduler.cpp
index 6d16844a..a4a12de1 100644
--- a/BasicUsageEnvironment/BasicTaskScheduler.cpp
+++ b/BasicUsageEnvironment/BasicTaskScheduler.cpp
@@ -188,7 +188,7 @@ void BasicTaskScheduler::SingleStep(unsigned maxDelayTime) {
       if (mask == 0) mask = EVENT_TRIGGER_ID_HIGH_BIT;
 
 #ifndef NO_STD_LIB
-      if (fTriggersAwaitingHandling[i].test()) {
+      if (fTriggersAwaitingHandling[i].test_and_set()) {
 	fTriggersAwaitingHandling[i].clear();
 #else
       if (fTriggersAwaitingHandling[i]) {
-- 
2.43.0



More information about the live-devel mailing list