main: Stop only the mixer actor that we now is running
This commit is contained in:
parent
4807bd275a
commit
64ecd7643a
@ -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')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user