Commit Graph

17942 Commits

Author SHA1 Message Date
Max Kellermann 6c48f5ac63 tag/Pool: use std::array 2023-09-06 15:10:47 +02:00
Max Kellermann 1448f52eac util/VarSize: convert static_assert to concept check 2023-09-06 15:05:26 +02:00
Max Kellermann c96e8ab47c db/simple/DirectorySave: optimize duplicate checks with std::set
This reduces the CPU usage for loading a large database by more than 50%.
2023-09-06 14:56:41 +02:00
Max Kellermann 2c4ef4460f db/update/SpecialDirectory: more std::string_view migration 2023-09-06 14:51:37 +02:00
Max Kellermann 20bbe1b57b fs/Traits: add GetFilenameSuffix() overload with std::string_view 2023-09-06 14:50:36 +02:00
Max Kellermann 449d59af2f db/simple/Directory: use operator== to compare strings 2023-09-06 14:30:08 +02:00
Max Kellermann 851136e6fd db/simple/Directory: GetName() returns std::string_view 2023-09-06 14:29:32 +02:00
Max Kellermann ad854e9867 db/simple/Save: initialize array without memset() 2023-09-06 14:17:07 +02:00
naglis 046a385070 doc/user.rst: use explicit meson setup command
The implicit setup command is deprecated since 0.64.0
2023-08-24 13:57:03 +03: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