diff --git a/mopidy/audio/actor.py b/mopidy/audio/actor.py index b88eafd8..ae6d280d 100644 --- a/mopidy/audio/actor.py +++ b/mopidy/audio/actor.py @@ -191,7 +191,7 @@ class Audio(pykka.ThreadingActor): self._connect(self._playbin, 'notify::mute', self._on_mixer_change) def _on_mixer_change(self, element, gparamspec): - self._mixer.trigger_events_for_any_changes() + self._mixer.trigger_events_for_changed_values() def _teardown_mixer(self): if self._config['audio']['mixer'] != 'software': diff --git a/mopidy/mixer.py b/mopidy/mixer.py index 7e9fc9ee..76c6e92a 100644 --- a/mopidy/mixer.py +++ b/mopidy/mixer.py @@ -106,29 +106,6 @@ class Mixer(object): logger.debug('Mixer event: mute_changed(mute=%s)', mute) MixerListener.send('mute_changed', mute=mute) - 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_mute'): - self.__last_mute = None - - old_volume, self.__last_volume = self.__last_volume, self.get_volume() - old_mute, self.__last_mute = self.__last_mute, self.get_mute() - - if old_volume != self.__last_volume: - self.trigger_volume_changed(self.__last_volume) - - if old_mute != self.__last_mute: - self.trigger_mute_changed(self.__last_mute) - class MixerListener(listener.Listener): """ diff --git a/mopidy/softwaremixer/mixer.py b/mopidy/softwaremixer/mixer.py index cf42fc26..abb5592c 100644 --- a/mopidy/softwaremixer/mixer.py +++ b/mopidy/softwaremixer/mixer.py @@ -42,3 +42,18 @@ class SoftwareMixer(pykka.ThreadingActor, mixer.Mixer): return False self.audio.set_mute(mute) return True + + def trigger_events_for_changed_values(self): + if not hasattr(self, '_last_volume'): + self._last_volume = None + if not hasattr(self, '_last_mute'): + self._last_mute = None + + old_volume, self._last_volume = self._last_volume, self.get_volume() + old_mute, self._last_mute = self._last_mute, self.get_mute() + + if old_volume != self._last_volume: + self.trigger_volume_changed(self._last_volume) + + if old_mute != self._last_mute: + self.trigger_mute_changed(self._last_mute)