Max Kellermann
ac7ce73526
player/Thread: cancel audio when decoder startup on seek fails
...
Fixes assertion failure in MultipleOutputs::Open() after seeking to a
failing song during playback.
2016-04-21 14:03:27 +02:00
Max Kellermann
fb547260d1
player/Control: Play*() returns Error information
2016-02-28 13:31:41 +01:00
Max Kellermann
1d67aa7bf2
update copyright year to 2016
2016-02-26 17:54:05 +01:00
Max Kellermann
e5c6fe1bb2
player/control: unpause in Play()
...
Fix regression by commit 45f6129a
See http://bugs.musicpd.org/view.php?id=4477
2016-02-26 17:33:21 +01:00
Max Kellermann
45f6129ae7
player/Control: don't stop playback in Play()
...
Instead of stopping playback completely, only CANCEL the queued song
if necessary, and use the SEEK command to play the selected song.
SEEK will take care for current playback state.
2015-12-29 13:49:15 +01:00
Max Kellermann
0368282486
player/Control: add code comments
2015-11-13 16:02:07 +01:00
Max Kellermann
4404f20cf4
player/Control: Seek*() returns Error information
2015-11-11 19:56:09 +01:00
Max Kellermann
faca8bc02a
decoder/Control: Seek() returns Error information
2015-11-11 19:56:08 +01:00
Max Kellermann
c6d1d360a3
player/Control: use class ScopeLock
2015-11-11 17:43:56 +01:00
Max Kellermann
afc1236b06
player/Control: move code to ClearError()
2015-11-11 17:41:02 +01:00
Max Kellermann
bedd5f00f8
player/Control: move code to SeekLocked()
2015-11-11 16:56:24 +01:00
Max Kellermann
36239895bd
player/Control: add Lock prefix to locking method names
2015-11-11 16:50:57 +01:00
Max Kellermann
3b71e2abef
player/Thread: call DecoderCommand::SEEK only on existing decoder
...
If the decoder was just started, it already seeks to the desired
position.
2015-11-05 00:41:54 +01:00
Max Kellermann
30cad0c5f1
player/Thread: move code to WaitDecoderStartup()
2015-11-05 00:39:30 +01:00
Max Kellermann
3a387643b3
player/Thread: move player_command_finished() to PlayerControl
2015-11-05 00:38:09 +01:00
Max Kellermann
e6b37703da
player/Thread: copy pc.seek_time in ActivateDecoder()
...
If this gets called while seeking, do the right thing. This moves the
elapsed_time setter from method Run(), which is now redundant.
2015-11-05 00:30:04 +01:00
Max Kellermann
990f473bb3
player/Control: initialize seek_time in EnqueueSongLocked()
...
Allows removing a few special cases in the player thread.
2015-11-05 00:29:03 +01:00
Max Kellermann
cf1de78205
player/Thread: remove decoder error check from ActivateDecoder()
...
It is futile to check for decoder errors before the decoder has
finished startup. At this time, it's unlikely that the decoder has
already failed.
2015-10-28 18:24:42 +01:00
Max Kellermann
ccea6dd74b
player/Thread: rename WaitForDecoder() to ActivateDecoder()
...
.. and fix its API documentation.
2015-10-28 18:20:48 +01:00
Max Kellermann
166b490eed
player/Thread: move code to ForwardDecoderError()
2015-10-27 23:28:13 +01:00
Max Kellermann
efd871ad2f
player/Thread: clear pc.next_song earlier in WaitForDecoder()
2015-10-27 23:25:50 +01:00
Max Kellermann
b78896d64e
player/Control: use CANCEL to clear next_song in Seek()
...
Assigning nullptr to next_song may disrupt the player thread and
render undefined behavior.
2015-10-27 23:09:03 +01:00
Max Kellermann
e753c924ef
player/Thread: merge the cross_fading flag into enum CrossFadeState
2015-10-27 22:43:46 +01:00
Max Kellermann
9dc7b5a6d9
player/Thread: move ResetCrossFade() calls to where pipes are set
...
Move ResetCrossFade() to where cross-fading would actually break, to
make the cross-fading state more reliable.
2015-10-27 22:11:56 +01:00
Max Kellermann
f5d21c9cdb
player/Thread: add method ResetCrossFade()
2015-10-27 22:05:41 +01:00
Max Kellermann
6ce13646da
player/Thread: more CrossFadeState documentation
2015-10-27 21:12:20 +01:00
Max Kellermann
151653dd98
player/Thread: automatic CrossFadeState enum values
2015-10-27 21:05:10 +01:00
Max Kellermann
619cfe6a1c
player/Thread: move enum CrossFadeState into the Player class
2015-10-27 20:48:14 +01:00
Max Kellermann
5fba8d773c
PlayerThread, ...: move to src/player/
2015-08-15 15:55:46 +02:00