48class AudioFocusRegistry {
57 Token(
Token&& other) noexcept : id_(other.id_) { other.id_ = 0; }
70 int id() const noexcept {
return id_; }
93 current_.load(std::memory_order_acquire));
101 void unsubscribe(
int id)
noexcept;
103 AudioFocusRegistry() =
default;
105 mutable std::mutex mtx_;
107 std::vector<std::pair<int, Callback>> cbs_;
108 std::atomic<std::uint8_t> current_{
RAII subscription token. Move-only; destruction unsubscribes.
Definition audio_focus.hpp:53
~Token()
Definition audio_focus.hpp:68
Token(const Token &)=delete
Token & operator=(const Token &)=delete
int id() const noexcept
Definition audio_focus.hpp:70
Token & operator=(Token &&other) noexcept
Definition audio_focus.hpp:58
Token(Token &&other) noexcept
Definition audio_focus.hpp:57
Token(int id)
Definition audio_focus.hpp:56
static AudioFocusRegistry & instance()
void reset_for_test()
Reset for tests — clears all subscribers + state.
Token subscribe(Callback cb)
Subscribe a callback.
void publish(AudioFocusState state)
Publish a new state.
std::function< void(AudioFocusState)> Callback
Definition audio_focus.hpp:50
AudioFocusState current() const noexcept
Snapshot the last published state.
Definition audio_focus.hpp:91
Definition analyzer_provider.hpp:12
AudioFocusState
Audio-focus state reported to listeners.
Definition audio_focus.hpp:41
@ lost
Definition audio_focus.hpp:44
@ duck
Definition audio_focus.hpp:43
@ gained
Definition audio_focus.hpp:42
@ lost_transient
Definition audio_focus.hpp:45
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48