mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-11 09:06:33 +01:00
Reimplement method using code extracted from EngineDialog::backend_changed
EngineControl::set_driver_popdown_strings is now like the other set_*_popdown_strings methods in that it sets the driver strings and a default active entry and returns false if no drivers are available.
This commit is contained in:
parent
1bea87e10a
commit
dfa9a2326a
1 changed files with 24 additions and 31 deletions
|
|
@ -843,31 +843,8 @@ EngineControl::backend_changed ()
|
||||||
_midi_devices.clear();
|
_midi_devices.clear();
|
||||||
|
|
||||||
if (backend->requires_driver_selection()) {
|
if (backend->requires_driver_selection()) {
|
||||||
vector<string> drivers = backend->enumerate_drivers();
|
if (set_driver_popdown_strings ()) {
|
||||||
driver_combo.set_sensitive (true);
|
driver_combo.set_sensitive (true);
|
||||||
|
|
||||||
if (!drivers.empty()) {
|
|
||||||
{
|
|
||||||
string current_driver;
|
|
||||||
current_driver = backend->driver_name ();
|
|
||||||
|
|
||||||
DEBUG_ECONTROL (string_compose ("backend->driver_name: %1", current_driver));
|
|
||||||
|
|
||||||
// driver might not have been set yet
|
|
||||||
if (current_driver == "") {
|
|
||||||
current_driver = driver_combo.get_active_text ();
|
|
||||||
if (current_driver == "")
|
|
||||||
// driver has never been set, make sure it's not blank
|
|
||||||
current_driver = drivers.front ();
|
|
||||||
}
|
|
||||||
|
|
||||||
PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1);
|
|
||||||
set_popdown_strings (driver_combo, drivers);
|
|
||||||
DEBUG_ECONTROL (
|
|
||||||
string_compose ("driver_combo.set_active_text: %1", current_driver));
|
|
||||||
driver_combo.set_active_text (current_driver);
|
|
||||||
}
|
|
||||||
|
|
||||||
driver_changed ();
|
driver_changed ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -930,21 +907,37 @@ EngineControl::print_channel_count (Gtk::SpinButton* sb)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @return true if there are drivers available
|
||||||
bool
|
bool
|
||||||
EngineControl::set_driver_popdown_strings ()
|
EngineControl::set_driver_popdown_strings ()
|
||||||
{
|
{
|
||||||
DEBUG_ECONTROL ("set_driver_popdown_strings");
|
DEBUG_ECONTROL ("set_driver_popdown_strings");
|
||||||
string backend_name = backend_combo.get_active_text();
|
boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
|
||||||
boost::shared_ptr<ARDOUR::AudioBackend> backend;
|
vector<string> drivers = backend->enumerate_drivers();
|
||||||
|
|
||||||
if (!(backend = ARDOUR::AudioEngine::instance()->set_backend (backend_name, "ardour", ""))) {
|
if (drivers.empty()) {
|
||||||
/* eh? setting the backend failed... how ? */
|
// This is an error...?
|
||||||
/* A: stale config contains a backend that does not exist in current build */
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<string> drivers = backend->enumerate_drivers();
|
string current_driver;
|
||||||
|
current_driver = backend->driver_name ();
|
||||||
|
|
||||||
|
DEBUG_ECONTROL (string_compose ("backend->driver_name: %1", current_driver));
|
||||||
|
|
||||||
|
// driver might not have been set yet
|
||||||
|
if (current_driver == "") {
|
||||||
|
current_driver = driver_combo.get_active_text ();
|
||||||
|
if (current_driver == "")
|
||||||
|
// driver has never been set, make sure it's not blank
|
||||||
|
current_driver = drivers.front ();
|
||||||
|
}
|
||||||
|
|
||||||
|
PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1);
|
||||||
set_popdown_strings (driver_combo, drivers);
|
set_popdown_strings (driver_combo, drivers);
|
||||||
|
DEBUG_ECONTROL (
|
||||||
|
string_compose ("driver_combo.set_active_text: %1", current_driver));
|
||||||
|
driver_combo.set_active_text (current_driver);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue