bool select_card_by_name(const char *device_name) { int err; bool opened; char *msg; close_hctl(); unplugged = FALSE; opened = FALSE; if (device_name) { err = snd_mixer_attach(mixer, device_name); if (err >= 0) opened = TRUE; else { msg = casprintf(_("Cannot open mixer device '%s'."), device_name); show_alsa_error(msg, err); free(msg); } } if (opened) { mixer_device_name = cstrdup(device_name); err = snd_mixer_load(mixer); if (err < 0) fatal_alsa_error(_("cannot load mixer controls"), err); } display_card_info(); set_view_mode(view_mode); return opened; }
AlsaMixer::AlsaMixer(const std::string& cardname) : IMixer() { int err; this->volume = -1; this->muted_volume = 100; this->set_card_name(cardname); if (0 > (err = this->load_handle())) { this->clean_up(); fatal_alsa_error("unable to open mixer", err); } }
void create_mixer_object(struct snd_mixer_selem_regopt *selem_regopt) { int err; err = snd_mixer_open(&mixer, 0); if (err < 0) fatal_alsa_error(_("cannot open mixer"), err); mixer_device_name = cstrdup(selem_regopt->device); err = snd_mixer_selem_register(mixer, selem_regopt, NULL); if (err < 0) fatal_alsa_error(_("cannot open mixer"), err); snd_mixer_set_callback(mixer, mixer_callback); err = snd_mixer_load(mixer); if (err < 0) fatal_alsa_error(_("cannot load mixer controls"), err); err = snd_mixer_selem_id_malloc(¤t_selem_id); if (err < 0) fatal_error("out of memory"); }