Commit Graph

18762 Commits

Author SHA1 Message Date
Max Kellermann c29d23b4c3 input/thread: use notify_one() instead of notify_all()
There's only ever one waiter, and notify_one() may be faster than
notify_all().
2024-07-29 23:09:07 +02:00
Max Kellermann 61e8df913d input/thread: check IsEOF() in IsAvailable() 2024-07-29 23:05:00 +02:00
Max Kellermann 4a55e3e8bd input/thread: check buffer.empty() in IsEOF() 2024-07-29 23:03:00 +02:00
Max Kellermann 2e78bd430c input/thread: use pass std::span<std::byte> to ThreadRead() 2024-07-29 22:32:52 +02:00
Max Kellermann dbaa72cb40 util/CircularBuffer: use std::span internally 2024-07-29 22:24:54 +02:00
Max Kellermann 596d2d93dd util/CircularBuffer: use `using` instead of `typedef` 2024-07-29 22:21:38 +02:00
Max Kellermann 10311b3a65 util/CircularBuffer: explicitly forbid the copy operator 2024-07-29 22:20:15 +02:00
Max Kellermann 332ba42073 util/HugeAllocator: add std::span cast operator 2024-07-29 22:20:12 +02:00
Max Kellermann 4262d29965 util/HugeAllocator: add `constexpr` 2024-07-29 22:19:28 +02:00
Max Kellermann 0899d80ae0 util/CircularBuffer: add `noexcept` and `constexpr` 2024-07-29 22:14:59 +02:00
Max Kellermann 9fe6493fc2 util/CircularBuffer: use inline initializer 2024-07-29 22:13:50 +02:00
Max Kellermann 902cb8efac input/thread: use std::byte instead of uint8_t 2024-07-29 22:13:50 +02:00
Max Kellermann f54210bf68 input/async: move enum definition down 2024-07-29 22:13:42 +02:00
Max Kellermann fb151c8662 lib/fmt/meson.build: suppress -Warray-bounds with GCC 13 2024-07-29 22:13:11 +02:00
Max Kellermann 323517753d lib/fmt/meson.build: remove obsolete clang 14 workaround
Android NDK r27 has clang 18 and I don't feel like supporting clang 14.
2024-07-29 22:11:20 +02:00
Max Kellermann 5726d9f06a mixer/Memento: include cleanup 2024-07-29 17:04:53 +02:00
Max Kellermann 0992fab1c8 filter/ReplayGain: include cleanup 2024-07-29 17:04:30 +02:00
Max Kellermann b546ddc54c client/Idle: include cleanup 2024-07-29 17:03:59 +02:00
Max Kellermann d45b7cc972 IdleFlags: move to procool/ 2024-07-29 17:02:33 +02:00
Max Kellermann 12eaaef210 output/Thread: allow Delay() to return duration::max()
Eliminate the periodic wakeups while paused in some output plugins.
2024-07-29 16:52:36 +02:00
Max Kellermann 5b8ef9a62b python/build/__init__.py: add missing file 2024-07-29 16:51:40 +02:00
Max Kellermann 196258ea13 .github/workflows/build_android.yml: update NDK to r27 2024-07-29 16:38:26 +02:00
Max Kellermann 0a035f3ce0 output/alsa: add option "close_on_pause"
This allows keeping the ALSA PCM open even if playback is paused.  As
a side effect, this allows using the "always_on" option with ALSA
outputs, because "always_on" pauses the output.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1623
2024-07-29 16:31:09 +02:00
Max Kellermann 7ab789fbaf doc/user.rst: add clarification to the "always_on" option 2024-07-29 16:30:15 +02:00
Max Kellermann 9c8f4aaf99 lib/alsa/meson.build: require libasound 1.2 or later
This allows us to drop the 1.1.4 snd_pcm_drain() bug workaround (added
by commit f85d4d28d1).
2024-07-29 15:42:46 +02:00
Max Kellermann 3bef4f839a output/alsa: fix coding style 2024-07-29 15:40:52 +02:00
Max Kellermann 1dfda3a5e1 output/alsa: reorder fields to improve packing 2024-07-29 15:38:02 +02:00
Max Kellermann 9d9c4045e2 output/alsa: move redundant code to UnregisterSockets() 2024-07-29 15:28:58 +02:00
Max Kellermann d466deedad output/alsa: fix lambda indent 2024-07-29 15:28:27 +02:00
Max Kellermann bbbbf5f4bd event/MultiSocketMonitor: reschedule epoll/EPERM workaround forever
Fixes a regression by commit 3558317dc9 which caused the ALSA null
plugin to cease to work because the workaround timer was never rescheduled.
2024-07-25 20:16:53 +02:00
Max Kellermann f030b22bec player/thread: wait for the first chunk in CheckCrossFade()
This fixes MixRamp problems which occur because CheckCrossFade() is
called before the decoder has parsed MixRamp tags after
DecoderClient::Ready().

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2084
2024-07-25 20:07:52 +02:00
Max Kellermann a693052f2c Merge branch 'feat/showmovement' of https://github.com/mayanez/MPD 2024-07-25 14:01:19 +02:00
Miguel A. Arroyo e3809bd4f0 feat: Add ShowMovement Tag
This commit adds the `SHOWMOVEMENT` [tag](https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html#show-work-movement-4). Historically, this tag originates from iTunes' MP4, but has since become widely used. It is created by Picard's Classical music [plugins](https://picard-docs.musicbrainz.org/en/variables/variables_classical.html) (such as "Classical Extras" or "Work & Movement").

The reasoning behind this tag is to display Work & Movement titles without redundant information and in a more uniform way. Moreover, it additionally serves as an implicit marker denoting classical music tracks (genre tags aren't sufficient).

If the client so chooses to support this tag, they can display `Work` and `Movement` instead of the track title allowing for cleaner display. Other clients can continue to display the `%title%` as before without any fuss.
2024-07-23 21:09:31 -07:00
Max Kellermann 41cc695848 Instance: fix io/rtio thread mixup
Fixes regression by commit 43d633f560
2024-07-23 15:12:30 +02:00
Max Kellermann 3558317dc9 event/MultiSocketMonitor: remove force-refresh on every iteration
libasound guarantees that the file descriptors never change for a
"prepared" PCM device, thus we can omit this defensive kludge.
2024-07-23 15:08:55 +02:00
Max Kellermann 18cb34825d input/alsa: use libfmt instead of std::string concatenation 2024-07-23 15:04:49 +02:00
Max Kellermann 4c4a3c8664 event/TimerList: use FineTimerEvent::GetDue()
Avoid accessing the private field from an inner class of the friend
class, because some compilers apparently don't like it (Apple clang).
2024-07-23 13:38:05 +02:00
Max Kellermann b4374ddb35 python/build/libs.py: update libopenmpt to 0.7.9 2024-07-23 13:08:04 +02:00
Max Kellermann d24e7763f6 net/AddressInfo: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:05:19 +02:00
Max Kellermann 49ad4e9f3c io/FileDescriptor: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:05:02 +02:00
Max Kellermann ea96b321dc net/SocketAdddress: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:48 +02:00
Max Kellermann bc758cece0 util/StringPointer: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:37 +02:00
Max Kellermann 0e4885c1fa util/IterableSplitString: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:30 +02:00
Max Kellermann 9944c97203 util/AllocatedString: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:20 +02:00
Max Kellermann 58a5550439 util/AllocatedArray: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:10 +02:00
Max Kellermann 8e42467bd2 decoder/mpg123: relax mpg123_length() check in Scan()
Do not fail the Scan() function completely if libmpg123 cannot
determine the duration.
2024-07-12 16:11:08 +02:00
Max Kellermann e00e7802c8 decoder/mpg123: report unknown duration if mpg123_length()<0
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2058
2024-07-12 16:09:35 +02:00
Max Kellermann 55d0bbade2 decoder/mpg123: move code to GetDuration() 2024-07-12 16:08:11 +02:00
Max Kellermann de9f0dc910 playlist/Plugin: convert _init() and _finish() to methods 2024-07-12 16:00:42 +02:00
Max Kellermann cf5970a6e1 output/Registry: replace output_plugins_for_each() with a container class 2024-07-12 15:55:01 +02:00