Update MPD frontend to use playback volume API.

This commit is contained in:
Thomas Adamcik 2012-09-04 00:52:12 +02:00
parent 14eeb20226
commit 4ffd06736e
7 changed files with 11 additions and 33 deletions

View File

@ -15,7 +15,6 @@ from mopidy.frontends.mpd.protocol import (audio_output, command_list,
connection, current_playlist, empty, music_db, playback, reflection, connection, current_playlist, empty, music_db, playback, reflection,
status, stickers, stored_playlists) status, stickers, stored_playlists)
# pylint: enable = W0611 # pylint: enable = W0611
from mopidy.mixers.base import BaseMixer
from mopidy.utils import flatten from mopidy.utils import flatten
logger = logging.getLogger('mopidy.frontends.mpd.dispatcher') logger = logging.getLogger('mopidy.frontends.mpd.dispatcher')
@ -235,7 +234,6 @@ class MpdContext(object):
self.events = set() self.events = set()
self.subscriptions = set() self.subscriptions = set()
self._backend = None self._backend = None
self._mixer = None
@property @property
def backend(self): def backend(self):
@ -248,14 +246,3 @@ class MpdContext(object):
'Expected exactly one running backend.' 'Expected exactly one running backend.'
self._backend = backend_refs[0].proxy() self._backend = backend_refs[0].proxy()
return self._backend return self._backend
@property
def mixer(self):
"""
The mixer. An instance of :class:`mopidy.mixers.base.BaseMixer`.
"""
if self._mixer is None:
mixer_refs = ActorRegistry.get_by_class(BaseMixer)
assert len(mixer_refs) == 1, 'Expected exactly one running mixer.'
self._mixer = mixer_refs[0].proxy()
return self._mixer

View File

@ -353,7 +353,7 @@ def setvol(context, volume):
volume = 0 volume = 0
if volume > 100: if volume > 100:
volume = 100 volume = 100
context.mixer.volume = volume context.backend.playback.volume = volume
@handle_request(r'^single (?P<state>[01])$') @handle_request(r'^single (?P<state>[01])$')
@handle_request(r'^single "(?P<state>[01])"$') @handle_request(r'^single "(?P<state>[01])"$')

View File

@ -168,7 +168,7 @@ def status(context):
futures = { futures = {
'current_playlist.length': context.backend.current_playlist.length, 'current_playlist.length': context.backend.current_playlist.length,
'current_playlist.version': context.backend.current_playlist.version, 'current_playlist.version': context.backend.current_playlist.version,
'mixer.volume': context.mixer.volume, 'playback.volume': context.backend.playback.volume,
'playback.consume': context.backend.playback.consume, 'playback.consume': context.backend.playback.consume,
'playback.random': context.backend.playback.random, 'playback.random': context.backend.playback.random,
'playback.repeat': context.backend.playback.repeat, 'playback.repeat': context.backend.playback.repeat,
@ -263,7 +263,7 @@ def _status_time_total(futures):
return current_cp_track.track.length return current_cp_track.track.length
def _status_volume(futures): def _status_volume(futures):
volume = futures['mixer.volume'].get() volume = futures['playback.volume'].get()
if volume is not None: if volume is not None:
return volume return volume
else: else:

View File

@ -2,7 +2,6 @@ from mopidy.backends.dummy import DummyBackend
from mopidy.frontends.mpd.dispatcher import MpdDispatcher from mopidy.frontends.mpd.dispatcher import MpdDispatcher
from mopidy.frontends.mpd.exceptions import MpdAckError from mopidy.frontends.mpd.exceptions import MpdAckError
from mopidy.frontends.mpd.protocol import request_handlers, handle_request from mopidy.frontends.mpd.protocol import request_handlers, handle_request
from mopidy.mixers.dummy import DummyMixer
from tests import unittest from tests import unittest
@ -10,12 +9,10 @@ from tests import unittest
class MpdDispatcherTest(unittest.TestCase): class MpdDispatcherTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.backend = DummyBackend.start().proxy() self.backend = DummyBackend.start().proxy()
self.mixer = DummyMixer.start().proxy()
self.dispatcher = MpdDispatcher() self.dispatcher = MpdDispatcher()
def tearDown(self): def tearDown(self):
self.backend.stop().get() self.backend.stop().get()
self.mixer.stop().get()
def test_register_same_pattern_twice_fails(self): def test_register_same_pattern_twice_fails(self):
func = lambda: None func = lambda: None

View File

@ -3,7 +3,6 @@ import mock
from mopidy import settings from mopidy import settings
from mopidy.backends import dummy as backend from mopidy.backends import dummy as backend
from mopidy.frontends import mpd from mopidy.frontends import mpd
from mopidy.mixers import dummy as mixer
from tests import unittest from tests import unittest
@ -23,7 +22,6 @@ class MockConnection(mock.Mock):
class BaseTestCase(unittest.TestCase): class BaseTestCase(unittest.TestCase):
def setUp(self): def setUp(self):
self.backend = backend.DummyBackend.start().proxy() self.backend = backend.DummyBackend.start().proxy()
self.mixer = mixer.DummyMixer.start().proxy()
self.connection = MockConnection() self.connection = MockConnection()
self.session = mpd.MpdSession(self.connection) self.session = mpd.MpdSession(self.connection)
@ -32,7 +30,6 @@ class BaseTestCase(unittest.TestCase):
def tearDown(self): def tearDown(self):
self.backend.stop().get() self.backend.stop().get()
self.mixer.stop().get()
settings.runtime.clear() settings.runtime.clear()
def sendRequest(self, request): def sendRequest(self, request):

View File

@ -76,37 +76,37 @@ class PlaybackOptionsHandlerTest(protocol.BaseTestCase):
def test_setvol_below_min(self): def test_setvol_below_min(self):
self.sendRequest(u'setvol "-10"') self.sendRequest(u'setvol "-10"')
self.assertEqual(0, self.mixer.volume.get()) self.assertEqual(0, self.backend.playback.volume.get())
self.assertInResponse(u'OK') self.assertInResponse(u'OK')
def test_setvol_min(self): def test_setvol_min(self):
self.sendRequest(u'setvol "0"') self.sendRequest(u'setvol "0"')
self.assertEqual(0, self.mixer.volume.get()) self.assertEqual(0, self.backend.playback.volume.get())
self.assertInResponse(u'OK') self.assertInResponse(u'OK')
def test_setvol_middle(self): def test_setvol_middle(self):
self.sendRequest(u'setvol "50"') self.sendRequest(u'setvol "50"')
self.assertEqual(50, self.mixer.volume.get()) self.assertEqual(50, self.backend.playback.volume.get())
self.assertInResponse(u'OK') self.assertInResponse(u'OK')
def test_setvol_max(self): def test_setvol_max(self):
self.sendRequest(u'setvol "100"') self.sendRequest(u'setvol "100"')
self.assertEqual(100, self.mixer.volume.get()) self.assertEqual(100, self.backend.playback.volume.get())
self.assertInResponse(u'OK') self.assertInResponse(u'OK')
def test_setvol_above_max(self): def test_setvol_above_max(self):
self.sendRequest(u'setvol "110"') self.sendRequest(u'setvol "110"')
self.assertEqual(100, self.mixer.volume.get()) self.assertEqual(100, self.backend.playback.volume.get())
self.assertInResponse(u'OK') self.assertInResponse(u'OK')
def test_setvol_plus_is_ignored(self): def test_setvol_plus_is_ignored(self):
self.sendRequest(u'setvol "+10"') self.sendRequest(u'setvol "+10"')
self.assertEqual(10, self.mixer.volume.get()) self.assertEqual(10, self.backend.playback.volume.get())
self.assertInResponse(u'OK') self.assertInResponse(u'OK')
def test_setvol_without_quotes(self): def test_setvol_without_quotes(self):
self.sendRequest(u'setvol 50') self.sendRequest(u'setvol 50')
self.assertEqual(50, self.mixer.volume.get()) self.assertEqual(50, self.backend.playback.volume.get())
self.assertInResponse(u'OK') self.assertInResponse(u'OK')
def test_single_off(self): def test_single_off(self):

View File

@ -1,7 +1,6 @@
from mopidy.backends import dummy as backend from mopidy.backends import dummy as backend
from mopidy.frontends.mpd import dispatcher from mopidy.frontends.mpd import dispatcher
from mopidy.frontends.mpd.protocol import status from mopidy.frontends.mpd.protocol import status
from mopidy.mixers import dummy as mixer
from mopidy.models import Track from mopidy.models import Track
from tests import unittest from tests import unittest
@ -17,13 +16,11 @@ STOPPED = backend.PlaybackController.STOPPED
class StatusHandlerTest(unittest.TestCase): class StatusHandlerTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.backend = backend.DummyBackend.start().proxy() self.backend = backend.DummyBackend.start().proxy()
self.mixer = mixer.DummyMixer.start().proxy()
self.dispatcher = dispatcher.MpdDispatcher() self.dispatcher = dispatcher.MpdDispatcher()
self.context = self.dispatcher.context self.context = self.dispatcher.context
def tearDown(self): def tearDown(self):
self.backend.stop().get() self.backend.stop().get()
self.mixer.stop().get()
def test_stats_method(self): def test_stats_method(self):
result = status.stats(self.context) result = status.stats(self.context)
@ -48,7 +45,7 @@ class StatusHandlerTest(unittest.TestCase):
self.assertEqual(int(result['volume']), -1) self.assertEqual(int(result['volume']), -1)
def test_status_method_contains_volume(self): def test_status_method_contains_volume(self):
self.mixer.volume = 17 self.backend.playback.volume = 17
result = dict(status.status(self.context)) result = dict(status.status(self.context))
self.assert_('volume' in result) self.assert_('volume' in result)
self.assertEqual(int(result['volume']), 17) self.assertEqual(int(result['volume']), 17)