static void add_or_update_card(MSSndCardManager *m, const char *name, int indev, int outdev, unsigned int capability){ MSSndCard *card; const MSList *elem=ms_snd_card_manager_get_list(m); for(;elem!=NULL;elem=elem->next){ card=(MSSndCard*)elem->data; if (strcmp(card->name,name)==0){ /*update already entered card */ WinSndCard *d=(WinSndCard*)card->data; card->capabilities|=capability; if (indev!=-1) d->in_devid=indev; if (outdev!=-1) d->out_devid=outdev; return; } } /* add this new card:*/ ms_snd_card_manager_add_card(m,winsndcard_new(name,indev,outdev,capability)); }
bool myAudioStream::init_card() { QSettings settings("Shadowrun Comlink","MetaLink"); QString card_id; if (settings.contains("Audio playback card")) { card_id = settings.value("Audio playback card").toString(); } else { const MSList *list = ms_snd_card_manager_get_list(ms_snd_card_manager_get()); QStringList cards; while (list != NULL) { cards << ms_snd_card_get_string_id((MSSndCard*)list->data); list = list->next; } if (cards.isEmpty()) { QMessageBox::information(0, QObject::tr("No cards detected!"), QObject::tr("No cards detected!")); return false; } bool ok; card_id = QInputDialog::getItem(0, QObject::tr("Select playback card"), QObject::tr("Select playback card"), cards, 0, false, &ok); if (!ok) { return false; } settings.setValue("Audio playback card",card_id); } playcard = ms_snd_card_manager_get_card(ms_snd_card_manager_get(), card_id.toStdString().c_str()); if (playcard==NULL){ ms_error("No playback card found."); return false; } else { ms_message("Got card: %s", ms_snd_card_get_string_id(playcard)); } return true; }