Max Kellermann
3491218915
db/update/Service: use C++11 initializers
2017-09-09 07:59:51 +02:00
Max Kellermann
d0f6131ba4
output/Interface: allow Pause() to throw exception
...
Coverity discovered that the Pulse plugin could throw exceptions from
Pause(), but that method was marked "noexcept" because its caller was
not designed to catch exceptions. So instead of avoiding exceptions
(by catching and logging them in each and every implementation), let's
allow them, and do the catch/log game in the MPD core.
2017-09-08 14:45:53 +02:00
Max Kellermann
ca7b4df812
doc/user: document the Opus encoder
2017-09-07 14:21:40 +02:00
Max Kellermann
9cc37bdea2
command/PlayerCommands: emit "volume" only if it is known
...
The "-1" magic value is deprecated now.
2017-09-04 08:37:37 +02:00
Max Kellermann
3f754fd350
Merge branch 'v0.20.x'
2017-09-04 08:27:08 +02:00
Max Kellermann
bc8dd57236
doc/protocol.xml: document status/volume=-1
...
Closes #107
2017-09-04 08:15:41 +02:00
Max Kellermann
f4f461b8bb
storage/curl: support Content-Type application/xml
2017-09-01 11:32:40 +02:00
Max Kellermann
cbb9b6957f
storage/curl: use StringStartsWith()
2017-09-01 11:31:10 +02:00
Max Kellermann
f6b56c9317
storage/curl: move code to IsXmlContentType()
2017-09-01 11:30:30 +02:00
Max Kellermann
3717fb6c8d
win32/build.py: add -march=pentium3 to fix 32 bit LAME build
...
Workaround for the following LAME build failure:
error: inlining failed in call to always_inline '_mm_sqrt_ps': target
specific option mismatch
This is because the LAME build scripts do not check whether SSE is
available; they only check for the presence of the "xmmintrin.h"
header.
Requiring a Pentium 3 CPU is reasonable enough, and it's the first CPU
to feature SSE support.
2017-08-31 19:48:59 +02:00
Max Kellermann
f6abbc01bd
increment version number to 0.20.11
2017-08-31 19:48:59 +02:00
Max Kellermann
91438b6540
output/Interface: the default Pause() implementation fails
...
Fixes regression from commit 31bad5f7af
:
if Pause() returns true, the output thread is running a busy loop,
causing 100% CPU usage, instead of just closing the output.
Closes #105
2017-08-31 15:02:15 +02:00
Max Kellermann
987c505906
event/TimeoutMonitor: remove obsolete class
2017-08-29 16:53:15 +02:00
Max Kellermann
598bb93cc2
StateFile: migrate from TimeoutMonitor to TimerEvent
2017-08-29 16:52:02 +02:00
Max Kellermann
dc531b64ae
db/update/InotifyQueue: migrate from TimeoutMonitor to TimerEvent
2017-08-29 16:38:50 +02:00
Max Kellermann
91d4b5cfed
lib/nfs/Connection: migrate from TimeoutMonitor to TimerEvent
2017-08-29 16:36:16 +02:00
Max Kellermann
c24b8460e0
lib/curl/Global: migrate from TimeoutMonitor to TimerEvent
2017-08-29 16:33:20 +02:00
Max Kellermann
2e471daef1
storage/nfs: migrate from TimeoutMonitor to TimerEvent
2017-08-29 16:30:50 +02:00
Max Kellermann
7ae57a3531
event/MultiSocketMonitor: migrate from TimeoutMonitor to TimerEvent
2017-08-29 16:28:27 +02:00
Max Kellermann
11f36c0bd6
zeroconf/AvahiPoll: migrate from TimeoutMonitor to TimerEvent
2017-08-29 16:28:27 +02:00
Max Kellermann
fd520eeed2
Client: migrate from TimeoutMonitor to TimerEvent
2017-08-29 16:28:27 +02:00
Max Kellermann
30a5dd267b
event/TimeoutMonitor: move code to new class TimerEvent
2017-08-29 16:28:27 +02:00
Max Kellermann
2f0d683378
event/Loop: fix inverted checkin RemoveDeferred()
2017-08-29 16:28:24 +02:00
Max Kellermann
a1309a90ac
event/Loop: use boost::intrusive::list to store IdleMonitors and DeferredMonitors
...
The intrusive contains can easily erase items without searching
through the whole list. This removes a good amount of runtime
overhead.
2017-08-29 15:43:16 +02:00
Max Kellermann
010855a294
event/Loop: use boost::intrusive::multiset to store TimeoutMonitors
...
By using an "intrusive" data structure, we can easily eliminate
struct TimerRecord.
2017-08-29 14:42:59 +02:00
Max Kellermann
71ed3ff992
event/Loop: move TimerRecord::due to class TimeoutMonitor
...
Prepare to eliminate the TimerRecord struct.
2017-08-29 14:13:09 +02:00
Max Kellermann
d4266d0063
event/Loop: remove unused method TimerRecord::IsDue()
2017-08-29 13:41:11 +02:00
Max Kellermann
8225064aab
lib/upnp/Discovery: add missing include
...
Got lost in commit e5ee357903
2017-08-29 13:41:03 +02:00
Max Kellermann
e5ee357903
lib/upnp/Discovery: use DeferredMonitor instead of BlockingCall()
2017-08-25 11:01:30 +02:00
Max Kellermann
8aef518c05
lib/upnp/Discovery: add method GetEventLoop()
2017-08-25 10:59:49 +02:00
Max Kellermann
309ed77ef4
lib/upnp/Device: use std::string::find() instead of ...find_first_of()
2017-08-25 10:57:40 +02:00
Max Kellermann
9a6d2b791f
lib/upnp/Discovery: avoid a std::string copy
2017-08-25 10:55:30 +02:00
Max Kellermann
2a5010a426
lib/upnp/Discovery: remove obsolete comment
2017-08-25 10:16:19 +02:00
Max Kellermann
be29da46f8
lib/upnp/Discovery: use std::list::remove_if()
2017-08-25 10:14:18 +02:00
Max Kellermann
d0734e27ba
lib/upnp/Discovery: use range-based "for"
2017-08-25 10:11:35 +02:00
Max Kellermann
732f6aaa30
neighbor/Explorer: add "noexcept"
2017-08-25 10:09:34 +02:00
Max Kellermann
dd422c7b8b
neighbor/plugins/*: remove redundant "virtual"
2017-08-25 10:07:32 +02:00
Max Kellermann
c8f7a859ea
lib/upnp/Discovery: use CURL instead of UpnpDownloadUrlItem()
...
We can do CURL requests asynchronously, and we don't need a
synchronous WorkQueue thread for that.
This allows parallelizing lookups and allows immediate cancellation.
2017-08-25 09:52:44 +02:00
Max Kellermann
28a2d41b85
db/DatabasePlugin: pass EventThread's EventLoop to create()
...
Allows database plugins to use the EventThread, e.g. for CURL
integration.
2017-08-24 19:53:52 +02:00
Max Kellermann
7e76656a18
db/DatabasePlugin: add #EventLoop parameter documentation
2017-08-24 19:45:23 +02:00
Max Kellermann
0b93f52ba4
release v0.20.10
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCAAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlmefSAQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEut8D/4oZgzdHTMbR6uYbFvkUmPrwtohq8N4JbaS
/TtESfKPJ5PIv42MA5k89DjssQUz0uzuladsy+WXxTx8BD4naXaiOy7loDXjPcnu
YL0sUdAKZVVBdau4dcumSQF0ewhUjuKZUt2I6W2Q35IpagV89nf+mHUXDtUrjykC
coXIwrcINpi0MSo1pbS5m11XNOk2yPfl8ZR+9yn6AvaseCtrwxmogAJGK5bUSKUM
NMaLffVLNfIL/YEBzm2RdgSyU4LBREKnO6vF7UCBSKHIVPyne83fbqc90COj7I9Q
01LGowUAvJIoRIlMzjxlXO6S13hmXJlDZSECaaQYQjiC70RbC1+sK9tQtKQ4BqET
C+vG9ysfqVi4bsYkOppR5JDE9NcghkjK+iGwBYVdXmRwGzmdb1W6fWgAqYGRF+Ql
Fg+/htruNsvvuO+RtcOd8WJWpP3nKisGu9jRp7dceAsWGE20M8HTjCeSZsZM+LvU
B9Lp9NplKqkJyq2k81OUmGBWkR7t8okMeZGvon+sExZ285giryOfhao4eEX7CBqy
XHlClydNnBW11R6TEzhjIxCDufPdboM0XHVxX4kutfkPVGkPnJR/8Jk0c+d7AiVE
H5MSgWsOu9fN//nIuUxdODtL5VMw45/hdydZ9YMI/RnwMQFdEqAZmBvMKE7ZLqrI
F80eZ8/nQg==
=b8hp
-----END PGP SIGNATURE-----
Merge tag 'v0.20.10'
release v0.20.10
2017-08-24 09:35:34 +02:00
Max Kellermann
57a71c157d
release v0.20.10
2017-08-24 09:15:43 +02:00
Max Kellermann
cc76aeb7bb
python/build/libs: upgrade CURL to 7.55.1
2017-08-24 09:06:15 +02:00
Max Kellermann
811cabf8a9
python/libs: upgrade Opus to 1.2.1
2017-08-24 09:06:15 +02:00
Max Kellermann
bf8d2f93d2
python/build/libs: upgrade FFmpeg to 3.3.3
2017-08-24 09:06:15 +02:00
Max Kellermann
07d8259ad6
python/libs: upgrade Boost to 1.65
2017-08-23 17:46:25 +02:00
Max Kellermann
a00d412008
player/Thread: initialize play_audio_format, fixes assertion
...
This fixes an assertion failure caused by resuming playback before the
decoder has finished startup.
2017-08-23 17:43:49 +02:00
Matthew Leon
aa9c6062b0
Merge branch 'v0.20.x' into master
...
contains OSX mixer
2017-08-22 10:36:37 +01:00
Matthew Leon
5fb39658f1
OSX mixer
2017-08-21 20:05:50 +01:00
Max Kellermann
95637fd153
lib/upnp/Discovery: use strncmp() instead of memcmp()
...
memcmp() can overflow the buffer.
2017-08-18 18:48:22 +02:00