From a370d287c3db5fad8c5e2d9fd2af56d312d19bc1 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Wed, 4 Apr 2018 16:42:10 -0700 Subject: [PATCH] Change AudioRingBuffer.cpp to use std::call_once --- libraries/audio/src/AudioRingBuffer.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/libraries/audio/src/AudioRingBuffer.cpp b/libraries/audio/src/AudioRingBuffer.cpp index 683211aac6..8f41ca8947 100644 --- a/libraries/audio/src/AudioRingBuffer.cpp +++ b/libraries/audio/src/AudioRingBuffer.cpp @@ -153,7 +153,7 @@ int AudioRingBufferTemplate::appendData(char *data, int maxSize) { namespace { int repeatedOverflowMessageID = 0; - std::atomic messageIDInit = 0; + std::once_flag messageIDFlag; } template @@ -169,9 +169,8 @@ int AudioRingBufferTemplate::writeData(const char* data, int maxSize) { _nextOutput = shiftedPositionAccomodatingWrap(_nextOutput, samplesToDelete); _overflowCount++; - if (++messageIDInit == 1) { - repeatedOverflowMessageID = LogHandler::getInstance().newRepeatedMessageID(); - } + std::call_once(messageIDFlag, [](int& id) { id = LogHandler::getInstance().newRepeatedMessageID(); }, + repeatedOverflowMessageID); HIFI_FCDEBUG_ID(audio(), repeatedOverflowMessageID, RING_BUFFER_OVERFLOW_DEBUG); } @@ -281,9 +280,8 @@ int AudioRingBufferTemplate::writeSamples(ConstIterator source, int maxSample _nextOutput = shiftedPositionAccomodatingWrap(_nextOutput, samplesToDelete); _overflowCount++; - if (++messageIDInit == 1) { - repeatedOverflowMessageID = LogHandler::getInstance().newRepeatedMessageID(); - } + std::call_once(messageIDFlag, [](int& id) { id = LogHandler::getInstance().newRepeatedMessageID(); }, + repeatedOverflowMessageID); HIFI_FCDEBUG_ID(audio(), repeatedOverflowMessageID, RING_BUFFER_OVERFLOW_DEBUG); } @@ -307,9 +305,8 @@ int AudioRingBufferTemplate::writeSamplesWithFade(ConstIterator source, int m _nextOutput = shiftedPositionAccomodatingWrap(_nextOutput, samplesToDelete); _overflowCount++; - if (++messageIDInit == 1) { - repeatedOverflowMessageID = LogHandler::getInstance().newRepeatedMessageID(); - } + std::call_once(messageIDFlag, [](int& id) { id = LogHandler::getInstance().newRepeatedMessageID(); }, + repeatedOverflowMessageID); HIFI_FCDEBUG_ID(audio(), repeatedOverflowMessageID, RING_BUFFER_OVERFLOW_DEBUG); }