X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Faudioengine.cc;h=96445b597388c17e1b1d13f2765f8e280f456d43;hb=5956e864e7ceb1285e43f376796aaec5230d16e9;hp=30c2113c06ad39fe7e23d3f695e985c3586e7db1;hpb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;p=ardour.git diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 30c2113c06..96445b5973 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -53,6 +53,7 @@ #include "ardour/mtdm.h" #include "ardour/port.h" #include "ardour/process_thread.h" +#include "ardour/rc_configuration.h" #include "ardour/session.h" #include "pbd/i18n.h" @@ -775,12 +776,26 @@ AudioEngine::backend_discover (const string& path) return info; } +#ifdef NDEBUG +static bool running_from_source_tree () +{ + // dup ARDOUR_UI_UTILS::running_from_source_tree () + gchar const *x = g_getenv ("ARDOUR_THEMES_PATH"); + return x && (string (x).find ("gtk2_ardour") != string::npos); +} +#endif + vector AudioEngine::available_backends() const { vector r; for (BackendMap::const_iterator i = _backends.begin(); i != _backends.end(); ++i) { +#ifdef NDEBUG + if (i->first == "None (Dummy)" && !running_from_source_tree () && Config->get_hide_dummy_backend ()) { + continue; + } +#endif r.push_back (i->second); } @@ -864,8 +879,7 @@ AudioEngine::start (bool for_latency) int error_code = _backend->start (for_latency); if (error_code != 0) { - _last_backend_error_string = - AudioBackend::get_error_string((AudioBackend::ErrorCode)error_code); + _last_backend_error_string = AudioBackend::get_error_string((AudioBackend::ErrorCode) error_code); return -1; } @@ -880,6 +894,10 @@ AudioEngine::start (bool for_latency) } + /* XXX MIDI ports may not actually be available here yet .. */ + + PortManager::fill_midi_port_info (); + if (!for_latency) { Running(); /* EMIT SIGNAL */ } @@ -906,7 +924,9 @@ AudioEngine::stop (bool for_latency) stop_engine = false; } else { if (_backend->stop ()) { - pl.release (); + if (pl.locked ()) { + pl.release (); + } return -1; } } @@ -1467,3 +1487,18 @@ AudioEngine::set_latency_input_port (const string& name) { _latency_input_name = name; } + +void +AudioEngine::add_pending_port_deletion (Port* p) +{ + if (_session) { + DEBUG_TRACE (DEBUG::Ports, string_compose ("adding %1 to pending port deletion list\n", p->name())); + if (_port_deletions_pending.write (&p, 1) != 1) { + error << string_compose (_("programming error: port %1 could not be placed on the pending deletion queue\n"), p->name()) << endmsg; + } + _session->auto_connect_thread_wakeup (); + } else { + DEBUG_TRACE (DEBUG::Ports, string_compose ("Directly delete port %1\n", p->name())); + delete p; + } +}