Commit Graph

12953 Commits

Author SHA1 Message Date
Max Kellermann 0066f7a818 util/{Const,Writable}Buffer: add constructor with two pointers 2018-01-16 11:06:33 +01:00
Max Kellermann 65059f2add util/{Const,Writable}Buffer: eliminate static method Null(), use nullptr cast instead 2018-01-16 11:04:51 +01:00
Max Kellermann 23dff4f209 util/OptionParser: use ConstBuffer<const char*> to store argv/argc 2018-01-16 10:22:06 +01:00
Max Kellermann 4a304bf34e util/OptionParser: make string pointers "const" 2018-01-16 10:20:53 +01:00
Max Kellermann 36a6405e8b util/OptionParser: add "constexpr" 2018-01-16 10:20:52 +01:00
Max Kellermann 42c1fe963b util/OptionParser: add "noexcept" 2018-01-16 10:13:39 +01:00
Max Kellermann 465b154fc0 util/OptionParser: use C++11 initializers 2018-01-16 10:12:48 +01:00
Max Kellermann a0c4102b5a util/OptionDef: add "constexpr" 2018-01-16 10:11:35 +01:00
Max Kellermann 9420066895 input/qobuz: new input plugin to receive Qobuz streams 2018-01-15 21:50:20 +01:00
Max Kellermann 74eac1d449 lib/curl/Request: add constructor without "url" parameter
Allows constructing the request first and set the URL later.  This is
needed because curl_easy_escape() is needed to construct the URL,
which however needs the CURL "easy" handle created by the Request class.
2018-01-15 10:36:48 +01:00
Max Kellermann 96676f8f3b Merge branch 'v0.20.x' 2018-01-15 09:06:31 +01:00
Max Kellermann 93b51d56aa input/tidal: new input plugin to receive Tidal streams 2018-01-12 14:33:22 +01:00
Max Kellermann 86c50574d2 lib/yajl/Callbacks: add wrappers for start_array and end_array 2018-01-12 14:33:22 +01:00
Max Kellermann efb528f979 player/Thread: wake up the decoder when the pipe has run empty
This is another instance of the kludge we already have a few lines
above that.  It works around a deadlock/race condition revealed by
commit 98a7c62d7a
2018-01-12 14:33:22 +01:00
Max Kellermann edcd0b9913 lib/curl/Request: add methods StartIndirect(), StopIndirect() 2018-01-11 20:51:23 +01:00
Max Kellermann 55d1473918 lib/yajl/Callbacks: OO wrapper for yajl_callbacks 2018-01-11 20:25:17 +01:00
Max Kellermann 0211c7f7f3 lib/yajl/ParseInputStream: use InputStream::LockRead() to reduce lock duration 2018-01-11 20:11:04 +01:00
Max Kellermann 5913994169 lib/yajl/ParseInputStream: eliminate variable "done" 2018-01-11 20:09:52 +01:00
Max Kellermann 26b1573cbe playlist/SoundCloud: move code to Yajl::Parse(InputStream&) 2018-01-11 20:08:02 +01:00
Max Kellermann 7fe07324d7 playlist/SoundCloud: soundcloud_parse_json() throws exception 2018-01-11 20:08:01 +01:00
Max Kellermann 8e29430f21 lib/yajl/Handle: libyajl C++ bindings 2018-01-11 19:25:46 +01:00
Max Kellermann 326488aeeb configure.ac: decouple libyajl detection from SoundCloud
Allow using libyajl in other parts of MPD.
2018-01-11 19:13:19 +01:00
Max Kellermann cb86023bd7 lib/curl/Form: new library 2018-01-11 17:27:25 +01:00
Max Kellermann bd2cb40424 lib/curl/Easy: add curl_easy_escape() wrapper 2018-01-11 17:27:25 +01:00
Max Kellermann e9a3ff0e70 input/failing: new class 2018-01-11 16:18:15 +01:00
Max Kellermann 5148e229e0 input/proxy: allow input==nullptr
Allow implementations to install the "real" input later.
2018-01-11 15:57:57 +01:00
Max Kellermann 1ad21c27c9 input/curl: add public function to construct an instance 2018-01-11 15:53:46 +01:00
Max Kellermann f392e13077 input/curl: pass additional request headers to constructor
Prepare to allow callers to pass custom request headers.
2018-01-11 15:43:59 +01:00
Max Kellermann 3fe5b42b2b input/curl: pass IcyMetaDataParser to constructor
Allows the caller to decide whether to enable the feature.
2018-01-11 15:32:19 +01:00
Max Kellermann 70c4b621cf input/curl: remove impossible "icy" checks
The IcyMetaDataParser cannot be initialized already in OnHeaders(),
because it will be initialized late in that method; and there will not
be another OnHeaders() call, because streams with Icy metadata are not
seekable, thus there will not be another HTTP request.
2018-01-11 14:55:29 +01:00
Max Kellermann a8df5e109b input/curl: use StringView::StartsWith() 2018-01-11 14:52:35 +01:00
Max Kellermann ba4f1da466 input/curl: create the request_headers list only once 2018-01-11 12:49:01 +01:00
Max Kellermann 0bfbe6771e input/curl: un-inline constructor 2018-01-11 12:46:52 +01:00
Max Kellermann d1df0fec19 input/curl: add "noexcept" 2018-01-11 12:36:31 +01:00
Max Kellermann 031ccce8b7 input/curl: convert struct to class 2018-01-11 12:31:29 +01:00
Max Kellermann 1f50bdb230 event/Loop: use std::atomic_bool for the "quit" variable
Fixes thread sanitizer warnings.
2018-01-08 10:06:23 +01:00
Max Kellermann 2eef4e6716 thread/Thread: add debug attribute "inside_handle"
This attribute shall be used only for IsInside() to make this safe
against a race condition described in #188:

> There is no requirement on the implementation that the ID of the
> created thread be available before the newly created thread starts
> executing.

http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_create.html):

This means that on some pthread implementations (e.g. Haiku), the
assert(thread.IsInside()) could fail.

Closes #188
2018-01-08 09:58:18 +01:00
Max Kellermann d989dbfec4 thread/Thread: make IsInside() debug-only
This method is only used inside assert().
2018-01-08 09:56:39 +01:00
Max Kellermann ca9fcec364 thread/Thread: fix indent 2018-01-08 09:49:08 +01:00
Max Kellermann 34eef0ed84 Merge branch 'v0.20.x' 2018-01-07 17:24:05 +01:00
Max Kellermann 354104f9a9 thread/{Thread,Id}: use defaul-initialized pthread_t as "undefined" value
Use the "==" operator instead of pthread_equal().

This allows us to eliminate two boolean flags which are there to avoid
race conditions, and made the thing so fragile that I got tons of
(correct) thread sanitizer warnings.
2018-01-07 17:20:26 +01:00
Max Kellermann 8649ea3d6f thread/Thread: use BoundMethod 2018-01-07 17:20:26 +01:00
Max Kellermann 752ff12c37 thread/Thread: move code to Run() 2018-01-07 17:20:26 +01:00
Max Kellermann 4bb89b1755 MusicPipe: lock the mutex in Peek() and GetSize() 2018-01-07 17:20:22 +01:00
Max Kellermann be068f360d Merge remote-tracking branches 'mmuman/configure-sockaddr-sin-len' and 'mmuman/haiku-build-fix' 2018-01-06 13:19:58 +01:00
Max Kellermann 0ef553d30e increment version number to 0.20.16 2018-01-06 13:15:47 +01:00
François Revol 5b18b66282 Haiku: fix build
Convert the fill_buffer to a class method, to allow accessing the private method.

Also remove the leftover Wrapper stuff.
2018-01-05 23:10:58 +01:00
François Revol 7b2283c28b configure.ac: autodetect sin_len member in struct sockaddr_in.
This fixes a build issue on Haiku as it does have sin_len.
Tested on Linux as well.

For some reason AC_CHECK_MEMBER doesn't generate the proper define
in config.h.in, so I used AC_CHECK_MEMBERS.
2018-01-05 22:20:47 +01:00
Max Kellermann c74e018359 Merge branch 'v0.20.x' 2018-01-05 18:11:04 +01:00
Max Kellermann 43a62aef07 android: release 0.20.15 2018-01-05 18:09:56 +01:00