From 64ecd7643a4520e5fe0d7dd885c44904a746779f Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Wed, 9 Jul 2014 21:16:09 +0200 Subject: [PATCH] main: Stop only the mixer actor that we now is running --- mopidy/commands.py | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/mopidy/commands.py b/mopidy/commands.py index 226f1227..b9e07677 100644 --- a/mopidy/commands.py +++ b/mopidy/commands.py @@ -261,13 +261,13 @@ class RootCommand(Command): def run(self, args, config): loop = gobject.MainLoop() - mixer_classes = args.registry['mixer'] + mixer_class = self.get_mixer_class(config, args.registry['mixer']) backend_classes = args.registry['backend'] frontend_classes = args.registry['frontend'] try: audio = self.start_audio(config) - mixer = self.start_mixer(config, audio, mixer_classes) + mixer = self.start_mixer(config, mixer_class, audio) backends = self.start_backends(config, backend_classes, audio) core = self.start_core(mixer, backends) self.start_frontends(config, frontend_classes, core) @@ -279,11 +279,26 @@ class RootCommand(Command): loop.quit() self.stop_frontends(frontend_classes) self.stop_core() - self.stop_mixer(mixer_classes) + self.stop_mixer(mixer_class) self.stop_backends(backend_classes) self.stop_audio() process.stop_remaining_actors() + def get_mixer_class(self, config, mixer_classes): + logger.debug( + 'Available Mopidy mixers: %s', + ', '.join(m.__name__ for m in mixer_classes) or 'none') + + selected_mixers = [ + m for m in mixer_classes if m.name == config['audio']['mixer']] + if len(selected_mixers) != 1: + logger.error( + 'Did not find unique mixer "%s". Alternatives are: %s', + config['audio']['mixer'], + ', '.join([m.name for m in mixer_classes])) + process.exit_process() + return selected_mixers[0] + def start_audio(self, config): logger.info('Starting Mopidy audio') return Audio.start(config=config).proxy() @@ -300,21 +315,7 @@ class RootCommand(Command): return backends - def start_mixer(self, config, audio, mixer_classes): - logger.debug( - 'Available Mopidy mixers: %s', - ', '.join(m.__name__ for m in mixer_classes) or 'none') - - selected_mixers = [ - m for m in mixer_classes if m.name == config['audio']['mixer']] - if len(selected_mixers) != 1: - logger.error( - 'Did not find unique mixer "%s". Alternatives are: %s', - config['audio']['mixer'], - ', '.join([m.name for m in mixer_classes])) - process.exit_process() - mixer_class = selected_mixers[0] - + def start_mixer(self, config, mixer_class, audio): logger.info('Starting Mopidy mixer: %s', mixer_class.__name__) mixer = mixer_class.start(config=config, audio=audio).proxy() @@ -348,10 +349,9 @@ class RootCommand(Command): logger.info('Stopping Mopidy core') process.stop_actors_by_class(Core) - def stop_mixer(self, mixer_classes): + def stop_mixer(self, mixer_class): logger.info('Stopping Mopidy mixer') - for mixer_class in mixer_classes: - process.stop_actors_by_class(mixer_class) + process.stop_actors_by_class(mixer_class) def stop_backends(self, backend_classes): logger.info('Stopping Mopidy backends')