diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 8f47215c8e..8af1c6a601 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -87,15 +87,20 @@ Editor::external_audio_dialog () sfbrowser->show_all (); + again: int response = sfbrowser->run (); - sfbrowser->hide (); - switch (response) { + case RESPONSE_APPLY: + // leave the dialog open + break; + case RESPONSE_OK: + sfbrowser->hide (); break; default: // cancel from the browser - we are done + sfbrowser->hide (); return; } @@ -128,6 +133,10 @@ Editor::external_audio_dialog () } else { do_embed (paths, chns, mode, where); } + + if (response == RESPONSE_APPLY) { + goto again; + } } boost::shared_ptr diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc index 46cd2ed9b4..e239f432d5 100644 --- a/gtk2_ardour/sfdb_ui.cc +++ b/gtk2_ardour/sfdb_ui.cc @@ -396,6 +396,7 @@ SoundFileBrowser::SoundFileBrowser (Gtk::Window& parent, string title, ARDOUR::S found_entry.signal_activate().connect(mem_fun(*this, &SoundFileBrowser::found_search_clicked)); add_button (Stock::CANCEL, RESPONSE_CANCEL); + add_button (Stock::APPLY, RESPONSE_APPLY); add_button (Stock::OK, RESPONSE_OK); } diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 0b423a7e28..d13c4e9251 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -121,18 +121,18 @@ class AudioEngine : public sigc::trackable const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags); - uint32_t n_physical_outputs () const; - uint32_t n_physical_inputs () const; + uint32_t n_physical_audio_outputs () const; + uint32_t n_physical_audio_inputs () const; - void get_physical_outputs (std::vector&); - void get_physical_inputs (std::vector&); + void get_physical_audio_outputs (std::vector&); + void get_physical_audio_inputs (std::vector&); - std::string get_nth_physical_output (uint32_t n) { - return get_nth_physical (n, JackPortIsInput); + std::string get_nth_physical_audio_output (uint32_t n) { + return get_nth_physical_audio (n, JackPortIsInput); } - std::string get_nth_physical_input (uint32_t n) { - return get_nth_physical (n, JackPortIsOutput); + std::string get_nth_physical_audio_input (uint32_t n) { + return get_nth_physical_audio (n, JackPortIsOutput); } nframes_t get_port_total_latency (const Port&); @@ -225,7 +225,7 @@ class AudioEngine : public sigc::trackable PortConnections port_connections; void remove_connections_for (Port*); - std::string get_nth_physical (uint32_t which, int flags); + std::string get_nth_physical_audio (uint32_t which, int flags); static int _xrun_callback (void *arg); static int _graph_order_callback (void *arg); diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 2dde901708..3f587ec2da 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1695,8 +1695,8 @@ class Session : public PBD::StatefulDestructible based on max (requested,available) */ - uint32_t n_physical_outputs; - uint32_t n_physical_inputs; + uint32_t n_physical_audio_outputs; + uint32_t n_physical_audio_inputs; int find_all_sources (std::string path, std::set& result); int find_all_sources_across_snapshots (std::set& result, bool exclude_this_snapshot); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 7a4f1e1cbf..010e8f6120 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -769,7 +769,7 @@ AudioEngine::halted (void *arg) } uint32_t -AudioEngine::n_physical_outputs () const +AudioEngine::n_physical_audio_outputs () const { const char ** ports; uint32_t i = 0; @@ -778,7 +778,7 @@ AudioEngine::n_physical_outputs () const return 0; } - if ((ports = jack_get_ports (_jack, NULL, NULL, JackPortIsPhysical|JackPortIsInput)) == 0) { + if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsInput)) == 0) { return 0; } @@ -790,7 +790,7 @@ AudioEngine::n_physical_outputs () const } uint32_t -AudioEngine::n_physical_inputs () const +AudioEngine::n_physical_audio_inputs () const { const char ** ports; uint32_t i = 0; @@ -799,7 +799,7 @@ AudioEngine::n_physical_inputs () const return 0; } - if ((ports = jack_get_ports (_jack, NULL, NULL, JackPortIsPhysical|JackPortIsOutput)) == 0) { + if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsOutput)) == 0) { return 0; } @@ -811,7 +811,7 @@ AudioEngine::n_physical_inputs () const } void -AudioEngine::get_physical_inputs (vector& ins) +AudioEngine::get_physical_audio_inputs (vector& ins) { const char ** ports; uint32_t i = 0; @@ -820,7 +820,7 @@ AudioEngine::get_physical_inputs (vector& ins) return; } - if ((ports = jack_get_ports (_jack, NULL, NULL, JackPortIsPhysical|JackPortIsOutput)) == 0) { + if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsOutput)) == 0) { return; } @@ -833,7 +833,7 @@ AudioEngine::get_physical_inputs (vector& ins) } void -AudioEngine::get_physical_outputs (vector& outs) +AudioEngine::get_physical_audio_outputs (vector& outs) { const char ** ports; uint32_t i = 0; @@ -842,7 +842,7 @@ AudioEngine::get_physical_outputs (vector& outs) return; } - if ((ports = jack_get_ports (_jack, NULL, NULL, JackPortIsPhysical|JackPortIsInput)) == 0) { + if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsInput)) == 0) { return; } @@ -855,7 +855,7 @@ AudioEngine::get_physical_outputs (vector& outs) } string -AudioEngine::get_nth_physical (uint32_t n, int flag) +AudioEngine::get_nth_physical_audio (uint32_t n, int flag) { const char ** ports; uint32_t i; @@ -870,7 +870,7 @@ AudioEngine::get_nth_physical (uint32_t n, int flag) } } - ports = jack_get_ports (_jack, NULL, NULL, JackPortIsPhysical|flag); + ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|flag); if (ports == 0) { return ""; diff --git a/libs/ardour/auditioner.cc b/libs/ardour/auditioner.cc index 9303b3b318..f30bea2f40 100644 --- a/libs/ardour/auditioner.cc +++ b/libs/ardour/auditioner.cc @@ -45,11 +45,11 @@ Auditioner::Auditioner (Session& s) string right = Config->get_auditioner_output_right(); if (left == "default") { - left = _session.engine().get_nth_physical_output (0); + left = _session.engine().get_nth_physical_audio_output (0); } if (right == "default") { - right = _session.engine().get_nth_physical_output (1); + right = _session.engine().get_nth_physical_audio_output (1); } if ((left.length() == 0) && (right.length() == 0)) { @@ -195,7 +195,7 @@ Auditioner::output_changed (IOChange change, void* src) const char ** connections; connections = output (0)->get_connections (); if (connections) { - phys = _session.engine().get_nth_physical_output (0); + phys = _session.engine().get_nth_physical_audio_output (0); if (phys != connections[0]) { Config->set_auditioner_output_left (connections[0]); } else { @@ -208,7 +208,7 @@ Auditioner::output_changed (IOChange change, void* src) connections = output (1)->get_connections (); if (connections) { - phys = _session.engine().get_nth_physical_output (1); + phys = _session.engine().get_nth_physical_audio_output (1); if (phys != connections[0]) { Config->set_auditioner_output_right (connections[0]); } else { diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 3b54e324d3..7399ef19ed 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -282,8 +282,8 @@ Session::Session (AudioEngine &eng, cerr << "Loading session " << fullpath << " using snapshot " << snapshot_name << " (1)" << endl; - n_physical_outputs = _engine.n_physical_outputs(); - n_physical_inputs = _engine.n_physical_inputs(); + n_physical_audio_outputs = _engine.n_physical_audio_outputs(); + n_physical_audio_inputs = _engine.n_physical_audio_inputs(); first_stage_init (fullpath, snapshot_name); @@ -344,15 +344,15 @@ Session::Session (AudioEngine &eng, cerr << "Loading session " << fullpath << " using snapshot " << snapshot_name << " (2)" << endl; - n_physical_outputs = _engine.n_physical_outputs(); - n_physical_inputs = _engine.n_physical_inputs(); + n_physical_audio_outputs = _engine.n_physical_audio_outputs(); + n_physical_audio_inputs = _engine.n_physical_audio_inputs(); - if (n_physical_inputs) { - n_physical_inputs = max (requested_physical_in, n_physical_inputs); + if (n_physical_audio_inputs) { + n_physical_audio_inputs = max (requested_physical_in, n_physical_audio_inputs); } - if (n_physical_outputs) { - n_physical_outputs = max (requested_physical_out, n_physical_outputs); + if (n_physical_audio_outputs) { + n_physical_audio_outputs = max (requested_physical_out, n_physical_audio_outputs); } first_stage_init (fullpath, snapshot_name); @@ -707,7 +707,7 @@ Session::when_engine_running () /* default state for Click */ - first_physical_output = _engine.get_nth_physical_output (0); + first_physical_output = _engine.get_nth_physical_audio_output (0); if (first_physical_output.length()) { if (_click_io->add_output_port (first_physical_output, this)) { @@ -735,33 +735,33 @@ Session::when_engine_running () /* ONE: MONO */ - for (uint32_t np = 0; np < n_physical_outputs; ++np) { + for (uint32_t np = 0; np < n_physical_audio_outputs; ++np) { char buf[32]; snprintf (buf, sizeof (buf), _("out %" PRIu32), np+1); Connection* c = new OutputConnection (buf, true); c->add_port (); - c->add_connection (0, _engine.get_nth_physical_output (np)); + c->add_connection (0, _engine.get_nth_physical_audio_output (np)); add_connection (c); } - for (uint32_t np = 0; np < n_physical_inputs; ++np) { + for (uint32_t np = 0; np < n_physical_audio_inputs; ++np) { char buf[32]; snprintf (buf, sizeof (buf), _("in %" PRIu32), np+1); Connection* c = new InputConnection (buf, true); c->add_port (); - c->add_connection (0, _engine.get_nth_physical_input (np)); + c->add_connection (0, _engine.get_nth_physical_audio_input (np)); add_connection (c); } /* TWO: STEREO */ - for (uint32_t np = 0; np < n_physical_outputs; np +=2) { + for (uint32_t np = 0; np < n_physical_audio_outputs; np +=2) { char buf[32]; snprintf (buf, sizeof (buf), _("out %" PRIu32 "+%" PRIu32), np+1, np+2); @@ -769,13 +769,13 @@ Session::when_engine_running () c->add_port (); c->add_port (); - c->add_connection (0, _engine.get_nth_physical_output (np)); - c->add_connection (1, _engine.get_nth_physical_output (np+1)); + c->add_connection (0, _engine.get_nth_physical_audio_output (np)); + c->add_connection (1, _engine.get_nth_physical_audio_output (np+1)); add_connection (c); } - for (uint32_t np = 0; np < n_physical_inputs; np +=2) { + for (uint32_t np = 0; np < n_physical_audio_inputs; np +=2) { char buf[32]; snprintf (buf, sizeof (buf), _("in %" PRIu32 "+%" PRIu32), np+1, np+2); @@ -783,8 +783,8 @@ Session::when_engine_running () c->add_port (); c->add_port (); - c->add_connection (0, _engine.get_nth_physical_input (np)); - c->add_connection (1, _engine.get_nth_physical_input (np+1)); + c->add_connection (0, _engine.get_nth_physical_audio_input (np)); + c->add_connection (1, _engine.get_nth_physical_audio_input (np+1)); add_connection (c); } @@ -817,7 +817,7 @@ Session::when_engine_running () } n = 0; while ((int) _master_out->n_outputs() < _master_out->output_maximum()) { - if (_master_out->add_output_port (_engine.get_nth_physical_output (n), this)) { + if (_master_out->add_output_port (_engine.get_nth_physical_audio_output (n), this)) { error << _("cannot setup master outputs") << endmsg; break; @@ -926,7 +926,7 @@ Session::hookup_io () } n = 0; while ((int) _control_out->n_outputs() < _control_out->output_maximum()) { - if (_control_out->add_output_port (_engine.get_nth_physical_output (n), this)) { + if (_control_out->add_output_port (_engine.get_nth_physical_audio_output (n), this)) { error << _("cannot set up master outputs") << endmsg; break; @@ -1689,8 +1689,8 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod uint32_t nphysical_in; uint32_t nphysical_out; - _engine.get_physical_outputs (physoutputs); - _engine.get_physical_inputs (physinputs); + _engine.get_physical_audio_outputs (physoutputs); + _engine.get_physical_audio_inputs (physinputs); control_id = ntracks() + nbusses() + 1; while (how_many) { @@ -1714,13 +1714,13 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod } while (track_id < (UINT_MAX-1)); if (Config->get_input_auto_connect() & AutoConnectPhysical) { - nphysical_in = min (n_physical_inputs, (uint32_t) physinputs.size()); + nphysical_in = min (n_physical_audio_inputs, (uint32_t) physinputs.size()); } else { nphysical_in = 0; } if (Config->get_output_auto_connect() & AutoConnectPhysical) { - nphysical_out = min (n_physical_outputs, (uint32_t) physinputs.size()); + nphysical_out = min (n_physical_audio_outputs, (uint32_t) physinputs.size()); } else { nphysical_out = 0; } @@ -1876,8 +1876,8 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ vector physinputs; vector physoutputs; - _engine.get_physical_outputs (physoutputs); - _engine.get_physical_inputs (physinputs); + _engine.get_physical_audio_outputs (physoutputs); + _engine.get_physical_audio_inputs (physinputs); control_id = ntracks() + nbusses() + 1; while (how_many) { @@ -1903,12 +1903,12 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ goto failure; } - for (uint32_t x = 0; n_physical_inputs && x < bus->n_inputs(); ++x) { + for (uint32_t x = 0; n_physical_audio_inputs && x < bus->n_inputs(); ++x) { port = ""; if (Config->get_input_auto_connect() & AutoConnectPhysical) { - port = physinputs[((n+x)%n_physical_inputs)]; + port = physinputs[((n+x)%n_physical_audio_inputs)]; } if (port.length() && bus->connect_input (bus->input (x), port, this)) { @@ -1916,12 +1916,12 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ } } - for (uint32_t x = 0; n_physical_outputs && x < bus->n_outputs(); ++x) { + for (uint32_t x = 0; n_physical_audio_outputs && x < bus->n_outputs(); ++x) { port = ""; if (Config->get_output_auto_connect() & AutoConnectPhysical) { - port = physoutputs[((n+x)%n_physical_outputs)]; + port = physoutputs[((n+x)%n_physical_audio_outputs)]; } else if (Config->get_output_auto_connect() & AutoConnectMaster) { if (_master_out) { port = _master_out->input (x%_master_out->n_inputs())->name();