Exact live sequencer channel resolved only after broker admission. More...
#include <control_sequencer_state_executor.hpp>
Public Attributes | |
| ControlRegistrationId | registration_id |
| ControlHostTier | host_tier = ControlHostTier::SharedPluginHost |
| state::SequencerStateChannel * | channel = nullptr |
Exact live sequencer channel resolved only after broker admission.
The resolver binds the admission registration to one host-owned state::SequencerStateChannel.
The channel is strictly single-producer/single-consumer per side: the engine (audio) thread owns every audio_* method, and exactly one UI/message-thread consumer owns the applied-echo FIFO. Neither sequencer operation is that consumer. They therefore use only the non-destructive UI-side reads (ui_read_latest_snapshot, ui_read_playhead, ui_resync_required_epoch) and the UI-side producer ui_try_submit, and never touch ui_try_pop_applied or any audio_* method. Both executors are intended to be wrapped by ControlMainThreadExecutor and refuse an off-main call whenever a real host dispatcher is installed, so the host's own main-thread UI owner and these operations never race the single-writer command FIFO.
| state::SequencerStateChannel* pulp::inspect::ControlSequencerStateTarget::channel = nullptr |
| ControlHostTier pulp::inspect::ControlSequencerStateTarget::host_tier = ControlHostTier::SharedPluginHost |
| ControlRegistrationId pulp::inspect::ControlSequencerStateTarget::registration_id |