Commit Graph

10307 Commits

Author SHA1 Message Date
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
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
Max Kellermann
5ac72211cd event/Loop: set thread to current thread by default
Allows eliminating lots of complexity and workarounds for bogus
assertion failures.
2017-08-18 18:18:55 +02:00
Max Kellermann
94525d3952 IOThread: remove obsolete library
We now pass the EventThread's EventLoop reference around.
2017-08-18 18:15:19 +02:00
Max Kellermann
7f9a2f8adb event/Loop: schedule and cancel the WakeFD in Run()
This is only needed while Run() is alive, and moving it there avoids
problems with thread-checking assertions.
2017-08-18 18:08:06 +02:00
Max Kellermann
b7d0890bc0 lib/curl/Init: share a CurlGlobal instance between input and storage 2017-08-18 13:34:55 +02:00
Max Kellermann
b2b079a26b SongFilter: use std::chrono::system_clock::time_point instead of time_t 2017-08-18 12:30:50 +02:00
Max Kellermann
b886dfae4d DetachedSong, db/LightSong, db/simple/Song: use std::chrono::system_clock::time_point 2017-08-18 12:22:47 +02:00
Max Kellermann
902fbb3347 db/LightDirectory: use std::chrono::system_clock::time_point 2017-08-18 12:16:43 +02:00
Ryan Walklin
9f16c798d0 Fix std::string read after free in read_stream_art 2017-08-17 21:25:03 +10:00
Ryan Walklin
318f80d113 Fix EventPipe file descriptors 2017-08-17 12:21:01 +10:00
Ryan Walklin
9df8b32f10 Add albumart command
Add API documentation
Support 64 bit offsets
Use InputStream for all reads
2017-08-15 20:38:33 +10:00
Max Kellermann
6f37f5752b db/PlaylistInfo: use std::chrono::system_clock::time_point 2017-08-11 12:50:33 +02:00
Max Kellermann
9d0a71f245 output/Jack: add "noexcept" 2017-08-11 12:41:11 +02:00
Max Kellermann
ff1b435232 output/Jack: reorder methods 2017-08-11 12:39:42 +02:00
Max Kellermann
b57a272f67 system/EPollFD: throw exception instead of raising fatal error 2017-08-11 09:39:47 +02:00
Max Kellermann
ef79647e85 zeroconf/Avahi: throw exception instead of raising fatal error 2017-08-11 09:38:08 +02:00
Max Kellermann
d3fd89552f unix/Signalhandlers: throw exception instead of raising fatal error 2017-08-11 09:37:30 +02:00
Max Kellermann
6d43e70a93 event/SignalMonitor: throw exception instead of raising fatal error 2017-08-11 09:36:22 +02:00
Max Kellermann
e8333316ee Permission: throw exception instead of raising fatal error 2017-08-11 09:33:59 +02:00
Max Kellermann
85edcb858d tag/Config: throw exception instead of raising fatal error 2017-08-11 09:33:07 +02:00
Max Kellermann
bab5f1a93f client: make GREETING constexpr 2017-08-11 09:22:26 +02:00
Max Kellermann
6de8303df8 client: use C++11 initializers 2017-08-11 09:21:29 +02:00
Max Kellermann
33b4114534 system/fd_util: remove unused library 2017-08-11 09:20:15 +02:00
Max Kellermann
7a4457402f system/EventPipe: use FileDescriptor::CreatePipeNonBlock() 2017-08-11 09:19:00 +02:00
Max Kellermann
9056dcaf7d system/FileDescriptor: add method CreatePipeNonBlock() 2017-08-11 09:15:22 +02:00
Max Kellermann
2119e4fd3e system/EventPipe: use class UniqueSocketDescriptor in PoorSocketPair() 2017-08-11 09:09:04 +02:00
Max Kellermann
bcd5190f1d system/EventPipe: throw exception instead of raising fatal error 2017-08-11 09:09:04 +02:00
Max Kellermann
d705a92e43 net/IPv4Address: new class 2017-08-11 09:09:04 +02:00
Max Kellermann
614b3634d4 net/SocketDescriptor: add AcceptNonBlock() overload without address 2017-08-11 09:07:35 +02:00
Max Kellermann
b234f4307f net/SocketDescriptor: AcceptNonBlock() enables non-blocking even if SOCK_NONBLOCK is unavailable 2017-08-11 09:04:38 +02:00
Max Kellermann
e38c213ee0 net/SocketDescriptor: check HAVE_ACCEPT4 2017-08-11 09:04:10 +02:00
Max Kellermann
699f41e114 system/EventPipe: use AtScopeExit() in PoorSocketPair() 2017-08-11 08:30:37 +02:00
Max Kellermann
424e1363ed zeroconf/Bonjour: pass SocketDescriptor to constructor
Fixes Mac build failure.
2017-08-11 08:25:26 +02:00
Max Kellermann
7484bc31b4 system/FileDescriptor: implement CreatePipe() on Windows 2017-08-11 08:15:47 +02:00
Max Kellermann
5a495cc165 system/fd_util: remove unused function close_socket() 2017-08-10 19:47:57 +02:00
Max Kellermann
9ff4717738 system/fd_util: remove unused function accept_cloexec_nonblock() 2017-08-10 19:47:40 +02:00
Max Kellermann
0c1740982d system/fd_util: remove unused function open_cloexec() 2017-08-10 19:46:23 +02:00
Max Kellermann
3c7c0515d8 output/oss: use class FileDescriptor 2017-08-10 19:42:23 +02:00
Max Kellermann
56cb92fdaf mixer/oss: use class FileDescriptor 2017-08-10 19:41:22 +02:00
Max Kellermann
c00b6ff999 fs/FileSystem: use UniqueFileDescriptor in TruncateFile() 2017-08-10 19:40:47 +02:00
Max Kellermann
df5cc3f0f6 fs/FileSystem: OpenFile() returns UniqueFileDescriptor 2017-08-10 19:34:52 +02:00
Max Kellermann
eb0ff32efb system/FileDescriptor: add Open() overload with wchar_t path 2017-08-10 19:34:52 +02:00
Max Kellermann
cf0120e8e0 net/SocketUtil: use SocketDescriptor::SetBoolOption() 2017-08-10 19:30:46 +02:00
Max Kellermann
1f47dc990d net/SocketDescriptor: add method SetKeepAlive() 2017-08-10 19:25:02 +02:00
Max Kellermann
9a5bcc6db0 net/ServerSocket: pass UniqueSocketDescriptor&& to OnAccept() 2017-08-10 19:20:14 +02:00
Max Kellermann
492b20a89d event/SocketMonitor: use class SocketDescriptor 2017-08-10 19:19:58 +02:00
Max Kellermann
fcfc8bacc0 output/httpd: remove obsolete accept() error check 2017-08-10 19:19:53 +02:00
Max Kellermann
0800d9427c system/fd_util: remove unused function socket_cloexec_nonblock() 2017-08-10 17:40:14 +02:00
Max Kellermann
4e113a7086 lib/nfs/Connection: use class SocketDescriptor 2017-08-10 17:37:19 +02:00
Max Kellermann
39f422ded8 net/SocketDescriptor: allow constructing with "int" 2017-08-10 17:37:08 +02:00
Max Kellermann
d2cdaa041c net/SocketDescriptor: SO_REUSEADDR is portable 2017-08-10 13:23:14 +02:00
Max Kellermann
d84dae488e net/SocketUtil: fix -Wunused 2017-08-10 13:22:00 +02:00
Max Kellermann
79e75bfbb9 net/SocketDescriptor: cast setsockopt() value to "const char *" for Windows 2017-08-10 13:21:24 +02:00
Max Kellermann
73b15c1bee net/SocketDescriptor: socketpair() is unavailable on Windows 2017-08-10 13:19:47 +02:00
Max Kellermann
b180604422 net/SocketDescriptor: implement SetNonBlocking() on Windows 2017-08-10 13:18:23 +02:00
Max Kellermann
fab12ef241 net/SocketDescriptor: call SetNonBlocking() on Linux if SOCK_NONBLOCK unavailable 2017-08-10 13:16:25 +02:00
Max Kellermann
917881aa48 net/SocketDescriptors: IsValid() is not available on Windows 2017-08-10 13:15:57 +02:00
Max Kellermann
9259e989a4 net/SocketDescriptors: fix includes for Windows 2017-08-10 13:13:19 +02:00
Max Kellermann
da90f484aa net/SocketUtil: socket_bind_listen() returns UniqueSocketDescriptor 2017-08-10 13:12:13 +02:00
Max Kellermann
817e912025 net/SocketDescriptor: specialization of FileDescriptor for network sockets 2017-08-10 13:12:13 +02:00
Max Kellermann
7f83d38bca net/StaticSocketAddress: add struct sockaddr cast operators 2017-08-10 13:12:13 +02:00
Max Kellermann
54de8b8e77 net/*, ...: use AF_LOCAL instead of AF_UNIX 2017-08-10 13:12:13 +02:00
Max Kellermann
796956970e net/StaticSocketAddress: pass SocketAddress by value to operator!= 2017-08-10 13:12:13 +02:00
Max Kellermann
c0020142da net/StaticSocketAddress: add method SetMaxSize() 2017-08-10 13:12:13 +02:00
Max Kellermann
ee6eea95af net/StaticSocketAddress: set a valid size in Clear() 2017-08-10 13:12:13 +02:00
Max Kellermann
a257504ba4 mixer/Plugin: pass AudioOutput to init()
Fix breakage from commit bea5681fd8
2017-08-10 13:07:36 +02:00
Max Kellermann
fb0dbce15b system/EventFD: use class UniqueFileDescriptor 2017-08-10 12:14:56 +02:00
Max Kellermann
8333551331 system/SignalFD: use class UniqueFileDescriptor 2017-08-10 12:13:41 +02:00
Max Kellermann
292d794806 system/UniqueFileDescriptor: new auto-closing FileDescriptor wrapper 2017-08-10 12:01:17 +02:00
Max Kellermann
91ce76af9d system/FileDescriptor: add methods EnableCloseOnExec(), DisableCloseOnExec() 2017-08-10 11:54:26 +02:00
Max Kellermann
33bd9e80bb system/FileDescriptor: add method IsReadyForWriting() 2017-08-10 11:53:43 +02:00
Max Kellermann
d310f3e9b7 system/FileDescriptor: add method IsValid() 2017-08-10 11:52:22 +02:00
Max Kellermann
8c832f4c50 system/FileDescriptor: use std::exchange() 2017-08-10 09:55:11 +02:00
Max Kellermann
31bad5f7af output/Interface: convert to abstract class
Yet another C-style vtable replaced with C++.
2017-08-10 09:01:41 +02:00
Max Kellermann
1cf7f3d87c output/Solaris: use class FileDescriptor 2017-08-10 08:56:56 +02:00
Max Kellermann
9c9a9ccd5c output/Interface: convert to class, make attributes private 2017-08-09 17:03:07 +02:00
Max Kellermann
7381236de6 output/Interface: remove unused attribute "parent" 2017-08-09 17:03:00 +02:00
Max Kellermann
fe9ffcb9d2 Merge branch 'v0.20.x' 2017-08-08 19:30:30 +02:00
Max Kellermann
bea5681fd8 output/Interface: define a new struct AudioOutput
Hide struct FilteredAudioOutput from the plugins, preparing for hiding
MPD's core internals.
2017-08-08 18:58:40 +02:00
Max Kellermann
e11229494e output/Filtered: add method NeedFullyDefinedAudioFormat()
Avoid accessing FilteredAudioFormat attributes directly.
2017-08-08 18:57:59 +02:00
Max Kellermann
ccc0fcb5b7 output/Shout: move ConfigureShoutAudioInfo() call to Open()
Configure the AudioFormat after opening the encoder, because only now
we know the final format.
2017-08-08 18:56:14 +02:00
Max Kellermann
6e24381962 output/Shout: move code to ShoutSetAudioInfo() 2017-08-08 18:56:12 +02:00
Max Kellermann
3ab905644d output/Shout: open the encoder first, then open connection
This order will be necessary for proper AudioFormat initialization,
because the encoder may change the format.
2017-08-08 18:53:04 +02:00
Max Kellermann
f46d545307 output/Shout: pass shout_t* to shout_connect() 2017-08-08 18:52:03 +02:00
Max Kellermann
8134b0073b output/Shout: move write_page() into the struct 2017-08-08 18:47:37 +02:00
Max Kellermann
6ab19c7ef2 output/Shout: pass shout_t* to handle_shout_error() 2017-08-08 18:47:30 +02:00
Max Kellermann
d22361f7c7 output/Shout: remove unnecessary nullptr check 2017-08-08 18:47:02 +02:00