Age | Commit message (Collapse) | Author | |
---|---|---|---|
2018-11-19 | check.h: remove obsolete header | Max Kellermann | |
Since we switched from autotools to Meson in commit 94592c14062d5afc9482d11baa401648082022c0, we don't need to include `config.h` early to properly enable large file support. Meson passes the required macros on the compiler command line instead of defining them in `config.h`. This means we can include `config.h` at any time, whenever we want to check its macros, and there are no ordering constraints. | |||
2018-10-31 | *: copyright year 2018 | Max Kellermann | |
2018-10-29 | Merge branch 'v0.20.x' | Max Kellermann | |
2018-10-29 | player/Control: move IDLE_PLAYER to Player::SeekDecoder() | Max Kellermann | |
This emits the event even if PlayerControl::Play() is used to replay the current song, which emits the missing "player" idle event. Closes #381 | |||
2018-09-23 | player/Control: start thread on demand | Max Kellermann | |
Keep MPD's footprint small until playback is requested. | |||
2018-09-23 | player/Thread: remove obsolete `buffered_before_play` attribute | Max Kellermann | |
2018-09-22 | player/CrossFade: use std::chrono::duration | Max Kellermann | |
2018-09-21 | player/Control: apply CamelCase to struct player_status | Max Kellermann | |
2018-08-02 | DetachedSong, db/LightSong, SongFilter: move to src/song/ | Max Kellermann | |
2018-01-07 | thread/Thread: use BoundMethod | Max Kellermann | |
2017-12-29 | player/Thread: make SEEK (partially) non-blocking | Max Kellermann | |
When the decoder is still starting up while we handle a SEEK, finish the "player SEEK" immediately and re-enter the player loop, being able to handle commands (and even cancel the pending seek). This is the first part in a series of patches to solve the "blocking input blocks decoder, blocks player, blocks the main thread" problem. There are many other blocking code locations left, and the main thread isn't non-blocking either because it waits for "seeking" to become false. | |||
2017-12-29 | player/Outputs: abstract interface wrapping class MultipleOutputs | Max Kellermann | |
2017-12-21 | player/Control: add "occupied" flag to skip REFRESH | Max Kellermann | |
Reduces main thread contention. Avoids blocking the main thread in "status" commands. | |||
2017-11-26 | player/Control: wrap DetachedSong* in std::unique_ptr | Max Kellermann | |
2017-11-26 | player/Control: add "noexcept" | Max Kellermann | |
2017-05-15 | Merge tag 'v0.20.7' | Max Kellermann | |
release v0.20.7 | |||
2017-05-08 | *: add "noexcept" to many, many function prototypes | Max Kellermann | |
This eliminates some overhead, because the compiler doesn't need to consider these functions throwing. | |||
2017-02-10 | thread/Thread: use BoundMethod | Max Kellermann | |
2017-01-03 | update copyright year | Max Kellermann | |
2017-01-03 | thread/Mutex: remove ScopeLock, use std::lock_guard directly | Max Kellermann | |
2016-12-14 | output/Multiple: move Wait() to struct PlayerControl | Max Kellermann | |
Eliminate a dependency from MultipleOutputs on PlayerControl. | |||
2016-12-03 | decoder/Control: add attribute configured_audio_format | Max Kellermann | |
Obsoletes the same variable from AudioConfig.cxx. | |||
2016-12-03 | player/Control: make ReplayGainConfig const | Max Kellermann | |
2016-12-03 | player/Control: use C++11 initializers | Max Kellermann | |
2016-11-09 | output/Plugin: remove 'Error&' parameters, use C++ exceptions only | Max Kellermann | |
2016-09-08 | player/Control: convert error from Error to std::exception_ptr | Max Kellermann | |
Prepare full C++ exception support in the player thread. | |||
2016-09-08 | player/Control: use class Error as C++ exception, throw it | Max Kellermann | |
2016-02-28 | player/Control: Play*() returns Error information | Max Kellermann | |
2016-02-26 | update copyright year to 2016 | Max Kellermann | |
2016-02-26 | player/control: unpause in Play() | Max Kellermann | |
Fix regression by commit 45f6129a See http://bugs.musicpd.org/view.php?id=4477 | |||
2015-12-29 | player/Control: don't stop playback in Play() | Max Kellermann | |
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-11-13 | player/Control: add code comments | Max Kellermann | |
2015-11-11 | player/Control: Seek*() returns Error information | Max Kellermann | |
2015-11-11 | player/Control: use class ScopeLock | Max Kellermann | |
2015-11-11 | player/Control: move code to ClearError() | Max Kellermann | |
2015-11-11 | player/Control: move code to SeekLocked() | Max Kellermann | |
2015-11-11 | player/Control: add Lock prefix to locking method names | Max Kellermann | |
2015-10-27 | player/Control: use CANCEL to clear next_song in Seek() | Max Kellermann | |
Assigning nullptr to next_song may disrupt the player thread and render undefined behavior. | |||
2015-08-15 | PlayerThread, ...: move to src/player/ | Max Kellermann | |