]> git.sesse.net Git - nageru/blobdiff - input_mapping_dialog.cpp
If a dead device comes back, put it into the right slot.
[nageru] / input_mapping_dialog.cpp
index 9c8180cce6321750894c1b4547b6c6f991cbca37..08d68dcbc05ed783f1dacb2bf3aa30c2a8ab3790 100644 (file)
@@ -9,9 +9,9 @@ using namespace std::placeholders;
 
 InputMappingDialog::InputMappingDialog()
        : ui(new Ui::InputMappingDialog),
-         mapping(global_mixer->get_audio_mixer()->get_input_mapping()),
+         mapping(global_audio_mixer->get_input_mapping()),
          old_mapping(mapping),
-         devices(global_mixer->get_audio_mixer()->get_devices())
+         devices(global_audio_mixer->get_devices())
 {
        ui->setupUi(this);
        ui->table->setSelectionBehavior(QAbstractItemView::SelectRows);
@@ -54,9 +54,20 @@ void InputMappingDialog::fill_row_from_bus(unsigned row, const InputMapping::Bus
        unsigned current_index = 0;
        card_combo->addItem(QString("(none)   "));
        for (const auto &spec_and_info : devices) {
+               QString label(QString::fromStdString(spec_and_info.second.name));
+               if (spec_and_info.first.type == InputSourceType::ALSA_INPUT) {
+                       ALSAPool::Device::State state = global_audio_mixer->get_alsa_card_state(spec_and_info.first.index);
+                       if (state == ALSAPool::Device::State::EMPTY) {
+                               continue;
+                       } else if (state == ALSAPool::Device::State::STARTING) {
+                               label += " (busy)";
+                       } else if (state == ALSAPool::Device::State::DEAD) {
+                               label += " (dead)";
+                       }
+               }
                ++current_index;
                card_combo->addItem(
-                       QString::fromStdString(spec_and_info.second.name + "   "),
+                       label + "   ",
                        qulonglong(DeviceSpec_to_key(spec_and_info.first)));
                if (bus.device == spec_and_info.first) {
                        card_combo->setCurrentIndex(current_index);
@@ -97,13 +108,13 @@ void InputMappingDialog::setup_channel_choices_from_bus(unsigned row, const Inpu
 
 void InputMappingDialog::ok_clicked()
 {
-       global_mixer->get_audio_mixer()->set_input_mapping(mapping);
+       global_audio_mixer->set_input_mapping(mapping);
        accept();
 }
 
 void InputMappingDialog::cancel_clicked()
 {
-       global_mixer->get_audio_mixer()->set_input_mapping(old_mapping);
+       global_audio_mixer->set_input_mapping(old_mapping);
        reject();
 }