Max Kellermann
898e0a2bc4
test/playlist: unit tests for the playlist plugins
...
Only "pls" for now.
2025-03-10 18:35:20 +01:00
Max Kellermann
2d3271859f
input/memory: new implementation (for unit tests)
2025-03-10 18:17:33 +01:00
Max Kellermann
b6672004bc
util/StringCompare: add SkipPrefixIgnoreCase()
2025-03-10 18:17:33 +01:00
Max Kellermann
eafca183a6
input/meson.build: add libinput_basic.a
...
This is the middle ground between libinput_api.a (the raw API) and
libinput_glue.a (dependencies on all plugins).
2025-03-10 17:13:51 +01:00
Max Kellermann
59f9e0ca70
input/meson.build: do not compile ProxyInputStream.cxx twice
2025-03-10 17:11:12 +01:00
Max Kellermann
800a03f0dc
playlist/plugins/meson.build: add missing dependencies
2025-03-10 14:33:41 +01:00
Max Kellermann
55c11448ff
util/NumberParser: add ParseIntegerTo()
...
An version of the function without the `std::optional` overhead.
2025-03-10 14:04:50 +01:00
Max Kellermann
e9c1ea684b
util/NumberParser: add std::from_chars() wrapper taking std::string_view
2025-03-10 14:04:50 +01:00
Max Kellermann
103487e8ad
event/InotifyEvent: add method IsDefined()
2025-03-10 14:04:50 +01:00
Max Kellermann
fb59bbc481
python/build/libs.py: update FFmpeg to 7.1.1
2025-03-10 14:04:50 +01:00
Max Kellermann
d0f6aa5b87
subprojects: update libnpupnp to 6.2.1-1
2025-03-10 14:04:12 +01:00
Max Kellermann
fdb8874803
python/build/libs.py: update libnfs to 6.0.2
2025-02-28 19:47:57 +01:00
Max Kellermann
c9a22b3404
meson.build: disable unnecessary libsndfile features
2025-02-28 19:41:19 +01:00
Max Kellermann
fc5d10b776
subprojects: add libsndfile.wrap
2025-02-28 19:37:17 +01:00
Max Kellermann
4cefb30dd9
decoder/flac: ignore FLAC__STREAM_DECODER_END_OF_LINK (FLAC 1.5)
...
Fixes -Wswitch compiler warning when building with FLAC 1.5.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2219
2025-02-28 10:32:47 +01:00
Max Kellermann
36482f5e6a
subprojects: update gtest to 1.15.2-2
2025-02-28 09:59:07 +01:00
Jochen Sprickerhof
d822685c53
config/File: support resetting repeatable params
...
This allows resetting bind_to_address to override the default value in a
included config.
2025-02-21 13:52:44 +01:00
Max Kellermann
9d87fb5e09
subprojects: update sqlite3 to 3.49.1-1
2025-02-20 13:59:06 +01:00
Max Kellermann
85014b5fa2
event/Loop: move code to Wait()
2025-02-13 16:54:36 +01:00
Max Kellermann
aff929dbd6
event/Loop: rename Wait() to Poll()
...
Preparing to have another Wait() method wrapping Poll() and io_uring.
2025-02-13 16:53:49 +01:00
Max Kellermann
dda85e02bf
io/Open: add TryOpen(struct open_how), Open(struct open_how)
2025-02-13 16:09:12 +01:00
Max Kellermann
5b393052ee
event/Loop: pass timeout=nullptr to io_uring if there is no timer
2025-02-13 16:04:07 +01:00
Max Kellermann
624da8ce5b
event/Loop: use io_uring_prep_poll_multishot() on the epoll fd
...
This wraps epoll and io_uring the other way: previously, we had the
io_uring file descriptor registered in epoll and when it became ready,
we could query its completion ring. The problem is that the poll
wakeups cause considerable overhead in the Linux kernel, see
https://lore.kernel.org/io-uring/20250128133927.3989681-9-max.kellermann@ionos.com/
By wrapping epoll inside io_uring using
io_uring_prep_poll_multishot(), the "outer" loop is io_uring and
inside it, we have epoll. This adds another system call for epoll,
but that will go away as soon as most operations are going through
io_uring. Previously, io_uring had this extra system call.
2025-02-13 16:02:40 +01:00
Max Kellermann
bca9e3e347
io/uring/Queue: dispatch all completions in SubmitAndWaitDispatchOneCompletion()
...
io_uring_submit_and_wait_timeout() can return multiple completions,
even if we wait for only one. We should dispatch them all or we miss
wakeups.
2025-02-13 14:53:30 +01:00
Max Kellermann
2276ebd70f
io/uring/Queue: add DispatchCompletions() overload using io_uring_for_each_cqe()
2025-02-13 14:53:24 +01:00
Max Kellermann
a9bee1c64b
io/uring/Ring: add io_uring_for_each_cqe() wrapper
2025-02-13 14:53:17 +01:00
Max Kellermann
c8e88408b2
io/uring/Ring: ignore EINTR
2025-02-13 14:53:11 +01:00
Max Kellermann
45644759fe
io/uring/CancellableOperation: invoke OnUringCompletion() in destructor
...
This is important for operations that have complex cancellation
procedures (e.g. if they need to free buffers). They might leave an
Operation instance in the queue.
2025-02-13 14:52:52 +01:00
Max Kellermann
e014d31972
io/uring/Ring: add io_uring_submit_and_wait_timeout() wrapper
2025-02-13 14:52:37 +01:00
Max Kellermann
b7655d38f7
io/uring/Queue: support IORING_CQE_F_MORE
2025-02-13 14:52:30 +01:00
Max Kellermann
268f737ac4
meson.build: suppress -Wmissing-field-initializers
...
There's nothing wrong with initializing only some fields.
2025-02-13 14:21:38 +01:00
Max Kellermann
80ff0a062a
system/EpollFD: add method GetFileDescriptor()
2025-02-13 14:19:28 +01:00
Max Kellermann
24bcf44a47
subprojects: update sqlite to 3.49.0-1
2025-02-13 14:12:53 +01:00
gd
f1e43cb498
android: Loader - load early (before service thread) both in activity and service.
...
Loader converted from java to kotlin.
Instead of loading libmpd when the service thread is started,
the service will not start the the thread if libmpd failed to load.
The loader is also accessed by the view data to let
the ui adjust if failed to load, by showing the failure reason
and disabling the Start MPD button.
2025-02-06 14:23:26 +02:00
gd
ae1c5e3424
android: build.gradle - added build flavor "fail-test" to test System.loadLibrary("mpd") failure
2025-02-06 14:11:06 +02:00
gd
9eb5879542
android: IntentUtils - added license comment
2025-02-06 14:06:53 +02:00
gd
038759506f
android: added 'universal' flavor that includes both both arm64-v8a and x86_64 versions of libmpd.so
2025-02-05 20:31:43 +02:00
gd
2bf9fdf10e
android: migrated build to version catalogs
...
For easier management of dependencies versions: https://developer.android.com/build/migrate-to-catalogs
2025-02-05 20:15:58 +02:00
gd
0bf77f4eb3
android: converted Main from java to kotlin
2025-02-05 11:20:39 +02:00
gd
034bcf4f44
android: added product flavors to separatly build apk for arm64-v8a or x86_64
2025-02-04 10:23:26 +02:00
gd
834d6dcf46
android: build version of kotlin and compose updated.
...
Changed to compatible versions according to https://developer.android.com/jetpack/androidx/releases/compose-kotlin#kts
2025-02-04 10:22:57 +02:00
gd
8a642c8a83
android: MainScreen - use Icons.AutoMirrored.Filled.List instead of deprecated Icons.Default.List
2025-02-04 10:22:57 +02:00
gd
fe42ad2439
android: .gitignore - added previously misspelled app/src/main/jniLibs/
2025-02-04 10:22:57 +02:00
gd
51242be72b
android: changed permissions handling UI in status screen when show rationale is false
...
Android will ignore permission request and will not show the request dialog
if the user's action implies "don't ask again."
This leaves the app in a crippled state and the user confused.
Google says "don't try to convince the user", so it returns false for `shouldShowRequestPermissionRationale`.
To help the user proceed, we show the `Request permission` button only if `shouldShowRequestPermissionRationale == true`
because there's a good chance the premission request dialog will not be ignored.
If `shouldShowRequestPermissionRationale == false` we instead show the "rationale" message and a button to open
the app info dialog where the user can explicitly grand the permission.
2025-02-04 10:22:57 +02:00
gd
cb62aff43e
android: added missing package declaration in SettingsScreen.kt
2025-02-04 10:22:57 +02:00
gd
491e726540
android: manifest - added sdk version to legacy permission READ_EXTERNAL_STORAGE, added permission READ_MEDIA_AUDIO
...
Change fo r SDK version 33 and above
2025-02-04 10:22:57 +02:00
gd
7404be41dc
android: git ignoring .idea directory completely until a good reason emerges not to
2025-02-04 10:22:57 +02:00
Camille Scholtz
b8289ae923
input/meson.build: Add missing dependency
2025-02-03 23:07:58 +01:00
Max Kellermann
6b92b7adb9
util/PacketBigEndian: add operator|
2025-02-01 19:30:17 +01:00
Max Kellermann
00a352ffcd
event/Loop: explicit io_uring initialization
...
Log the io_uring initialization error at MPD startup.
2025-02-01 19:20:50 +01:00