Release v1.0.2

This commit is contained in:
Stein Magnus Jodal 2015-04-27 00:16:45 +02:00
commit f6a86a0f5c
6 changed files with 30 additions and 11 deletions

View File

@ -5,6 +5,22 @@ Changelog
This changelog is used to track all major changes to Mopidy.
v1.0.2 (2015-04-27)
===================
Bug fix release.
- HTTP: Make event broadcasts work with Tornado 2.3 again. The threading fix
in v1.0.1 broke this.
- Audio: Fix for :issue:`1097` tuned down the buffer size in the queue. Turns
out this can cause distortions in certain cases. Give this an other go with
a more generous buffer size. (Fixes: :issue:`1147`, PR: :issue:`1152`)
- Audio: Make sure mute events get emitted by software mixer.
(Fixes: :issue:`1146`, PR: :issue:`1152`)
v1.0.1 (2015-04-23)
===================

View File

@ -30,4 +30,4 @@ except ImportError:
warnings.filterwarnings('ignore', 'could not open display')
__version__ = '1.0.1'
__version__ = '1.0.2'

View File

@ -164,7 +164,7 @@ class _Outputs(gst.Bin):
# All tee branches need a queue in front of them.
# But keep the queue short so the volume change isn't to slow:
queue = gst.element_factory_make('queue')
queue.set_property('max-size-buffers', 5)
queue.set_property('max-size-buffers', 15)
self.add(element)
self.add(queue)
queue.link(element)
@ -194,16 +194,14 @@ class SoftwareMixer(object):
def set_volume(self, volume):
self._element.set_property('volume', volume / 100.0)
self._mixer.trigger_volume_changed(volume)
self._mixer.trigger_volume_changed(self.get_volume())
def get_mute(self):
return self._element.get_property('mute')
def set_mute(self, mute):
result = self._element.set_property('mute', bool(mute))
if result:
self._mixer.trigger_mute_changed(bool(mute))
return result
self._element.set_property('mute', bool(mute))
self._mixer.trigger_mute_changed(self.get_mute())
class _Handler(object):

View File

@ -88,9 +88,13 @@ class WebSocketHandler(tornado.websocket.WebSocketHandler):
@classmethod
def broadcast(cls, msg):
if hasattr(tornado.ioloop.IOLoop, 'current'):
loop = tornado.ioloop.IOLoop.current()
else:
loop = tornado.ioloop.IOLoop.instance() # Fallback for 2.3
# This can be called from outside the Tornado ioloop, so we need to
# safely cross the thread boundary by adding a callback to the loop.
loop = tornado.ioloop.IOLoop.current()
for client in cls.clients:
# One callback per client to keep time we hold up the loop short
loop.add_callback(_send_broadcast, client, msg)

View File

@ -197,7 +197,7 @@ class IssueGH1120RegressionTest(protocol.BaseTestCase):
'dummy:/': [Ref.playlist(name='Top 100 tracks', uri='dummy:/1')],
}
self.backend.playlists.set_dummy_playlists([
Playlist(name='Top 100 tracks', uri='dummy:/1'),
Playlist(name='Top 100 tracks', uri='dummy:/1', last_modified=123),
])
response1 = self.send_request('lsinfo "/"')

View File

@ -56,5 +56,6 @@ class VersionTest(unittest.TestCase):
self.assertVersionLess('0.19.3', '0.19.4')
self.assertVersionLess('0.19.4', '0.19.5')
self.assertVersionLess('0.19.5', '1.0.0')
self.assertVersionLess('1.0.0', __version__)
self.assertVersionLess(__version__, '1.0.2')
self.assertVersionLess('1.0.0', '1.0.1')
self.assertVersionLess('1.0.1', __version__)
self.assertVersionLess(__version__, '1.0.3')