aboutsummaryrefslogtreecommitdiffstats
path: root/src/player/Thread.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-11-05player/Control: initialize seek_time in EnqueueSongLocked()Max Kellermann1-6/+2
Allows removing a few special cases in the player thread.
2015-10-28player/Thread: remove decoder error check from ActivateDecoder()Max Kellermann1-37/+8
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-28player/Thread: rename WaitForDecoder() to ActivateDecoder()Max Kellermann1-10/+15
.. and fix its API documentation.
2015-10-27player/Thread: move code to ForwardDecoderError()Max Kellermann1-6/+22
2015-10-27player/Thread: clear pc.next_song earlier in WaitForDecoder()Max Kellermann1-4/+3
2015-10-27player/Thread: merge the cross_fading flag into enum CrossFadeStateMax Kellermann1-22/+25
2015-10-27player/Thread: move ResetCrossFade() calls to where pipes are setMax Kellermann1-3/+8
Move ResetCrossFade() to where cross-fading would actually break, to make the cross-fading state more reliable.
2015-10-27player/Thread: add method ResetCrossFade()Max Kellermann1-2/+10
2015-10-27player/Thread: more CrossFadeState documentationMax Kellermann1-1/+16
2015-10-27player/Thread: automatic CrossFadeState enum valuesMax Kellermann1-4/+4
2015-10-27player/Thread: move enum CrossFadeState into the Player classMax Kellermann1-7/+5
2015-08-15PlayerThread, ...: move to src/player/Max Kellermann1-3/+3
2015-06-21PlayerThread: start the decoder on PlayerCommand::QUEUEMax Kellermann1-0/+6
Fixes missing SongBorder() call, which causes "single" mode breakage.
2015-01-01Copyright year 2015Max Kellermann1-1/+1
2014-08-29CrossFade: pass total_time as SignedSongTime instanceMax Kellermann1-1/+1
2014-08-29MusicChunk: use SignedSongTime for the time stampMax Kellermann1-1/+1
2014-08-29MultipleOutputs: use SignedSongTime for elapsed_timeMax Kellermann1-2/+2
2014-08-29PlayerThread: use SongTime for elapsed_timeMax Kellermann1-8/+8
2014-08-29PlayerControl: use SignedSongTime for the song durationMax Kellermann1-11/+11
2014-08-29DecoderControl: use SignedSongTime for the song durationMax Kellermann1-2/+2
2014-08-29Tag: use SignedSongTime for the song durationMax Kellermann1-2/+2
2014-08-28DecoderControl: use std::chrono::duration for start_ms and end_msMax Kellermann1-1/+1
2014-08-28DetachedSong: use std::chrono::duration for start_ms and end_msMax Kellermann1-10/+10
2014-08-27PlayerControl: use std::chrono::duration for Seek()Max Kellermann1-9/+10
2014-08-27PlayerThread: check if total_time is valid before using itMax Kellermann1-1/+1
2014-08-27DecoderControl: use std::chrono::duration for Seek()Max Kellermann1-1/+1
2014-08-16PlayerThread: rename player_create() to StartPlayerThread()Max Kellermann1-1/+1
2014-08-12MusicChunk: rename struct to MusicChunkMax Kellermann1-6/+6
2014-02-21PlayerListener: new interface to replace GlobalEvents accessMax Kellermann1-4/+4
2014-01-28OutputAll: convert to class, move instance to class PartitionMax Kellermann1-23/+23
Another big chunk of code for multi-player support.
2014-01-24decoder/*: move to decoder/plugins/Max Kellermann1-2/+2
2014-01-23output/*: move to output/plugins/Max Kellermann1-1/+1
2014-01-23thread/Name: set thread namesMax Kellermann1-0/+3
For debugging.
2014-01-13copyright year 2014Max Kellermann1-1/+1
2014-01-09DetachedSong: fork of struct SongMax Kellermann1-40/+30
From now on, struct Song will be used by the database only, and DetachedSong will be used by everybody else. DetachedSong is easier to use, but Song has lower overhead.
2014-01-08PlayerThread: use Song referencesMax Kellermann1-15/+13
2013-12-24PlayerThread: log the last song that was playedMax Kellermann1-1/+4
2013-11-28include cleanup using iwyuMax Kellermann1-1/+0
2013-11-08PlayerThread: fix stuck MPD after song change (0.18.2 regression)Max Kellermann1-4/+8
Commit 77c63511 caused MPD to become stuck right after a song change. The problem was that at some point, the MusicBuffer became full, and the DecoderThread working on the next song waits for the PlayerThread. However, the PlayerThread was stuck in a loop of g_usleep() calls, and never bothered to tell the DecoderThread that the MusicBuffer is not full anymore. This bug is very old, but its chance to occur went from nearly 0% to nearly 100%. The fix is to wake up the DecoderThread before waiting for it. As a side effect, I replaced the g_usleep() call with a Cond::Wait() call.
2013-11-06PlayerThread: reduce the number of DecoderThread wakeupsMax Kellermann1-2/+14
After the number of decoded chunks has fallen below the threshold, the PlayerThread woke up the DecoderThread over and over. This commit adds a boolean flag that avoids these duplicate wakeups, and thus reduces the number of system calls.
2013-11-06PlayerThread: enable buffering when starting playbackMax Kellermann1-1/+1
For some reason, this got lost in commit 975deca8. Re-enabling this fixes stuttering at the beginning of radio streams.
2013-11-04Log: add level "DEFAULT"Max Kellermann1-1/+1
Map LogLevel::INFO to G_LOG_LEVEL_INFO, and LogLevel::DEFAULT to G_LOG_LEVEL_MESSAGE. Now client connect/disconnect message are only logged on log_level "secure".
2013-10-30PcmMix: use negative value instead of NaN for additionMax Kellermann1-3/+1
Avoid NaN to allow -ffast-math.
2013-10-30CrossFade: use negative value for invalid mixramp_delayMax Kellermann1-1/+1
Avoid NaN to allow -ffast-math.
2013-10-29PlayerControl: move attributes to struct CrossFadeSettingsMax Kellermann1-12/+10
2013-10-28DecoderControl: convert mutex and client_cond to a referenceMax Kellermann1-19/+12
Share the Mutex between the DecoderThread and the PlayerThread. This simplifies synchronization between the two threads and fixes a freeze problem: while the PlayerThread waits for the DeocderThread, it cannot answer requests from the main thread, and the main thread will block until the DecoderThread finishes.
2013-10-28player_control: rename to PlayerControlMax Kellermann1-9/+9
2013-10-28decoder_control: rename to DecoderControlMax Kellermann1-4/+4
2013-10-26DecoderControl: add MixRamp gettersMax Kellermann1-2/+2
2013-10-22Playlist: copy stream tags from the PlayerThreadMax Kellermann1-2/+8
Finally restores an important feature that has been broken for several months when the PlayerThread started working with Song copies instead of pointers to the Queue's Song instances (commit e96779d).