Commit Graph

18335 Commits

Author SHA1 Message Date
jcorporation 9a28176d72 Save consume and single oneshot as string
Consume and single oneshot should be saved as string.

closes #1853
2023-08-07 23:23:08 +02:00
Max Kellermann ba2df05fb4 lib/zlib/GzipOutputStream: add `noexcept` 2023-08-03 20:58:43 +02:00
Max Kellermann 8722c51306 lib/dbus/AppendIter: add Append(int32_t), Append(int64_t) 2023-08-03 20:58:01 +02:00
Max Kellermann 80104eb6d5 util/IntrusiveList: fix illegal downcast (ubsan)
Fixes UBSanitizer warning:

 src/util/IntrusiveList.hxx:108:10: runtime error: downcast of address 0xdeadbeef which does not point to an object of type 'Foo'
2023-08-03 20:56:34 +02:00
Max Kellermann 8743326924 sticker/Database: allow moving 2023-08-03 20:54:57 +02:00
Max Kellermann 83a6cb804b util/IntrusiveHashSet: add template argument `GetKey`
This is a big simplification of all IntrusiveHashSet users: instead of
having to implement multiple overloads of Hash and Equal, the
IntrusiveHashSet class can first extract the effective key from an
item and then pass it to the Hash/Equal functions.
2023-08-03 20:50:21 +02:00
Max Kellermann 78801f303e test/util/TestIntrusiveHashSet: add test for remove_and_dispose_key() 2023-08-03 20:44:52 +02:00
Max Kellermann 9691b609a2 util/IntrusiveHashSet: remove_and_dispose() returns number of removed elements 2023-08-03 20:44:47 +02:00
Max Kellermann 250fa8c732 util/IntrusiveHashSet: rename remove_and_dispose() to remove_and_dispose_key() 2023-08-03 20:44:39 +02:00
Max Kellermann 2cd5f4cd3e util/IntrusiveHashSet: replace template parameters Hash/Equal with a single one
Preparing to add a key extraction function.  Without this "Operators"
template parameter, we'd have even more template parameters, and that
parameter list would grow too complex.  Better wrap it in one single
template that contains all operators.

This is an API change which all callers need to adjust to, but it will
be worth it.
2023-08-03 20:44:14 +02:00
Max Kellermann dcd7c6337c util/Intrusive{List,HashSet}: reimplement hook mode detection with implicit cast 2023-08-03 20:33:15 +02:00
Max Kellermann 43d633f560 Instance: use C++11 initializers 2023-07-23 09:14:25 +02:00
Max Kellermann 1c37b0487c lib/fmt/SystemError: add VFmtErrno() 2023-07-21 19:44:45 +02:00
Max Kellermann acc92b156b util/Concepts: remove obsolete fallbacks 2023-07-21 19:43:04 +02:00
Max Kellermann aeadae5399 util/IntrusiveHashSet: insert_check() returns the bucket head on success
The list head is a stable value that is guaranteed to be still valid
when insert_commit() gets called.

This fixes a linked list corruption bug in class StaticCache which
occurs when the cache item pointed to by the iterator gets evicted
between insert_check() and insert_commit().
2023-07-21 19:42:35 +02:00
Max Kellermann 42d5b05f54 util/IntrusiveHashSet: rename insert() to insert_commit()
Clarify that the method is not a freestanding insertion method but
should only be used after insert_check().
2023-07-21 19:42:26 +02:00
Max Kellermann e133f621a4 util/IntrusiveHashSet: add insert_check() documentation 2023-07-21 19:41:46 +02:00
Max Kellermann 91437d9e63 util/IntrusiveList: add insert_after() 2023-07-21 19:41:40 +02:00
Max Kellermann f1b497fb0c util/IntrusiveList: document insert() 2023-07-21 19:41:36 +02:00
Max Kellermann cc9d061e51 util/IntrusiveList: pop_front() and pop_back() return reference 2023-07-21 19:41:13 +02:00
Max Kellermann 62ee9a4d60 util/DynamicFifoBuffer: use `T` instead of `std::byte`
Mistake added by commit b528b467649754
2023-07-21 19:40:38 +02:00
jcorporation 082f72dd20 Add support of TAG_MUSICBRAINZ_RELEASEGROUPID
Closes #1767
2023-07-12 19:43:37 +02:00
Max Kellermann 9c19368fc7 Merge branch 'v0.23.x' 2023-06-02 14:36:02 +02:00
Simon Arlott 561d6fd478 meson: Use correct prefix for systemd_system_unit_dir
systemd uses "rootprefix", not "prefix" for this value

059b1b31ad/src/core/systemd.pc.in (L23)
2023-06-02 14:33:13 +02:00
Naïm Favier 42a01822bf meson: use correct prefix for systemd dirs
See https://www.bassi.io/articles/2018/03/15/pkg-config-and-paths/

Fixes the build in nixpkgs
2023-06-02 14:33:09 +02:00
Shen-Ta Hsieh 38f1237d49 output/wasapi: cast to `const char *` for fmt 10 compatible 2023-06-02 14:29:43 +02:00
Shen-Ta Hsieh 8df77122e5 python/build/libs.py: use right cmake variable to disable SDL 2023-06-02 14:28:22 +02:00
Shen-Ta Hsieh fef6b9df80 flac: Try `InputStream` interface if flac failed to read through a `wchar_t` path 2023-06-02 14:28:22 +02:00
Shen-Ta Hsieh d52eac66db doc/mpdconf.example: add hardware mixer example config for wasapi 2023-06-02 14:27:24 +02:00
Shen-Ta Hsieh 70879f0abc thread/WindowsFuture: remove wrong address_of operator 2023-06-02 14:27:24 +02:00
Shen-Ta Hsieh bcb393628e win32/ComWorker: rename variable name to prevent ambiguous 2023-06-02 14:22:11 +02:00
Max Kellermann 18d3a5c12b decoder/flac: add `noexcept` and `inline` 2023-06-02 14:22:11 +02:00
Simon Arlott 6ee3d0102b decoder/mad: Fix decode of LAME peak value
6d91b5c7b2 ("fix double promotions") changed
how LAME peak values are decoded, producing large incorrect values that
cause some MP3 files to play silently.

Restore the original decode from MAD fixed-point format to double and
document what it's doing.

Fixes #1823
2023-06-02 14:15:48 +02:00
Max Kellermann fc9626e2f4 increment version number to 0.23.14 2023-06-02 14:15:14 +02:00
Simon Arlott 3bedd94fc8 doc: Fix syntax error
With sphinx-build 5.0.0:
doc/user.rst:728: ERROR: Unexpected indentation.
doc/user.rst:731: ERROR: Unexpected indentation.
2023-06-02 14:10:38 +02:00
Max Kellermann 45f81cde6d Merge branch 'null-always-off' of https://github.com/nomis/MPD 2023-05-25 10:42:58 +02:00
John Regan a482c798ad pcm: declare IsSilentSample as const
GNU libstdc++ declares cmath functions as constexpr, but libc++ does
not. The C++ standards state the standard library functions should not
be declared constexpr unless explicitly required.
2023-05-24 15:05:19 -04:00
Naïm Favier 838af929a0
meson: use correct prefix for systemd dirs
See https://www.bassi.io/articles/2018/03/15/pkg-config-and-paths/

Fixes the build in nixpkgs
2023-05-22 22:23:38 +02:00
Max Kellermann d9b1f6223e io/uring/Close: wrapper for io_uring_prep_close() 2023-05-22 21:59:44 +02:00
Max Kellermann 26577d1301 io/uring/Queue: make Submit() virtual, Push() not
This allows submitting io_uring calls without an `Operation` instance
(fire & forget).  We'll do that for close().
2023-05-22 21:57:18 +02:00
Max Kellermann 6496c1b806 util/ScopeExit: convert the function from base class to member
This allows using `final` callables.
2023-05-22 21:20:49 +02:00
Max Kellermann 7bb251dad8 db/update/Walk: use marker to remove deleted items
This eliminates all `Storage::GetInfo()` calls from
`UpdateWalk::PurgeDeletedFromDirectory()` and instead uses a "marker"
field to mark items that have been visited; later, all unmarked items
can be deleted.

This eliminates a lot of redundant I/O which is noticable with the
`curl` storage plugin (i.e. WebDAV).
2023-05-22 20:13:01 +02:00
Max Kellermann 9027e5c5bb release v0.23.13
-----BEGIN PGP SIGNATURE-----
 
 iQJBBAABCgArFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmRrqn4NHG1heEBibGFy
 Zy5kZQAKCRAjbopYxttFErXiD/9QIaeO5d+U7BJK1yGkQgu5vHo4Pm34ewP8LTxs
 K2MYxQQ2jZc7PXqi5Z04wmUw8ymq1BVA2D0ytMdl1Ejcbrste7UrP+1TuD8L9JBj
 WCE+4otNVYDpx1PB32BN+gxCmJqiFtAQS+eMIz/SXdEXZ9sJvIgYRRkSiSFd0WHM
 dT3OeeZ0V8cANbXpgI+RLghRGkVdpZJo4uXh3c0OHog1fjEBWPw6+7tH/mkotM0n
 /hQjI5j14wnzZuIpkDR1kuzvGYmxJKG6LkuUqcm1WexNFbxMqDSbAlXeCmzJn7eK
 NQvtROOGNjQ84thxRPLlDlYa6vbxoTqdYgZsVHzsQZWejhqw8zsPsF+Ea0A4tkLd
 UKDQFTphZMVqx74+1u7IjQyW7x+k02iXWLwH2IheEl+BJhvEB7zEflN9TR81jek4
 RrGx7jcTArdpt7okAe2ONkHvTYtIpaK5E2voza8K4TGOMzpkVlOkyvJ+rpn8CDRf
 w0faVvmCQdSrgHKfwUUY8Z47a7d+kkKpFLlvvzNoDV8drQXfgIj5t9HOLATSVVux
 l2pbgauXFsKyd4IsByXj+m8cBSvmy2C4eLJCsmguiZEvcobdJtzwOr4KuwQDjBsC
 8HW0BD0t9S1dSL59vJdMG+CfK/QU5rmAIkxdydD42uo9UmSS78xw1uQgi9oDaPa8
 XNCGdQ==
 =nOGh
 -----END PGP SIGNATURE-----

Merge tag 'v0.23.13'

release v0.23.13
2023-05-22 19:52:08 +02:00
Max Kellermann 8842650c33 release v0.23.13 2023-05-22 19:46:38 +02:00
Max Kellermann d5bf128cee storage/curl: throw HttpStatusError 2023-05-22 19:29:46 +02:00
Max Kellermann 5cd86e272f input/curl: disable `CURLOPT_FAILONERROR`
Let OnHeaders() check the status.

The status checking code was added by commit 4f021cbced in 2011,
but in 2008, commit a8e81326d0 enabled `CURLOPT_FAILONERROR`, which
means the status checking code never had any effect.

This allows `LoadExcludeListOrLog()` to hide boring "404 Not Found"
log messages via `IsFileNotFound()`.
2023-05-22 19:03:12 +02:00
Max Kellermann 740cbe9e02 event/Loop: remove failing assert()
The `assert(!quit)` can fail if the `EventThread` gets stopped before
it enters `EventLoop::Run()`. There is a similar problem with `alive`,
which gets reset by `EventThread::Stop()`.

If that happens, then `EventLoop::Run()` should return immediately
without handling any events.
2023-05-22 18:14:25 +02:00
Max Kellermann ed890a273a doc/user.rst: document the `replaygain_missing_preamp` setting
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1785
2023-05-22 16:17:05 +02:00
Max Kellermann 068cd559e1 db/update/Walk: clear `Song::in_playlist`
Without clearing all `in_playlist` flags, the songs will never be
revealed again if they were hidden once by a CUE sheet, not even after
the CUE sheet gets deleted or modified.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1784
2023-05-22 15:41:58 +02:00
Max Kellermann dc127f39a7 util/ScopeExit: use std::declval()
Fixes GCC 10 error:

 error: cannot call member function `Foo` without object
2023-05-22 15:01:25 +02:00