22 return toAudioState(m_state.load(std::memory_order_acquire));
27 return toAudioError(m_state.load(std::memory_order_acquire));
30template <
typename StatesChecker,
typename NewState>
31Notifier QAudioStateMachine::changeState(
const StatesChecker &checker,
const NewState &
newState)
33 if constexpr (std::is_same_v<RawState, NewState>)
36 RawState prevState = m_state.load(std::memory_order_relaxed);
40 return {
this,
newState(prevState), prevState };
53 auto getNewState = [&](
RawState prevState) {
58 return changeState(statesChecker, getNewState);
85 const auto state = m_state.load(std::memory_order_acquire);
98 m_suspendedInState =
result.prevAudioState();
127 return changeState([](
RawState) {
return true; }, fixState);
DarwinBluetooth::LECBManagerNotifier * notifier
QAudioStateMachine(QAudioStateChangeNotifier ¬ifier)
QAudio::Error error() const
Notifier start(bool isActive=true)
Notifier updateActiveOrIdle(bool isActive, QAudio::Error error=QAudio::NoError)
QAudio::State state() const
Notifier setError(QAudio::Error error)
Notifier activateFromIdle()
bool isActiveOrIdle() const
Notifier stop(QAudio::Error error=QAudio::NoError, bool shouldDrain=false, bool forceUpdateError=false)
Notifier forceSetState(QAudio::State state, QAudio::Error error=QAudio::NoError)
AudioStateMachineUtils::RawState RawState
std::pair< bool, bool > getDrainedAndStopped() const
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
constexpr bool isDrainingState(RawState state)
constexpr auto makeStatesChecker(States... states)
constexpr RawState removeDrainingFlag(RawState state)
constexpr QAudio::State toAudioState(RawState state)
constexpr RawState setStateError(RawState state, QAudio::Error error)
constexpr RawState toRawState(QAudio::State state, QAudio::Error error=QAudio::NoError)
constexpr RawState addDrainingFlag(RawState state)
constexpr QAudio::Error toAudioError(RawState state)
bool multipleCompareExchange(std::atomic< T > &target, T &prevValue, Predicate predicate, NewValueGetter newValueGetter)
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error