From 3d30aba0e97915cd57b3ccaaf7a2d6b7b4298f86 Mon Sep 17 00:00:00 2001 From: Michael Carlberg Date: Mon, 17 Oct 2016 03:43:56 +0200 Subject: [PATCH] fix(volume): Make sure handled event get broadcasted --- include/modules/volume.hpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/include/modules/volume.hpp b/include/modules/volume.hpp index 2b5c3302..2f6bf97e 100644 --- a/include/modules/volume.hpp +++ b/include/modules/volume.hpp @@ -50,16 +50,12 @@ namespace modules { // Setup mixers {{{ auto create_mixer = [this](string mixer_name) { - mixer_t mixer; - try { - mixer.reset(new mixer_t::element_type{mixer_name}); + return mixer_t{new mixer_t::element_type{mixer_name}}; } catch (const alsa_mixer_error& e) { m_log.err("%s: Failed to open '%s' mixer => %s", name(), mixer_name, e.what()); - mixer.reset(); + return mixer_t{}; } - - return mixer; }; m_mixers[mixer::MASTER] = create_mixer(master_mixer); @@ -77,7 +73,7 @@ namespace modules { if (m_mixers[mixer::HEADPHONE] && m_headphoneid > -1) { try { - m_controls[control::HEADPHONE] = make_shared(m_headphoneid); + m_controls[control::HEADPHONE] = control_t{new control_t::element_type{m_headphoneid}}; } catch (const alsa_ctl_interface_error& e) { m_log.err("%s: Failed to open headphone control interface => %s", name(), e.what()); m_controls[control::HEADPHONE].reset(); @@ -129,7 +125,7 @@ namespace modules { // Poll for mixer and control events {{{ try { - bool has_event = m_updated; + bool has_event = false; if (m_mixers[mixer::MASTER]) has_event |= m_mixers[mixer::MASTER]->wait(25); @@ -140,8 +136,6 @@ namespace modules { if (m_controls[control::HEADPHONE]) has_event |= m_controls[control::HEADPHONE]->wait(25); - m_updated = false; - return has_event; } catch (const alsa_exception& e) { m_log.err("%s: %s", name(), e.what()); @@ -266,7 +260,11 @@ namespace modules { m_log.err("%s: Failed to handle command (%s)", name(), err.what()); } - m_updated = true; + // Update the mute flag since we won't poll the new state when + // sending the broadcast related to this event + m_muted = !m_muted; + + event_handled(); return true; } @@ -306,7 +304,6 @@ namespace modules { stateflag m_muted{false}; stateflag m_headphones{false}; - stateflag m_updated{false}; }; }