Max Kellermann
00cf036d58
lib/avahi/Client: relax assertion after COLLISION/REGISTERING
...
Turns out that `AVAHI_CLIENT_S_COLLISION` can occur after
`AVAHI_CLIENT_S_RUNNING`, and `connected==true`. Relaxing this fixes
a bogus assertion failure.
2024-03-11 15:32:24 +01:00
Max Kellermann
9c68f24cfc
net/SocketError: fix typo
...
Whoops. This function has never been used.
2024-03-11 15:32:24 +01:00
Max Kellermann
02c4512b00
util/CharUtil: add IsLowerHexDigit()
2024-03-11 15:32:24 +01:00
Max Kellermann
be84b189dc
util, io, net, ...: use "#pragma once"
2024-03-11 15:32:24 +01:00
Max Kellermann
d685d693e8
input/rewind, archive/iso9660: use use std::cmp_*() for safe integer comparison
2024-03-11 15:09:57 +01:00
Max Kellermann
b0cfdfa257
client/Idle: consume only idle flags that were subscribed to
...
Since the very beginning when idle subscriptions where introduced
(commit 0bad84066b
), waiting for a certain idle mask would clear
all other idle flags as well. This would cause idle events to get
lost.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1998
2024-03-11 15:07:07 +01:00
Marius Feraru
7b6909f2c0
db/update/Walk:FindAncestorLoop: uint64_t inode & device
...
Previously, inode numbers were truncated to 32 bits, which could lead
to problems on XFS where inodes are 64 bit; this could lead to bogus
"recursive directory found" errors during database update.
[mk: added commit description and NEWS line]
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2000
2024-03-11 13:34:27 +01:00
jcorporation
45553c5f61
This commit adds the sort and window parameter to "sticker find"
...
The three new compare operators "eq", "gt" and "lt" are casting the values to int.
Sort supports:
- uri: sort by uri
- value: sort by value as string
- value_int: casts value to int
Closes #1894
2024-03-07 20:52:11 +01:00
Max Kellermann
9eb26ab90c
Merge branch 'countplaylist' of https://github.com/jcorporation/MPD
2024-02-15 11:28:11 +01:00
jcorporation
f801f299c9
New command playlistlength
...
Count the number of songs and their total playtime in the playlist.
2024-02-15 11:25:34 +01:00
Max Kellermann
7f18cae2e4
Merge branch 'skidoo23-patch-1' of https://github.com/skidoo23/MPD
2024-02-13 08:06:16 +01:00
jcorporation
a3794f8c3b
Allow range in listplaylist and listplaylistinfo
2024-02-08 21:26:28 +01:00
skidoo23
31a88e7ccc
Update Templates.cxx
...
Remove Spotify leftovers
2024-01-26 14:34:58 +01:00
skidoo23
4074e3a9e4
Update Option.hxx
2024-01-26 14:31:08 +01:00
Max Kellermann
7f60acdfdd
util/CharUtil: add IsUpperAlphaNumericASCII()
2024-01-18 18:53:05 +01:00
Max Kellermann
aef2c5dc14
lib/avahi/Service: add field visible
...
Now individual services can be hidden or shown at any time.
2024-01-18 18:50:06 +01:00
Max Kellermann
8d02986b0e
lib/avahi/Publisher: add missing defer_register_services.Cancel() calls
2024-01-18 18:50:01 +01:00
Max Kellermann
461da92064
lib/avahi/Publisher: make the service list dynamic
...
This allows editing the list of services at any time instead of
passing a constant list at construction time. To do this, Service
instances are now caller-owned and managed in an IntrusiveList instead
of Publisher-owned in a std::forward_list.
2024-01-18 18:48:27 +01:00
Max Kellermann
b20b773189
zeroconf/avahi/Helper: embed the Avahi::Publisher without std::unique_ptr
2024-01-18 18:45:51 +01:00
Max Kellermann
5023432802
lib/avahi/Publisher: use DeferEvent for RegisterServices()
...
Prepares making the service list dyammic; the DeferEvent not only
moves the operation out of the current stack frame, but also allows
combining several AddService() calls.
2024-01-18 18:24:08 +01:00
Max Kellermann
4a14248004
lib/avahi/Publisher: move code to RegisterServices(AvahiEntryGroup)
2024-01-18 18:24:04 +01:00
Max Kellermann
1b241fc97a
lib/avahi/Publisher: allow RegisterServices() to throw
2024-01-18 18:24:01 +01:00
Max Kellermann
09d1ab7abe
lib/avahi/Publisher: move try/catch in GroupCallback() to the top level
2024-01-18 18:23:57 +01:00
Max Kellermann
d28cb93835
lib/avahi/Client: add method IsConnected()
...
Publish only if the client is really connected.
2024-01-18 18:23:52 +01:00
Max Kellermann
6b43338e06
lib/avahi/Client: add assert()
2024-01-18 18:23:48 +01:00
Max Kellermann
9a7a49350c
lib/avahi/Client: free the AvahiClient on AVAHI_CLIENT_FAILURE
...
Previously the AvahiClient was only freed when AVAHI_ERR_DISCONNECTED
was detected, but all other error conditions would lead to a memory
leak.
2024-01-18 18:23:45 +01:00
Max Kellermann
f85629afa6
lib/avahi/Client: is if with initializer
2024-01-18 18:23:42 +01:00
Max Kellermann
a39473a912
lib/avahi/Service: add API docs
2024-01-18 18:23:37 +01:00
Max Kellermann
05d0e9b8bb
lib/avahi/Publisher: reuse the AvahiEntryGroup
...
The libavahi-client documentation recommends reusing AvahiEntryGroup
instances instead of freeing them and creating new ones.
2024-01-18 18:23:30 +01:00
Max Kellermann
b68c3b7f55
net/SocketDescriptor: disable msghdr methods on Windows
2024-01-18 15:44:44 +01:00
Max Kellermann
0fbed6dec1
net/SocketDescriptor: remove misplaced [[nodiscard]]
2024-01-18 15:44:43 +01:00
naglis
16af2a2998
CommandLine: fix typo
...
I believe this is a typo since all other sections have the form
"<Singular> plugins", e.g. "Encoder plugins".
2024-01-18 14:23:41 +02:00
Max Kellermann
c93fc161dc
Merge branch 'next_prev_fix' of https://github.com/DDRBoxman/MPD
2024-01-18 09:58:39 +01:00
Colin Edwards
0075c57bd4
android: Check playlist state before changing track
...
Playlist will throw an exception if we call next or previous track when it is not in the "playing" state
2024-01-13 23:23:29 -06:00
Colin Edwards
87873c9a73
android: Support play / pause from media session
2024-01-13 23:15:56 -06:00
Max Kellermann
e4cc89b2d9
Merge branch 'jg' of https://github.com/neheb/MPD
2024-01-13 22:38:34 +01:00
Max Kellermann
6f6cbeba80
net/SocketDescriptor: add Send()/Receive() overloads with iovec
2024-01-13 22:32:35 +01:00
Max Kellermann
974ed0166c
net/SocketDescriptor: add sendmsg(), recvmsg() wrappers
2024-01-13 22:31:58 +01:00
Max Kellermann
a91920a8ff
net/SocketDescriptor: pass span<byte> to Read()/Write()
2024-01-13 22:31:34 +01:00
Max Kellermann
7cd38dde09
net/SocketDescriptor: add [[nodiscard]]
2024-01-13 22:31:24 +01:00
Max Kellermann
b63a794fbe
io/FileDescriptor: add [[nodiscard]]
2024-01-13 22:31:16 +01:00
Max Kellermann
3e862b85d4
Merge branch 'mediasession' of https://github.com/DDRBoxman/MPD
2024-01-13 22:27:00 +01:00
Max Kellermann
d3335f9947
db/simple: make more fields const
2024-01-08 13:55:15 +01:00
Max Kellermann
1a67062e1e
db/simple: reorder fields to reduce padding
2024-01-08 13:54:15 +01:00
Max Kellermann
fec1a4ac32
db/simple: pass hide_playlist_targets to sub-instance
2024-01-08 13:53:59 +01:00
Max Kellermann
7f439b01a3
net/SocketAddress: move code to IsInet()
2024-01-08 13:48:13 +01:00
Max Kellermann
0fd6f83766
net/StaticSocketAddress: add constexpr
2024-01-08 13:48:05 +01:00
Max Kellermann
b15b2125e2
net/AddressInfo: add methods IsInet(), IsTCP()
2024-01-08 13:47:59 +01:00
Colin Edwards
e086f09d48
android: add next and previous track to the jni bridge
...
This will allow the android client to directly make calls to the mpd process to change tracks
I went with camel case on the function names here, if you use an underscore
javac generates a function tht looks like this:
JNIEXPORT void JNICALL Java_org_musicpd_Bridge_play_1previous
I figured what we ended up with looks a little nicer:
JNIEXPORT void JNICALL Java_org_musicpd_Bridge_playPrevious
2024-01-05 18:21:46 -06:00
Rosen Penev
e8163124e3
mpg123: fix compilation under Windows
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-01-04 14:22:25 -08:00
Rosen Penev
0651be8366
fluidsynth: fix compilation on Windows
...
NarrowPath is needed.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-01-04 14:22:25 -08:00
Rosen Penev
4957035be6
mikmod: fix compilation on Windows
...
NarrowPath is needed.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-01-04 14:22:25 -08:00
Rosen Penev
bcd55c0b75
sidplay: fix compilation under Windows
...
NarrowPath is needed.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-01-04 14:22:25 -08:00
Rosen Penev
914ee92015
wavpack: fix compilation on Windows
...
NarrowPath is needed.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-01-04 14:22:25 -08:00
Max Kellermann
c04490bd52
storage/curl: eliminate std::strings, parse string_view directly
2024-01-04 21:11:07 +01:00
Max Kellermann
b601f4dc15
util/CNumberParser: remove unused function ParseInt64()
2024-01-04 21:07:50 +01:00
Max Kellermann
4086190c80
decoder/OpusTags: use ParseInteger()
2024-01-04 21:06:38 +01:00
Max Kellermann
e1eea9d98a
util/NumberParser: new library based on std::from_chars()
2024-01-04 21:03:37 +01:00
Max Kellermann
393d57b387
util/NumberParser: rename to CNumberParser
...
A new NumberParser library based on std::from_chars() will be added.
2024-01-04 21:02:45 +01:00
Max Kellermann
b283fe07af
lib/expat/ExpatParser: pass std::string_view to CharacterData()
2024-01-04 20:55:14 +01:00
Max Kellermann
feeb21577f
lib/upnp/Device: use std::forward_list instead of std::vector
2024-01-04 20:51:20 +01:00
Max Kellermann
1fca16737d
lib/upnp/Device: remove unnecessary ctors/dtors
2024-01-04 20:49:27 +01:00
Max Kellermann
4ec85a12e3
lib/upnp/Discovery: use std::map instead of std::list
2024-01-04 20:45:24 +01:00
Max Kellermann
3d2aebccad
lib/upnp/Discovery: pass std::string_view to LockRemove()
2024-01-04 20:40:47 +01:00
Max Kellermann
22382f799c
lib/upnp/Discovery: add noexcept
2024-01-04 20:39:21 +01:00
Max Kellermann
468eceabff
lib/upnp/Discovery: remove unreachable exception handler
2024-01-04 18:04:46 +01:00
Max Kellermann
08e0eb79f5
lib/upnp/Discovery: remove unused default ctor
2024-01-04 18:04:21 +01:00
Max Kellermann
8b03ce562c
input/curl: increase CURLOPT_BUFFERSIZE from 16 kB to 512 kB
2024-01-04 17:57:42 +01:00
Max Kellermann
997311ba14
lib/curl/Easy: add method TrySetOption()
2024-01-04 17:51:48 +01:00
Max Kellermann
cbd031ca7f
lib/upnp/Action: common UpnpSendAction() wrapper for pupnp and npupnp
...
Merge a lot of duplicate code.
2024-01-04 17:40:59 +01:00
Max Kellermann
95842e7984
db/upnp: eliminate the std::forward_list, use IterableSplitString()
2024-01-04 16:31:28 +01:00
Max Kellermann
cc41e95806
db/upnp: add rootid_sv
2024-01-04 16:20:44 +01:00
Max Kellermann
2c77e088b4
db/upnp: eliminate temporary std::string from Visit()
2024-01-04 16:19:03 +01:00
Max Kellermann
c8e2ab6781
db/upnp/Object: smaller enums
2024-01-04 14:31:41 +01:00
Max Kellermann
b2ed29b8c0
lib/upnp/ContentDirectoryService: getFriendlyName() returns std::string reference
...
This can avoid the overhead of casting a C string back to std::string_view.
2024-01-04 14:28:12 +01:00
Max Kellermann
1789b56a85
db/upnp: pass std::string_view to songPath()
2024-01-04 14:28:12 +01:00
Max Kellermann
714dbc9294
lib/upnp/Discovery: forward-declare inner class ContentDirectoryDescriptor
2024-01-04 14:28:12 +01:00
Max Kellermann
f40eb963fd
lib/upnp/Discovery: forward-declare inner class Downloader
2024-01-04 14:28:12 +01:00
Max Kellermann
ee4b49d12f
lib/expat/ExpatParser: pass std::string_view to Parse()
2024-01-04 14:28:12 +01:00
Max Kellermann
4c9942534c
lib/upnp/Device: pass url as std::string_view to Parse()
2024-01-04 14:28:12 +01:00
Max Kellermann
d5f7db59a8
lib/upnp/Util: pass std::string_view to path_getfather()
2024-01-04 14:28:12 +01:00
Max Kellermann
8d1b73ae89
lib/upnp/Discovery: use string_view::starts_with() instead of strncmp()
2024-01-04 14:28:08 +01:00
Rosen Penev
f68fab53a7
zzip: fix compilation on Windows
...
NarrowPath is needed.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-01-04 12:38:36 +01:00
Rosen Penev
6a4dc281d1
bzip2: fix compilation on Windows
...
NarrowPath is needed.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-01-04 12:38:30 +01:00
Rosen Penev
a859de6806
sndfile: fix compilation with clang's libc++
...
error: non-constant-expression cannot be narrowed from type 'sf_count_t'
(aka 'long long') to 'size_type' (aka 'unsigned int') in initializer list
[-Wc++11-narrowing]
215 | std::span{buffer, num_frames * frame_size},
| ^~~~~~~~~~~~~~~~~~~~~~~
note: insert an explicit cast to silence this issue
215 | std::span{buffer, num_frames * frame_size},
| ^~~~~~~~~~~~~~~~~~~~~~~
| static_cast<size_type>()
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-01-03 12:18:52 -08:00
Rosen Penev
f6dbf38e99
upnp: change interface variable name
...
rpc.h under Windows defines interface as struct, which blows up the
build here. Rename to avoid.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-12-28 19:39:05 -08:00
Max Kellermann
d0a4270449
lib/upnp/Compat: remove obsolete kludges
...
Those bugs have been fixed looong ago.
2023-12-28 21:24:58 +01:00
Max Kellermann
b9a7a9981e
lib/upnp/ContentDirectoryService: remove unused fields
2023-12-28 21:22:41 +01:00
Max Kellermann
d9fb152b95
lib/upnp/ContentDirectoryService: include some headers only with libpupnp
2023-12-28 21:18:41 +01:00
Max Kellermann
9396ffb509
db/plugins/upnp/ContentDirectoryService: add missing closing curly brace
2023-12-28 20:52:53 +01:00
Rosen Penev
e7e07c39c5
meson: fix flac_dep under Windows
...
declare_dependency's found() method evaluates to true always, resulting
in MPD trying to build flac when not found. Check for dependency()'s
find() first.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-12-27 12:43:08 -08:00
Rosen Penev
44080154b0
no setenv on Windows
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-12-27 10:50:00 -08:00
Rosen Penev
7c520f6475
fs: fix typo
...
Wrong macro used.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-12-26 10:57:44 -08:00
Max Kellermann
23b4688c44
util/ByteOrder: move Packed* classes to separate headers
2023-12-22 18:20:46 +01:00
Max Kellermann
a888b3a707
decoder/plugins/meson.build: add missing dependency to libid3tag
2023-12-22 18:03:47 +01:00
borine
b1f28d6003
output/alsa: Fix (theoretical error in) ALSA device recovery
...
It is not possible to prepare an ALSA device when it is is state
SND_PCM_STATE_OPEN; it is necessary to set the hardware parameters
first.
This pedantic commit corrects that error. Note that in practice
this code path cannot be encountered because MPD always sets the
hardware parameters before attempting to start playback.
2023-12-22 12:02:33 +00:00
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