Max Kellermann
67a8eedca0
output/ao: round write_size down to a multiple of the frame size
2018-01-02 17:33:33 +01:00
Max Kellermann
be65c7d5d0
config/Block: add method GetPositiveValue()
...
Adds missing checks to several plugins.
2018-01-02 17:24:34 +01:00
Max Kellermann
7c5306a841
config/{Block,Global}: add missing strtoul() check
2018-01-02 17:23:10 +01:00
Max Kellermann
201210cfe1
neighbor/Plugin: std::unique_ptr<NeighborExplorer>
2018-01-02 17:04:23 +01:00
Max Kellermann
cd6de3b24e
neighbor/{Explorer,Listener}: add "noexcept"
2018-01-02 16:58:14 +01:00
Max Kellermann
dcd483bd99
storage/Composite: use std::unique_ptr<Storage>
2018-01-02 16:18:34 +01:00
Max Kellermann
3c5e4e2788
storage/Plugin: return std::unique_ptr<Storage>
2018-01-02 16:11:17 +01:00
Max Kellermann
3f4f7b0a53
lib/upnp/Discovery: protect "downloaders" accesses with mutex
2018-01-02 14:55:57 +01:00
Max Kellermann
0a4b866d8a
db/upnp: use SplitString() instead of stringToTokens()
2018-01-02 14:16:57 +01:00
Max Kellermann
8c7d7dfa5b
lib/upnp/Util: remove unused function csvToStrings()
2018-01-02 14:16:57 +01:00
Max Kellermann
cdf615f783
lib/upnp/ContentDirectoryService: use SplitString() instead of csvToStrings()
2018-01-02 14:16:57 +01:00
Max Kellermann
7d96883d64
lib/upnp/Util: use std::string::erase() instead of ..::replace()
2018-01-02 14:16:57 +01:00
Max Kellermann
28c5e7e6a7
Merge branch 'v0.20.x'
2018-01-02 14:16:47 +01:00
Max Kellermann
ff624075a8
storage/State: check if a CompositeStorage exists; fixes nullptr dereference
...
Fixes another crash bug caused by commit
64d141f71e
2018-01-02 14:13:26 +01:00
Max Kellermann
08db28469d
storage/State: make mount errors non-fatal
...
Fixes crash bug caused by commit
64d141f71e
2018-01-02 14:07:52 +01:00
Max Kellermann
a20b326807
storage/State: fix memory leak after database mount failure
...
Caused by commit 64d141f71e
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 14:05:07 +01:00
Max Kellermann
4db1b1b250
storage/State: remove useless #ifdef ENABLE_DATABASE
...
This source file isn't compiled when the database is disabled.
2018-01-02 13:48:16 +01:00
Max Kellermann
ff6b263b48
increment version number to 0.20.15
2018-01-02 13:46:03 +01:00
Max Kellermann
dbfc4abfd6
thread/SafeSingleton: disallow copying
2018-01-02 12:39:05 +01:00
Max Kellermann
5544375002
thread/SafeSingleton: pass parameters to constructor
2018-01-02 12:26:53 +01:00
Max Kellermann
1fd8d46064
lib/upnp/ClientInit: return UpnpClient_Handle
2018-01-02 12:22:44 +01:00
Max Kellermann
46406d6cca
output/ao: use class SafeSingleton for libao initialization
2018-01-02 12:13:51 +01:00
Max Kellermann
196df1ccd5
thread/SafeSingleton: new thread-safe utility class
2018-01-02 12:10:41 +01:00
Max Kellermann
d2358b42b6
output/Source: drop the "_instance" suffix from variable names
2018-01-02 09:59:22 +01:00
Max Kellermann
e387d94ff1
filter/Filter: add "noexcept"
2018-01-01 19:23:01 +01:00
Max Kellermann
3bb9c704de
pcm/*: add "noexcept"
2018-01-01 19:07:33 +01:00
Max Kellermann
10537c5095
test/run_filter: use "auto"
2018-01-01 19:06:17 +01:00
Max Kellermann
551ac56a33
Filter/Internal: split header
2018-01-01 18:48:34 +01:00
Max Kellermann
5227582e90
release v0.20.14
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCAAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlpKaAoQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEpI/D/9ZjsoVxvRn+09rq4Aczzy98HchovhGVhrA
iqUp6xpBk5/nw53GBBxanLnRbPyjrtH0KDb3aRFrPM2ujYwD8cYCspcEF73Uy9rW
rtjock3/EJrS2WgoBBp82f41YIwqjI6LUreASfhU1+ySE3G8aeDHQkouvpzh3GzT
cND0ZJYijRFNWTA6mW7ebAtwtclxxQDYgXaxAQH/lX7uVijGtndhSUyE2I6VnrJW
VtiZLPInPPqaq+sbZ8L8D1VuswNKkF3z3JNSe9V1003IopMZrte56HdjMqJzqMhS
medA++d8771N0nFsbj656D0VHMoUMdq63xPGG7VulHuW1ZeDMWo2T/gASkz5e+mh
yEdJYFsOV44B9brDJsPtA4r8dnWlWvKsP/Jak/ozVvjQ/xvixJnmg32OdcSXqou5
SS3VQnkiPIOXdCB5VqRutfQMNwyj/TRMV6WLDG+MBwAabRjPX+6tZL9C3knJHsz5
z+9UQrYuwPfWwjrB+T5/FvDZ6DdOy9QK8KzMfvyK3fzajCm/3asVkArvNnqQ4Qen
ZkRGNfsVRQC5E+ZZoRmg+OZDi+jxBc9PY7TUhlDZU1sW5OP9HG0zowtJdOExTU+m
5J7gEPvZxjiQmdWszaJC7eFntd4iaN+zDEXZTJCg65HWYUjjMwcFFPhGE9lrQ8wN
WdT6o86fcQ==
=0AWT
-----END PGP SIGNATURE-----
Merge tag 'v0.20.14'
release v0.20.14
2018-01-01 18:28:39 +01:00
Max Kellermann
c0bf052fa9
release v0.20.14
2018-01-01 17:55:38 +01:00
loujine
5419cff925
[doc] Fix outdated MusicBrainz URLs ( closes #179 )
2018-01-01 17:30:24 +01:00
Max Kellermann
78c73fb9e7
MusicChunk: reorder attributes to reduce padding
2017-12-30 17:52:07 +01:00
Max Kellermann
a06bf388d9
MusicChunk: make the struct size exactly 4096
2017-12-30 17:50:25 +01:00
Max Kellermann
de0c3e717e
MusicChunk: split struct MusicChunkInfo from struct MusicChunk
2017-12-30 17:47:16 +01:00
Max Kellermann
1194998ce9
CrossFade: use sizeof(MusicChunk::data) instead of CHUNK_SIZE
2017-12-30 17:43:56 +01:00
Max Kellermann
7171e23700
player/Thread: make seeking into a new song non-blocking
2017-12-30 11:31:26 +01:00
Max Kellermann
dee378b775
player/Thread: make SEEK (partially) non-blocking
...
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 17:32:12 +01:00
Max Kellermann
f76262ef79
poison.h: remove obsolete header
2017-12-29 17:29:52 +01:00
Max Kellermann
6a755b0663
Makefile.am: remove -DCPPUNIT_HAVE_RTTI=0
...
This declaration is obsolete because MPD has switched on RTTI long
ago.
2017-12-29 17:04:12 +01:00
Max Kellermann
c40354bbcb
player/Outputs: abstract interface wrapping class MultipleOutputs
2017-12-29 16:39:05 +01:00
Max Kellermann
c04aafb4e3
output/Multiple: add "noexcept"
2017-12-29 16:29:49 +01:00
Max Kellermann
e31abe6d6b
player/Thread: remove redundant outputs.Cancel() call
...
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 08:39:48 +01:00
Max Kellermann
e1349ccadc
player/Thread: ProcessCommand() returns bool
...
Allows signalling a failed seek, and replaces several redundant
command checks after the ProcessCommand() call.
2017-12-28 08:30:01 +01:00
Max Kellermann
8838bdc1e3
player/Thread: move CommandFinished() call out of SeekDecoder(SongTime)
...
Decouple this function from player command execution.
2017-12-27 14:28:56 +01:00
Max Kellermann
d6386bc80f
player/Thread: update code comment
2017-12-27 14:26:14 +01:00
Max Kellermann
a2c2288cd6
test/run_filter: throw exception on error
2017-12-27 12:03:13 +01:00
Max Kellermann
edef62df86
filter/Internal: return std::unique_ptr<Filter>
2017-12-27 11:56:05 +01:00
Max Kellermann
e2621d5e44
filter/Plugin: return std::unique_ptr<PreparedFilter>
2017-12-27 11:39:01 +01:00
Max Kellermann
0e3ff12dd3
filter/volume: remove from filter_plugins[]
...
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 11:38:38 +01:00
Max Kellermann
b335ac4156
filter/{chain,convert}: remove unused FilterPlugin instances
...
These are not in filter_plugins[] and have dedicated constructors
anyway.
2017-12-27 11:33:15 +01:00