From 22e255747a64236a73124543fae713ebdf4cbeec Mon Sep 17 00:00:00 2001 From: Alexander Polynomdivision Date: Sat, 14 Jan 2017 17:18:17 +0100 Subject: [PATCH] Update the mixer class to support setting the name of the soundcard we want to get the mixer of --- include/adapters/alsa/mixer.hpp | 4 +++- src/adapters/alsa/mixer.cpp | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/include/adapters/alsa/mixer.hpp b/include/adapters/alsa/mixer.hpp index 5bb256e9..24542848 100644 --- a/include/adapters/alsa/mixer.hpp +++ b/include/adapters/alsa/mixer.hpp @@ -18,13 +18,14 @@ POLYBAR_NS namespace alsa { class mixer { public: - explicit mixer(string&& mixer_selem_name); + explicit mixer(string&& mixer_selem_name, string&& sound_card_name); ~mixer(); mixer(const mixer& o) = delete; mixer& operator=(const mixer& o) = delete; const string& get_name(); + const string& get_sound_card(); bool wait(int timeout = -1); int process_events(); @@ -42,6 +43,7 @@ namespace alsa { snd_mixer_elem_t* m_elem{nullptr}; string m_name; + string s_name; }; } diff --git a/src/adapters/alsa/mixer.cpp b/src/adapters/alsa/mixer.cpp index aec3cd7a..217f333b 100644 --- a/src/adapters/alsa/mixer.cpp +++ b/src/adapters/alsa/mixer.cpp @@ -12,7 +12,7 @@ namespace alsa { /** * Construct mixer object */ - mixer::mixer(string&& mixer_selem_name) : m_name(forward(mixer_selem_name)) { + mixer::mixer(string&& mixer_selem_name, string&& soundcard_name) : m_name(forward(mixer_selem_name)), s_name(soundcard_name) { int err = 0; if ((err = snd_mixer_open(&m_mixer, 1)) == -1) { @@ -21,7 +21,7 @@ namespace alsa { snd_config_update_free_global(); - if ((err = snd_mixer_attach(m_mixer, ALSA_SOUNDCARD)) == -1) { + if ((err = snd_mixer_attach(m_mixer, s_name.c_str())) == -1) { throw_exception("Failed to attach hardware mixer control", err); } if ((err = snd_mixer_selem_register(m_mixer, nullptr, nullptr)) == -1) { @@ -57,6 +57,13 @@ namespace alsa { return m_name; } + /** + * Get the name of the soundcard that is associated with the mixer + */ + const string& mixer::get_sound_card() { + return s_name; + } + /** * Wait for events */