Age | Commit message (Collapse) | Author | |
---|---|---|---|
2018-01-02 | lib/upnp/Util: use std::string::erase() instead of ..::replace() | Max Kellermann | |
2018-01-02 | Merge branch 'v0.20.x' | Max Kellermann | |
2018-01-02 | storage/State: check if a CompositeStorage exists; fixes nullptr dereference | Max Kellermann | |
Fixes another crash bug caused by commit 64d141f71e690a4258ba9ee8712140bc9d961883 | |||
2018-01-02 | storage/State: make mount errors non-fatal | Max Kellermann | |
Fixes crash bug caused by commit 64d141f71e690a4258ba9ee8712140bc9d961883 | |||
2018-01-02 | storage/State: fix memory leak after database mount failure | Max Kellermann | |
Caused by commit 64d141f71e690a4258ba9ee8712140bc9d961883 This wasn't a serious memory leak, because after a mount failure, MPD would abort anyway, which is subject to the next commit. | |||
2018-01-02 | storage/State: remove useless #ifdef ENABLE_DATABASE | Max Kellermann | |
This source file isn't compiled when the database is disabled. | |||
2018-01-02 | increment version number to 0.20.15 | Max Kellermann | |
2018-01-02 | thread/SafeSingleton: disallow copying | Max Kellermann | |
2018-01-02 | thread/SafeSingleton: pass parameters to constructor | Max Kellermann | |
2018-01-02 | lib/upnp/ClientInit: return UpnpClient_Handle | Max Kellermann | |
2018-01-02 | output/ao: use class SafeSingleton for libao initialization | Max Kellermann | |
2018-01-02 | thread/SafeSingleton: new thread-safe utility class | Max Kellermann | |
2018-01-02 | output/Source: drop the "_instance" suffix from variable names | Max Kellermann | |
2018-01-01 | filter/Filter: add "noexcept" | Max Kellermann | |
2018-01-01 | pcm/*: add "noexcept" | Max Kellermann | |
2018-01-01 | test/run_filter: use "auto" | Max Kellermann | |
2018-01-01 | Filter/Internal: split header | Max Kellermann | |
2018-01-01 | Merge tag 'v0.20.14' | Max Kellermann | |
release v0.20.14 | |||
2018-01-01 | release v0.20.14v0.20.14 | Max Kellermann | |
2018-01-01 | [doc] Fix outdated MusicBrainz URLs (closes #179) | loujine | |
2017-12-30 | MusicChunk: reorder attributes to reduce padding | Max Kellermann | |
2017-12-30 | MusicChunk: make the struct size exactly 4096 | Max Kellermann | |
2017-12-30 | MusicChunk: split struct MusicChunkInfo from struct MusicChunk | Max Kellermann | |
2017-12-30 | CrossFade: use sizeof(MusicChunk::data) instead of CHUNK_SIZE | Max Kellermann | |
2017-12-30 | player/Thread: make seeking into a new song non-blocking | 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 | poison.h: remove obsolete header | Max Kellermann | |
2017-12-29 | Makefile.am: remove -DCPPUNIT_HAVE_RTTI=0 | Max Kellermann | |
This declaration is obsolete because MPD has switched on RTTI long ago. | |||
2017-12-29 | player/Outputs: abstract interface wrapping class MultipleOutputs | Max Kellermann | |
2017-12-29 | output/Multiple: add "noexcept" | Max Kellermann | |
2017-12-28 | player/Thread: remove redundant outputs.Cancel() call | Max Kellermann | |
The STOP, EXIT and CLOSE_AUDIO commands are not finished here; they are propagated to PlayerControl::RunThread() where the outputs.Cancel() call will be done again. | |||
2017-12-28 | player/Thread: ProcessCommand() returns bool | Max Kellermann | |
Allows signalling a failed seek, and replaces several redundant command checks after the ProcessCommand() call. | |||
2017-12-27 | player/Thread: move CommandFinished() call out of SeekDecoder(SongTime) | Max Kellermann | |
Decouple this function from player command execution. | |||
2017-12-27 | player/Thread: update code comment | Max Kellermann | |
2017-12-27 | test/run_filter: throw exception on error | Max Kellermann | |
2017-12-27 | filter/Internal: return std::unique_ptr<Filter> | Max Kellermann | |
2017-12-27 | filter/Plugin: return std::unique_ptr<PreparedFilter> | Max Kellermann | |
2017-12-27 | filter/volume: remove from filter_plugins[] | Max Kellermann | |
Thsi filter doesn't make sense as manually configured plugin, because nobody ever calls volume_filter_set() on it, making it a no-op. | |||
2017-12-27 | filter/{chain,convert}: remove unused FilterPlugin instances | Max Kellermann | |
These are not in filter_plugins[] and have dedicated constructors anyway. | |||
2017-12-27 | output/Source: convert prepared_filter to reference | Max Kellermann | |
2017-12-27 | archive/Plugin: return std::unique_ptr<ArchiveFile> | Max Kellermann | |
2017-12-27 | fs/AllocatedPath: drop obsolete GCC check | Max Kellermann | |
2017-12-27 | Compiler.h: remove support for GCC 4.9 | Max Kellermann | |
Supporting GCC 4.9 is becoming cumbersome as we refactor more code to C++14. This shouldn't be a problem for anybody, because Debian Stable (Stretch) has version 6.3, and Ubuntu LTS (Xenial) has version 5.3. | |||
2017-12-26 | archive/File, input/Plugin: return InputStreamPtr | Max Kellermann | |
2017-12-26 | input/Proxy: use InputStreamPtr | Max Kellermann | |
2017-12-26 | input/Icy: manage the parser in a std::shared_ptr | Max Kellermann | |
This resolves the circular dependency between IcyInputStream and CurlInputStream. | |||
2017-12-26 | Merge branch 'v0.20.x' | Max Kellermann | |
2017-12-26 | input/curl: add missing mutex locks to OnEnd(), OnError() | Max Kellermann | |
2017-12-26 | input/InputStream: add "noexcept" | Max Kellermann | |
2017-12-26 | input/InputStream: use C++11 initializers | Max Kellermann | |