Merge pull request #1403 from jcass77/fix/1402_track_playback_ended

Fix track_playback_ended event in consume mode
This commit is contained in:
Stein Magnus Jodal 2016-01-20 20:43:06 +01:00
commit 88e9a12f02
2 changed files with 32 additions and 2 deletions

View File

@ -516,7 +516,8 @@ class PlaybackController(object):
listener.CoreListener.send('track_playback_started', tl_track=tl_track)
def _trigger_track_playback_ended(self, time_position_before_stop):
if self.get_current_tl_track() is None:
tl_track = self.get_current_tl_track()
if tl_track is None:
return
logger.debug('Triggering track playback ended event')
@ -528,7 +529,7 @@ class PlaybackController(object):
# TODO: Use the lowest of track duration and position.
listener.CoreListener.send(
'track_playback_ended',
tl_track=self.get_current_tl_track(),
tl_track=tl_track,
time_position=time_position_before_stop)
def _trigger_playback_state_changed(self, old_state, new_state):

View File

@ -491,6 +491,35 @@ class EventEmissionTest(BaseTest):
],
listener_mock.send.mock_calls)
def test_next_emits_events_when_consume_mode_is_enabled(self,
listener_mock):
tl_tracks = self.core.tracklist.get_tl_tracks()
self.core.tracklist.set_consume(True)
self.core.playback.play(tl_tracks[0])
self.replay_events()
self.core.playback.seek(1000)
self.replay_events()
listener_mock.reset_mock()
self.core.playback.next()
self.replay_events()
self.assertListEqual(
[
mock.call(
'tracklist_changed'),
mock.call(
'track_playback_ended',
tl_track=tl_tracks[0], time_position=mock.ANY),
mock.call(
'playback_state_changed',
old_state='playing', new_state='playing'),
mock.call(
'track_playback_started', tl_track=tl_tracks[1]),
],
listener_mock.send.mock_calls)
def test_gapless_track_change_emits_events(self, listener_mock):
tl_tracks = self.core.tracklist.get_tl_tracks()