From 2c4ba8b6a12ecabc266a514ac3ad259e32b541c6 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 12 Jul 2014 02:49:33 +0200 Subject: [PATCH] mixer: Add trigger_events_for_any_changes() Lifted from Mopidy-ALSAMixer, so SoftwareMixer can use it too. --- mopidy/mixer.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/mopidy/mixer.py b/mopidy/mixer.py index eaea290d..6cb5f299 100644 --- a/mopidy/mixer.py +++ b/mopidy/mixer.py @@ -106,6 +106,29 @@ class Mixer(object): logger.debug('Mixer event: mute_changed(muted=%s)', muted) MixerListener.send('mute_changed', muted=muted) + def trigger_events_for_any_changes(self): + """ + Checks current volume and mute, compares with old values, and emits + events if anything has changed. + + This method should be called by subclasses when they know something has + changed, and events needs to be sent. + """ + + if not hasattr(self, '_last_volume'): + self._last_volume = None + if not hasattr(self, '_last_muted'): + self._last_muted = None + + old_volume, self._last_volume = self._last_volume, self.get_volume() + old_muted, self._last_muted = self._last_muted, self.get_mute() + + if old_volume != self._last_volume: + self.trigger_volume_changed(self._last_volume) + + if old_muted != self._last_muted: + self.trigger_mute_changed(self._last_muted) + class MixerListener(listener.Listener): """