Max Kellermann
6d01ee9284
test/DumpDecoderClient: convert static local to class attribute
2018-02-17 08:32:16 +01:00
Max Kellermann
cc3c1f31d0
test/DumpDecoderClient: convert to class
2018-02-17 08:31:19 +01:00
Max Kellermann
5909502a13
test/DumpDecoderClient: add API documentation
2018-02-17 08:30:12 +01:00
Max Kellermann
88bbd847e0
test/FakeDecoderAPI: rename to DumpDecoderClient
2018-02-17 08:27:03 +01:00
Max Kellermann
34d14df297
Makefile.am: remove obsolete dependencies on FakeDecoderAPI.cxx
2018-02-17 08:26:10 +01:00
Max Kellermann
bfc886cd54
decoder/Client: update API documentation
2018-02-17 08:20:07 +01:00
Max Kellermann
8624d8c144
doc/user.xml: example "ps" command for real-time scheduling check
2018-02-17 01:07:06 +01:00
Max Kellermann
420582ec5e
.travis.yml: enable ccache
2018-02-17 00:30:32 +01:00
Max Kellermann
36207d9726
.travis.yml: add variable MATRIX_EVAL
2018-02-17 00:23:31 +01:00
Max Kellermann
855d1bc5a1
.travis.yml: switch to osx_image xcode9.3beta
...
The clang/libc++ version in the default xcode8 image is unable to
compile MPD due to incomplete C++14 support.
2018-02-17 00:23:30 +01:00
Max Kellermann
081d15a830
.travis.yml: use "matrix"
2018-02-16 23:21:14 +01:00
Max Kellermann
d29d186d62
output/alsa: use a new I/O thread with real-time scheduling
...
The normal I/O event thread can have a large latency, e.g. when
libgnutls loads all TLS CA certificates for a https connect. This
makes it unreliable for the ALSA I/O notifications, and causes ring
buffer xruns. To avoid interfering with high latency events such as
CURL's, we move the ALSA I/O events to a separate I/O thread which
also obtains real-time scheduling (if possible).
Closes #221
2018-02-16 22:38:55 +01:00
Max Kellermann
61f2ce67dd
decoder/HybridDSD: implement seeking
2018-02-13 09:53:05 +01:00
Max Kellermann
60dbf1bea0
decoder/HybridDSD: calculate bit rate
2018-02-13 09:41:07 +01:00
Max Kellermann
58bb866e2d
decoder/HybridDSD: add code comments
2018-02-13 09:29:58 +01:00
Max Kellermann
b2ec5d0f01
decoder/HybridDSD: new decoder plugin for Hybrid DSD
2018-02-13 00:00:00 +01:00
Max Kellermann
0c300bd4b4
test/run_decoder: add command-line option to read mpd.conf
2018-02-13 00:00:00 +01:00
Max Kellermann
53acb7bfcb
test/run_decder: RAII-style global initialization
2018-02-13 00:00:00 +01:00
Max Kellermann
65bbb0e0aa
release v0.20.17
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlqAMO0QHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEg8eD/49NlFvlNdkamgYvh7MI1Sn67yKAwQt+N51
W0hVnmXwPoSg76gfWw8J9kVyQy/jEkaCxsPF/UuEbH5jzqAC0y8hwYVRkJaRc9wN
ZfwHvLHeaUxQweoguEwRSREy4ZC4ImQOK+eAxI1R43mqxxyhko1Akc1NmRVWzYfv
/FGmAjTi1U6FR/yDpdSFn1NdlPmIgZ4WDuRsDT2NrshX/Bb32FiyZBytvek2P8n/
QNgXv18E4yWXSb+zBYhPy/eaKhGasyjI3cbht1F0hNW9Yo/BsFxDuwXrX1vNBaOS
E3Dux4s/nfcJ4RMRjmrkFwXImCvxt7+AGfh8RYBXuwqMExXz2kZjIs4ZVvO7Nu9A
pFDJQwRIojXMfk73LU/MEpmNNEXhvfQLYkrM7poSqYaOr8SWMszqSgNnnfq6+flB
sJbstgAStI6lL0jy0HrtMTvPVEiAGh6wCvMy/r2G9XUAyw76ccOg7MaIldn0MHJv
A51+GfRTi4ILH0ReL1BGAg9nG97uFmRAWGkfkhtyD540xGRk7x5R8/ml4zFogHN6
SbrV0NPdwk+uFd0y2znQT2gWyjc0id4WEKEoHX+Gl6c5qtPIfrq+PQPyk9kR+u+i
AxwqMoKQer6Ji5qnsvCiKSkaGGiVNivrZ11jDWNCZaKjmvlKlvj/P5GxbPpORorq
v4ru/4vNXQ==
=v4t8
-----END PGP SIGNATURE-----
Merge tag 'v0.20.17'
release v0.20.17
2018-02-11 13:22:43 +01:00
Max Kellermann
c2940a8385
release v0.20.17
2018-02-11 13:02:53 +01:00
Max Kellermann
bede564618
mixer/alsa: work around rounding error at volume 0
...
Due to rounding errors, a slightly negative value can be passed to
set_normalized_volume(), which will make the log10() call fail.
Actually, volume 0 is already failing because log10(0) is illegal. So
let's fix this by implementing two corner cases: <=0 and >=100.
Closes #212
2018-02-10 09:07:51 +01:00
Max Kellermann
e0ca4b865a
android: require SDK version 14
...
Closes #213 .
2018-02-10 00:03:23 +01:00
Max Kellermann
31c206bf80
android/build.py: add -mfpu=vfp, explicitly disabling NEON
...
Apparently, clang defaults to NEON when ARMv7 is used. Not all ARMv7
CPUs we target have NEON, so we need to disable that.
2018-02-10 00:00:57 +01:00
Max Kellermann
9187a08106
lib/curl: remove .netrc support on Android
...
Not needed on Android, and the implementation uses getpwuid_r() which
is unavailable on old Android versions.
2018-02-09 23:14:29 +01:00
Max Kellermann
3859a50466
python/build/libs.py: convert CURL edit to quilt patch
2018-02-09 23:14:27 +01:00
Max Kellermann
927071e085
python/build/project.py: add quilt support
2018-02-09 22:59:12 +01:00
Max Kellermann
6ba918b203
input/file: don't use posix_fadvise() on Android
...
Requires Android API 21, but we want to support older versions as
well.
2018-02-09 22:54:22 +01:00
Max Kellermann
e8b70dbca4
SongSave, queue/PlaylistState, tag/ReplayGain: use portable atof() wrappers
...
For Android pre-5.0 compatibility (#213 ).
2018-02-09 22:54:22 +01:00
Max Kellermann
0f8d223c7f
protocol/ArgParser: move strtof()/strtod() switch to util/NumberParser.hxx
2018-02-09 22:54:22 +01:00
Max Kellermann
19a2885fd5
protocol/ArgParser: use strtod() instead of strtof() on Android
...
For Android pre-5.0 compatibility (#213 ).
2018-02-09 22:54:22 +01:00
Max Kellermann
b8a094470b
python/build/libs.py: build only the library
2018-02-09 22:54:22 +01:00
Max Kellermann
2988bb77e8
python/build/project: allow trailing digit after letter in version number
...
For version numbers such as OpenSSH's, e.g.: "7.2p2"
2018-02-09 22:54:22 +01:00
Max Kellermann
738317bf34
doc/user: document MPD on Android
...
Closes #217
2018-02-09 19:11:39 +01:00
Max Kellermann
e46fbd0780
filter/convert: set the PcmConvert instance only if it was initialized
...
Fixes valgrind warning.
2018-02-09 19:05:45 +01:00
Max Kellermann
56b74ad990
filter/convert: add method IsActive()
2018-02-09 19:04:45 +01:00
Max Kellermann
6de92bb42b
pcm/Order: fix size calculation with 8 channels
...
This was a buffer overflow bug which could cause MPD crahes when
playing back 8 channels with the ALSA output plugin.
Closes #216
2018-02-09 19:01:12 +01:00
Max Kellermann
c801936e53
db/update/Service: set the update thread name
2018-02-09 18:48:14 +01:00
Max Kellermann
817656504d
thread/Util: implement system call wrapper for sched_setscheduler()
...
There is a POSIX definition for sched_setscheduler(), but Linux does
not implement that; instead of changing the process's scheduler, it
only affects one thread. This has caused some confusion among
application developers and C library developers.
While glibc implements Linux semantics, Musl has made their
sched_setscheduler() function an always-failing no-op, causing the
error message "sched_setscheduler failed: Function not implemented".
http://git.musl-libc.org/cgit/musl/commit/src/sched/sched_setscheduler.c?id=1e21e78bf7a5c24c217446d8760be7b7188711c2
Instead of relying on the C library which may be unreliable here, we
now roll our own system call wrapper.
Closes #218
2018-02-09 18:43:45 +01:00
Max Kellermann
6f00f97b66
thread/Util: rename ioprio_set() to linux_ioprio_set()
...
Juse in cas glibc gets a wrapper for the system call which would then
conflict with ours.
2018-02-09 18:43:45 +01:00
Max Kellermann
5acb978f8f
increment version number to 0.20.17
2018-02-09 18:43:45 +01:00
Max Kellermann
5147654f6c
SongFilter: fix "modified-since" filter
...
Error message sent to client was "basic_string::_M_construct null not
valid" due to passing nullptr to the std::string constructor.
Regression caused by commit 386688b87a
2018-02-09 13:19:26 +01:00
Max Kellermann
250b6a3d52
release v0.20.16
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlp2BjEQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEl0HEACEOGoX3a8slWwuPsqdOu+thc73SIMVzqF9
xzxFbGLyp0MzXTAgU+SLzfbD4/gerglC7TRbGzsvVu7iwxXeKhEL/SJ5RhrCQM3E
U8jaOeavMWeqX60pdbTz2zw4maKAD7U3fWcYxoh09EBaZa7Mm/j7URPLqrlWT7VD
iWqdLcC4HZarOxBbq0CY7rQPVsAVZZ5l43MDV6hiInSn0wWo783G6BtYFgvgH8qk
pZIL0yScQrjyj9D0fgfDC9DBVfHqMqpWW5G2rNhsXTUtpdb9V5tB2B8ZbIUWJfD7
aVFztCwwmbiBle4UBHfyyDLfZkBZmU/qKc9+I3WUxT4DLbA8gDXZFjb7zU80NMge
xzbXeO7XvxvSm7groqRh3Vy0nbkBMB9wTwzre3ULhYyhY2vVISb9lSyRtUE9xuR8
SL2zpdgVcFdTUSKat63ikeU4sbYvssra3ZDRnAyoFF2iVpT2J2B95ZVNfaIYbRSQ
lidlz8q3Px5GUDe3D0ao3hFk5t1Hg2jXx3nbz/Kk+SwZpsaiCewl6zjptye7R7zD
e9OMxYrU+/opsynRE5NFuTvkRKUG1kC47/rWgGZWI9Cbv8+lse1NO0c7VzM7o1hH
Bfk5AhEkv8tLNM+39evXdNQVB0cna5ndSDOkYBcPI78/PUNd+TnrPdfI/W3NCnRl
I+CWQE3uSQ==
=+tJ2
-----END PGP SIGNATURE-----
Merge tag 'v0.20.16'
release v0.20.16
2018-02-03 19:59:29 +01:00
Max Kellermann
975a4ae871
release v0.20.16
2018-02-03 19:55:07 +01:00
Max Kellermann
56aaf3c73e
python/build/libs: upgrade CURL to 7.58.0
2018-02-03 19:46:31 +01:00
Max Kellermann
12fd1cad0c
archive/iso9660: libcdio 2.0 compatibility
...
Closes #173
2018-02-03 19:32:31 +01:00
Max Kellermann
73ddbcc876
player/Thread: wake up the main thread after failed seek
...
Fixes deadlock bug. Closes #210
2018-02-03 19:28:39 +01:00
Max Kellermann
e573cbf032
db/update/Queue: work around GCC7 -Wuninitialized
2018-02-01 19:53:42 +01:00
Max Kellermann
dead461542
lib/upnp/Init: enable IPv6
2018-01-31 18:15:46 +01:00
Max Kellermann
3d5da1ac73
lib/upnp/Init: use nullptr instead of 0
2018-01-31 18:14:26 +01:00
Max Kellermann
ec408ca6a6
output/pulse: fix crash during auto-detection
...
The PulseOutput needs to be "enabled" before WaitConnection() may be
called.
Closes #207
2018-01-30 10:06:36 +01:00