diff --git a/docs/changelog.rst b/docs/changelog.rst index f4b796d7..904e938c 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,6 +4,17 @@ Changelog This changelog is used to track all major changes to Mopidy. +v1.0.3 (unreleased) +=================== + +- HTTP: An other follow-up to the pre 3.0 fixing. Since the tests aren't run + for 2.3 we didn't catch that our previous fix wasn't sufficient. + (Fixes: :issue:`1153`) + +- Audio: Follow-up fix for :issue:`1097` still exhibits issues for certain + setups. We are giving this get an other go by setting the buffer size to + maximum 100ms instead of a fixed number of buffers. (Fixes: :issue:`1147`) + v1.0.2 (2015-04-27) =================== diff --git a/docs/index.rst b/docs/index.rst index e9775030..3a2998d5 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -54,6 +54,8 @@ extension. The cassettes have NFC tags used to select playlists from Spotify. To get started with Mopidy, start by reading :ref:`installation`. +.. _getting-help: + **Getting help** If you get stuck, you can get help at the `Mopidy discussion forum diff --git a/mopidy/audio/actor.py b/mopidy/audio/actor.py index 45ad73ff..7cca954a 100644 --- a/mopidy/audio/actor.py +++ b/mopidy/audio/actor.py @@ -164,7 +164,8 @@ 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', 15) + queue.set_property('max-size-time', 100 * gst.MSECOND) + self.add(element) self.add(queue) queue.link(element) diff --git a/mopidy/http/handlers.py b/mopidy/http/handlers.py index e2faa944..6bbfcbab 100644 --- a/mopidy/http/handlers.py +++ b/mopidy/http/handlers.py @@ -1,5 +1,6 @@ from __future__ import absolute_import, unicode_literals +import functools import logging import os import socket @@ -91,13 +92,14 @@ class WebSocketHandler(tornado.websocket.WebSocketHandler): if hasattr(tornado.ioloop.IOLoop, 'current'): loop = tornado.ioloop.IOLoop.current() else: - loop = tornado.ioloop.IOLoop.instance() # Fallback for 2.3 + loop = tornado.ioloop.IOLoop.instance() # Fallback for pre 3.0 # 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. 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) + # NOTE: Pre 3.0 does not support *args or **kwargs... + loop.add_callback(functools.partial(_send_broadcast, client, msg)) def initialize(self, core): self.jsonrpc = make_jsonrpc_wrapper(core)