mpd: Don't restart current track before seek

This commit is contained in:
Stein Magnus Jodal 2012-12-23 12:20:30 +01:00
parent 4b94a5a8ef
commit ce318316a3
3 changed files with 26 additions and 8 deletions

View File

@ -58,6 +58,9 @@ v0.11.0 (in development)
- Add support for search by date.
- Make ``seek`` and ``seekid`` not restart the current track before seeking in
it.
**Internal changes**
*Models:*

View File

@ -329,6 +329,7 @@ def seek(context, songpos, seconds):
- issues ``seek 1 120`` without quotes around the arguments.
"""
songpos = int(songpos)
if context.core.playback.tracklist_position.get() != songpos:
playpos(context, songpos)
context.core.playback.seek(int(seconds) * 1000).get()
@ -343,6 +344,7 @@ def seekid(context, tlid, seconds):
Seeks to the position ``TIME`` (in seconds) of song ``SONGID``.
"""
tlid = int(tlid)
tl_track = context.core.playback.current_tl_track.get()
if not tl_track or tl_track.tlid != tlid:
playid(context, tlid)

View File

@ -371,45 +371,58 @@ class PlaybackControlHandlerTest(protocol.BaseTestCase):
self.sendRequest('previous')
self.assertInResponse('OK')
def test_seek(self):
self.core.tracklist.add([Track(uri='dummy:a', length=40000)])
def test_seek_in_current_track(self):
seek_track = Track(uri='dummy:a', length=40000)
self.core.tracklist.add([seek_track])
self.core.playback.play()
self.sendRequest('seek "0"')
self.sendRequest('seek "0" "30"')
self.assertEqual(self.core.playback.current_track.get(), seek_track)
self.assertGreaterEqual(self.core.playback.time_position, 30000)
self.assertInResponse('OK')
def test_seek_with_songpos(self):
def test_seek_in_another_track(self):
seek_track = Track(uri='dummy:b', length=40000)
self.core.tracklist.add(
[Track(uri='dummy:a', length=40000), seek_track])
self.core.playback.play()
self.assertNotEqual(self.core.playback.current_track.get(), seek_track)
self.sendRequest('seek "1" "30"')
self.assertEqual(self.core.playback.current_track.get(), seek_track)
self.assertInResponse('OK')
def test_seek_without_quotes(self):
self.core.tracklist.add([Track(uri='dummy:a', length=40000)])
self.core.playback.play()
self.sendRequest('seek 0')
self.sendRequest('seek 0 30')
self.assertGreaterEqual(
self.core.playback.time_position.get(), 30000)
self.assertInResponse('OK')
def test_seekid(self):
self.core.tracklist.add([Track(uri='dummy:a', length=40000)])
def test_seekid_in_current_track(self):
seek_track = Track(uri='dummy:a', length=40000)
self.core.tracklist.add([seek_track])
self.core.playback.play()
self.sendRequest('seekid "0" "30"')
self.assertEqual(self.core.playback.current_track.get(), seek_track)
self.assertGreaterEqual(
self.core.playback.time_position.get(), 30000)
self.assertInResponse('OK')
def test_seekid_with_tlid(self):
def test_seekid_in_another_track(self):
seek_track = Track(uri='dummy:b', length=40000)
self.core.tracklist.add(
[Track(uri='dummy:a', length=40000), seek_track])
self.core.playback.play()
self.sendRequest('seekid "1" "30"')
self.assertEqual(1, self.core.playback.current_tl_track.get().tlid)
self.assertEqual(seek_track, self.core.playback.current_track.get())
self.assertInResponse('OK')