Example #1
0
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));
}
Example #2
0
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;
}