Commit Graph

15288 Commits

Author SHA1 Message Date
borine 50e6950fa8 output/alsa: handle recoverable errors in DrainInternal()
It is possible that an underrun may occur in the ALSA output
device while MPD is draining its own internal buffer. If this
happens then MPD stops playback, reporting the error EPIPE.

This commit attempts to recover the ALSA device instead of
stopping playback, so that the drain can complete and the next
song in the play queue is played.
2023-12-22 11:53:20 +00:00
Max Kellermann 3c5b864396 tag/IcyMetadataParser: use std::span 2023-12-21 08:42:23 +01:00
Max Kellermann 58fc857a2d tag/IcyMetadataParser: pass std::string_view to icy_parse_tag() 2023-12-20 20:18:39 +01:00
Max Kellermann e443ee357a tag/IcyMetadataParser: do not null-terminate strings in icy_parse_tag()
Just pass std::string_views into the unmodified buffer to
icy_parse_tag_item().
2023-12-20 19:58:35 +01:00
Max Kellermann 2618294eb7 tag/IcyMetadataParser: pass std::string_view to icy_parse_tag_item() 2023-12-20 19:51:22 +01:00
Max Kellermann 03352cb4ad tag/IcyMetadataParser: use std::byte in ParseInPlace() 2023-12-20 19:49:08 +01:00
Max Kellermann 303d981099 subprojects: add lame 2023-12-20 16:50:13 +01:00
Max Kellermann 7727630f24 Merge branch 'alsa_input_exception' of https://github.com/borine/MPD 2023-12-20 13:21:37 +01:00
Colin Edwards 16c91a3f4b android: Fix MPD shutdown from settings UI 2023-12-19 22:05:03 -06:00
Max Kellermann dfef30a737 subprojects: add curl 2023-12-11 10:53:43 +01:00
Max Kellermann 642de1510b lib/curl/Request: remove redundant CurlEasy wrapper methods 2023-12-09 20:54:21 +01:00
borine f61eed1a82 input/plugins/Alsa: catch all exceptions
snd_pcm_poll_descriptors_revents() may return any error code; the
ALSA docs do not constrain the permitted values. A 'hw' device
will only ever return an error if the pfd array passed in is
invalid (-EINVAL), but other I/O plugins may return arbitary
errors. For example a network-based device may return -EPIPE etc.
The resulting exception thrown by
AlsaNonBlockPcm::DispatchSockets() must be caught to prevent the
mpd process from being aborted.
2023-11-26 15:36:42 +00:00
Max Kellermann e9c40dead8 output/SharedPipeConsumer: add noexcept 2023-11-26 08:48:45 +01:00
Max Kellermann 31bf6d29b9 BulkEdit: forbid copying 2023-11-26 08:47:06 +01:00
Max Kellermann 571b6f0cdb queue/IdTable: add constexpr (because we can) 2023-11-26 08:43:50 +01:00
Max Kellermann e7b9e8de14 queue/IdTable: add API docs 2023-11-26 08:43:20 +01:00
Max Kellermann 321553d5f9 queue/IdTable: add explicit 2023-11-26 08:41:57 +01:00
Max Kellermann 4d23068c5c queue/IdTable: use C++11 initializer 2023-11-26 08:41:19 +01:00
Max Kellermann 634b38169a Merge branch 'alsa_input_buffer' of https://github.com/borine/MPD 2023-11-26 08:24:51 +01:00
Max Kellermann fe4695f92a Merge branch 'added_time_proxy_plugin' of https://github.com/jcorporation/MPD 2023-11-26 08:20:18 +01:00
Max Kellermann 3c7941b24b Instance: work around -Wunused-parameter 2023-11-26 08:13:57 +01:00
Max Kellermann a5d7f5e1fa client/Client: add interface IClient
This allows detangling dependencies and fixes a linker problem in
test/test_translate_song.cxx.
2023-11-26 08:11:06 +01:00
Max Kellermann 0dfd7e3d8c net/SocketDescriptor: SO_PROTOCOL is really Linux-specific 2023-11-25 23:03:30 +01:00
Max Kellermann f757dfdc4f SongLoader: add noexcept 2023-11-25 22:57:24 +01:00
Max Kellermann eb675ad1b1 pcm/meson.build: add missing dependency on libconfig.a 2023-11-25 22:51:43 +01:00
Max Kellermann 08a5768764 fs/io/TextFile: split into class FileLineReader and AutoGunzipFileLineReader
Detangle dependencies.
2023-11-25 22:50:32 +01:00
Max Kellermann d888bb1902 io/meson.build: move libfmt dependency to libio.a 2023-11-25 22:16:47 +01:00
Max Kellermann 6dc708f53f net/SocketDescriptor: use method GetOption() internally 2023-11-25 21:58:17 +01:00
Max Kellermann 60033f3eb4 net/SocketDescriptor: add method GetProtocol() 2023-11-25 21:58:09 +01:00
Max Kellermann 1239e075b8 net/SocketDescriptor: add method GetIntOption() 2023-11-25 21:56:07 +01:00
Max Kellermann d0eea87b1a song/*SongFilter: use libfmt 2023-11-25 20:42:50 +01:00
Max Kellermann 273fc329e0 Merge branch 'added-since' of https://github.com/jcorporation/MPD 2023-11-25 20:36:38 +01:00
Max Kellermann b9daeef524 event/FineTimerEvent: add SetDue(), ScheduleCurrent() 2023-11-21 20:47:29 +01:00
Max Kellermann 9383ceac30 event/{Coarse,Fine}TimerEvent: add API docs 2023-11-21 20:47:25 +01:00
Max Kellermann ebf1fc7ca4 util/IntrusiveList: convert static_assert to concept check 2023-11-21 20:42:01 +01:00
Max Kellermann 73708e7be7 event/TimerEvent: remove transitional header 2023-11-21 20:41:55 +01:00
Max Kellermann 0c409aa290 input/LastInputStream: use CoarseTimerEvent 2023-11-21 20:41:47 +01:00
Max Kellermann edfa329e64 util/DereferenceIterator: use *declval() to guess the default value type
This allows the iterator to point to another iterator.
2023-11-21 20:40:47 +01:00
Max Kellermann 5ab2c31500 Merge branch 'v0.23.x' 2023-11-21 20:37:46 +01:00
skidoo23 50c1e3738a decoder/ffmpeg: Fix build error with ffmpeg 6.1
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1898
2023-11-21 20:36:37 +01:00
jcorporation 1615fbc30e Add "added-since" filter expression 2023-11-04 17:25:24 +01:00
jcorporation 45a4fcab1e Add support for added attribute to proxy plugin 2023-11-02 21:22:48 +01:00
Max Kellermann 68b19ae087 util/SpanCast: add ReferenceAsWritableBytes() 2023-11-02 10:50:24 +01:00
Max Kellermann a073db1e52 util/SpanCast: add ReferenceAsBytes() 2023-11-02 10:50:00 +01:00
Max Kellermann 10940da381 util/Intrusive{List,HashSet}: add "tag" for base hooks 2023-11-02 10:48:46 +01:00
Max Kellermann 57d9cffc42 event/PipeEvent: expose the EventPollBackendEvents constants 2023-11-02 10:48:21 +01:00
Max Kellermann ac25f3456a Merge branch 'added_time' of https://github.com/jcorporation/MPD 2023-11-02 10:42:31 +01:00
jcorporation f4f79a3d5f New command "stickernames" lists uniq and sorted sticker names 2023-10-21 18:21:03 +02:00
jcorporation 7bf43a9712 Add "added" timestamp to song database
- added is set to current time, if a new song is added to the database.
- GetAdded falls back to mtime.

Code for proxy plugin is missing, this needs a patch for libmpdclient.

closes #378
2023-10-20 17:29:31 +02:00
Max Kellermann 2b10cf3c15 pcm/Normalizer: change license identifier to LGPL-2.1-only
"LGPL-2.1" doesn't exist, and the old copyright header did not specify
the "or later" clause, so I must assume it's 2.1 only.
2023-10-15 11:37:21 +02:00