Theoretically one could alter the plugins after a delivery even on a
frozen track. ..or even change settings, the ordering and add/remove
plugins after the frozen part of a track.
We won't go there. Frozen is frozen. this API is not needed after all.
This reverts commit
6d89488d64d44ed4b3283308a583b320300553c8.
AlsaAudioBackend::AlsaAudioBackend (AudioEngine& e, AudioBackendInfo& info)
: AudioBackend (e, info)
, _pcmi (0)
AlsaAudioBackend::AlsaAudioBackend (AudioEngine& e, AudioBackendInfo& info)
: AudioBackend (e, info)
, _pcmi (0)
- , _run (false)
- , _active (false)
, _freewheeling (false)
, _capture_device("")
, _playback_device("")
, _freewheeling (false)
, _capture_device("")
, _playback_device("")
int
AlsaAudioBackend::_start (bool for_latency_measurement)
{
int
AlsaAudioBackend::_start (bool for_latency_measurement)
{
PBD::error << _("AlsaAudioBackend: already active.") << endmsg;
return -1;
}
PBD::error << _("AlsaAudioBackend: already active.") << endmsg;
return -1;
}
engine.buffer_size_change (_samples_per_period);
engine.reconnect_ports ();
engine.buffer_size_change (_samples_per_period);
engine.reconnect_ports ();
if (_realtime_pthread_create (SCHED_FIFO, -20,
&_main_thread, pthread_process, this))
if (_realtime_pthread_create (SCHED_FIFO, -20,
&_main_thread, pthread_process, this))
{
PBD::error << _("AlsaAudioBackend: failed to create process thread.") << endmsg;
delete _pcmi; _pcmi = 0;
{
PBD::error << _("AlsaAudioBackend: failed to create process thread.") << endmsg;
delete _pcmi; _pcmi = 0;
return -1;
} else {
PBD::warning << _("AlsaAudioBackend: cannot acquire realtime permissions.") << endmsg;
return -1;
} else {
PBD::warning << _("AlsaAudioBackend: cannot acquire realtime permissions.") << endmsg;
- while (!_active && --timeout > 0) { Glib::usleep (1000); }
+ while (!_running && --timeout > 0) { Glib::usleep (1000); }
- if (timeout == 0 || !_active) {
+ if (timeout == 0 || !_running) {
PBD::error << _("AlsaAudioBackend: failed to start process thread.") << endmsg;
delete _pcmi; _pcmi = 0;
PBD::error << _("AlsaAudioBackend: failed to start process thread.") << endmsg;
delete _pcmi; _pcmi = 0;
AlsaAudioBackend::stop ()
{
void *status;
AlsaAudioBackend::stop ()
{
void *status;
if (pthread_join (_main_thread, &status)) {
PBD::error << _("AlsaAudioBackend: failed to terminate.") << endmsg;
return -1;
if (pthread_join (_main_thread, &status)) {
PBD::error << _("AlsaAudioBackend: failed to terminate.") << endmsg;
return -1;
unregister_system_ports();
delete _pcmi; _pcmi = 0;
unregister_system_ports();
delete _pcmi; _pcmi = 0;
- return (_active == false) ? 0 : -1;
bool
AlsaAudioBackend::available () const
{
bool
AlsaAudioBackend::available () const
{
- return _run && _active;
AlsaAudioBackend::main_process_thread ()
{
AudioEngine::thread_init_callback (this);
AlsaAudioBackend::main_process_thread ()
{
AudioEngine::thread_init_callback (this);
_processed_samples = 0;
uint64_t clock1, clock2;
_processed_samples = 0;
uint64_t clock1, clock2;
_pcmi->pcm_start ();
int no_proc_errors = 0;
_pcmi->pcm_start ();
int no_proc_errors = 0;
long nr;
bool xrun = false;
if (!_freewheeling) {
long nr;
bool xrun = false;
if (!_freewheeling) {
std::string _instance_name;
Alsa_pcmi *_pcmi;
std::string _instance_name;
Alsa_pcmi *_pcmi;
- bool _run; /* keep going or stop, ardour thread */
- bool _active; /* is running, process thread */
bool _freewheeling;
void enumerate_midi_devices (std::vector<std::string> &) const;
bool _freewheeling;
void enumerate_midi_devices (std::vector<std::string> &) const;