Merge pull request #1534 from edran/fix-scrobbling
Get correct track position on change events
This commit is contained in:
commit
5b6632e886
@ -42,7 +42,12 @@ Bug fix release.
|
|||||||
remains unimplemented. (PR: :issue:`1520`)
|
remains unimplemented. (PR: :issue:`1520`)
|
||||||
|
|
||||||
- MPD: Add ``nextsong`` and ``nextsongid`` to the response of MPD ``status`` command.
|
- MPD: Add ``nextsong`` and ``nextsongid`` to the response of MPD ``status`` command.
|
||||||
(Fixes: :issue:`1133` :issue:`1516`, PR: :issue:`1523`)
|
(Fixes: :issue:`1133`, :issue:`1516`, PR: :issue:`1523`)
|
||||||
|
|
||||||
|
- Core: Correctly record the last position of a track when switching to another
|
||||||
|
one. Particularly relevant for `mopidy-scrobbler` users, as before it was
|
||||||
|
essentially unusable. (Fixes: :issue:`1456`, PR: :issue:`1534`)
|
||||||
|
|
||||||
|
|
||||||
v2.0.0 (2016-02-15)
|
v2.0.0 (2016-02-15)
|
||||||
===================
|
===================
|
||||||
|
|||||||
@ -251,6 +251,12 @@ class PlaybackController(object):
|
|||||||
if self._state == PlaybackState.STOPPED:
|
if self._state == PlaybackState.STOPPED:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Unless overridden by other calls (e.g. next / previous / stop) this
|
||||||
|
# will be the last position recorded until the track gets reassigned.
|
||||||
|
# TODO: Check if case when track.length isn't populated needs to be
|
||||||
|
# handled.
|
||||||
|
self._last_position = self._current_tl_track.track.length
|
||||||
|
|
||||||
pending = self.core.tracklist.eot_track(self._current_tl_track)
|
pending = self.core.tracklist.eot_track(self._current_tl_track)
|
||||||
# avoid endless loop if 'repeat' is 'true' and no track is playable
|
# avoid endless loop if 'repeat' is 'true' and no track is playable
|
||||||
# * 2 -> second run to get all playable track in a shuffled playlist
|
# * 2 -> second run to get all playable track in a shuffled playlist
|
||||||
@ -394,6 +400,10 @@ class PlaybackController(object):
|
|||||||
if not backend:
|
if not backend:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# This must happen before prepare_change gets called, otherwise the
|
||||||
|
# backend flushes the information of the track.
|
||||||
|
self._last_position = self.get_time_position()
|
||||||
|
|
||||||
# TODO: Wrap backend call in error handling.
|
# TODO: Wrap backend call in error handling.
|
||||||
backend.playback.prepare_change()
|
backend.playback.prepare_change()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user