Max Kellermann
38d8359384
test/LoadDatabase: new test program (for benchmarking the database loader)
2023-09-06 16:17:24 +02:00
Max Kellermann
2c01e79b47
SongSave: omit FixTagString() for strings from the database file
...
Strings in the database should have been sanitized already, so let's
not waste CPU on this.
2023-09-06 16:12:20 +02:00
Max Kellermann
a573d57de8
tag/Builder: remove unnecessary explicit AddItem() overload
2023-09-06 16:10:31 +02:00
Max Kellermann
2f4e2935a3
db/upnp, playlist/pls: use AddItem(std::string_view)
2023-09-06 16:08:42 +02:00
Max Kellermann
44beae519d
tag/Pool: use doubly-linked list
...
This adds some memory overhead but eliminates the linear search from
tag_pool_put_item().
2023-09-06 16:00:25 +02:00
Max Kellermann
b896711fc6
tag/Pool: fix crash in tag_pool_put_item()
...
Regression by commit 76bdfabcc5
2023-09-06 15:53:17 +02:00
Max Kellermann
76bdfabcc5
tag/Pool: use class IntrusiveForwardList
2023-09-06 15:33:26 +02:00
Max Kellermann
b35e8a588f
util/IntrusiveForwardList: add operator++(int)
2023-09-06 15:31:07 +02:00
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
dependabot[bot]
f53dde970f
build(deps): bump actions/checkout from 3 to 4
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 15:51:28 +00: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
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