Max Kellermann
db21e20c99
event/Loop: improve API doc wording
2022-09-28 09:55:35 +02:00
Max Kellermann
56adb27b44
event/Loop: push new idle events to the back of the list
2022-09-28 09:47:36 +02:00
Max Kellermann
520e96b6e8
event/Loop: rename parameter
2022-09-28 09:45:58 +02:00
Max Kellermann
45599e7840
Merge branch 'v0.23.x'
2022-09-27 20:40:41 +02:00
Max Kellermann
8d9b0c42cb
Merge branch 'reflection' of https://github.com/jcorporation/MPD
2022-09-27 20:35:17 +02:00
jcorporation
7ab0dfc8ce
Sets the curl proxy ssl verify options to the values of the host configuration options
...
This fixes #1616
2022-09-27 20:26:50 +02:00
Max Kellermann
2c11095eed
lib/icu/Compare: use StringStartsWith() for improved code clarity
...
Also fixes the inverted strncmp() call.
2022-09-27 20:23:10 +02:00
jcorporation
07a0369b74
Add pcre status to config response
2022-09-27 20:10:35 +02:00
jcorporation
868a06eaf9
Add starts_with to filter expressions
2022-09-27 19:45:15 +02:00
Max Kellermann
512cd7b0de
Merge branch 'ConsumeMode' of https://github.com/jcorporation/MPD
2022-09-21 11:36:25 +02:00
Max Kellermann
352c598916
command/other: use if-with-initializer
2022-09-20 22:07:10 +02:00
Max Kellermann
661aee29da
Merge branch 'reflection' of https://github.com/jcorporation/MPD
2022-09-20 21:07:06 +02:00
jcorporation
0439df05cc
Add playlist_directory to config command response
2022-09-20 21:04:25 +02:00
jcorporation
eb3baf7e99
Cast enum to unsigned
2022-09-20 20:27:25 +02:00
jcorporation
48a936ef5b
Add ConsumeMode oneshot, closes #925
2022-09-20 20:26:49 +02:00
Max Kellermann
5a7d2be77d
Merge remote-tracking branch 'jcorporation/idle'
2022-09-20 15:11:41 +02:00
Anthony DeRossi
9ab9b97f20
encoder/flac: only set a serial number for oggflac
...
This fixes a bug introduced in 87fa6bca
where the FLAC encoder fails to
initialize unless libFLAC is built with Ogg support. When libFLAC is
built without Ogg support, FLAC__stream_encoder_set_ogg_serial_number
unconditionally returns false.
2022-09-16 17:58:41 -07:00
jcorporation
310a146a55
OutputCommands get ride of global mixer idle events
2022-09-06 21:58:18 +02:00
Max Kellermann
0e201ffdcc
archive/iso9660: simplify std::span initializer
2022-09-06 21:16:28 +02:00
Max Kellermann
d5d25d78da
Merge branch 'v0.23.x'
2022-09-06 21:15:42 +02:00
Max Kellermann
84f43ccde8
LogInit: default to stderr on Windows
...
Don't require "log_file" setting, for "--no-config" operation.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1600
2022-09-06 21:04:53 +02:00
Max Kellermann
38704c9cf3
LogInit: improve systemd/journald comment
2022-09-06 21:03:56 +02:00
Max Kellermann
3b05c89765
archive/iso9660: fix off-by-one assertion failure
...
Calling data[fill] could trigger an assertion failure if
fill==data.size(), even if we call it only to take the address.
Instead of doing that, this commit changes the code to pointer
arithmetic.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1556
2022-09-06 20:28:33 +02:00
jcorporation
4f8b4c605e
player/Control: Change idle events from global to partition scope
2022-08-28 11:33:14 +02:00
Max Kellermann
4f041694d3
release v0.23.9
...
-----BEGIN PGP SIGNATURE-----
iQJBBAABCgArFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmL+ZuYNHG1heEBibGFy
Zy5kZQAKCRAjbopYxttFEmxjD/4sJEq9DroRRK2qnVL1c6rwdzAL05LQwXGfWMCY
/eIfoYGgu+PPN65Xf/A7qEvsXXSpuDzq0jTzdmtSvQwfKgg5jy72Qn+LN0dmoSRn
mqQoqPFFxr7URf7QhL/6/EKcKYSexu/dxLnnuOC/yB/32WB+JINGNLWABrCpFMW0
4kbVSC6t/e07bfBxNoYKx+kSxX88n82v5LNjkPctx0oU0gRoyRZds273uuKHOIYQ
KFHHuaW9eNT0x/JrrsBD0ASXcp/9CfyVvyoag4bqJIc6Bg4fJTEZ9QPy9SUF2R8L
0QCG2DBqFoht7Xqyo7qe5vYy2lww/flVrH/UwB1V7xfWzbuv3qUYs2pRnFmPKjQx
23FRBkmC3tWmno+pZFaYmzprRKQK7WS9DJUzaQ8DCjNVpncadNPDRvz13BZjVLAE
LeAFxPZ3B3yrDIjNRGl9LEySMJs7M4jrqzXQZuWS3+O9IZV19ajGczWmFCyQOyu4
F7bj9tfy1yhUjMYOiUIxXsWvxZSVIo8wK1payCJzvKTobnUUeDfDucnD/lpVRMF8
HyJsaZrXwFIClBmK8nCh3LiB5Dh9nxl8xjtmrCiPVzGZvj5qnzMkZWF+C4wxblnZ
XTVmHFrpdcI3nK4BzLVrxF+3A08gPkIHta9boqrMhfX4gPWkKmD1vH/+u2OD2BIY
I2MASg==
=tk1U
-----END PGP SIGNATURE-----
Merge tag 'v0.23.9'
release v0.23.9
2022-08-18 18:23:12 +02:00
Max Kellermann
40bc60d6ae
Main: load Android mpd.conf from ExternalFilesDir
...
See also https://github.com/MusicPlayerDaemon/MPD/issues/1061
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1570
2022-08-18 18:17:43 +02:00
Max Kellermann
7778210269
Main: move code to TryReadConfigFile()
2022-08-18 18:12:21 +02:00
Max Kellermann
6229210d51
Main: move code to LoadConfigFile()
2022-08-18 18:11:49 +02:00
Max Kellermann
5d0d5b5d97
Android/Context: allow type=nullptr in GetExternalFilesDir()
2022-08-18 18:11:49 +02:00
Max Kellermann
1aa3c1e543
java/String: add static method Optional()
2022-08-18 18:10:16 +02:00
Max Kellermann
b90e32fe4e
Android/Context: look up methods once during startup
2022-08-18 18:10:14 +02:00
Max Kellermann
1f4df2a64d
android/Environment: pass JNIEnv to all functions
2022-08-18 18:09:54 +02:00
Max Kellermann
2efc1db6a9
android/Environment: no namespace indent
2022-08-18 18:08:45 +02:00
Max Kellermann
51aa1d2db8
mixer/Internal: hide internal fields
2022-08-18 17:42:30 +02:00
Max Kellermann
2d2df25d04
mixer/Mixer: avoid locking twice
2022-08-18 17:39:17 +02:00
Max Kellermann
29eb3e9ebc
mixer/Control: move some code to Lock*() methods
2022-08-18 17:34:00 +02:00
Max Kellermann
b0873fbc90
mixer/Mixer*: drop the "Mixer" prefix from source files
2022-08-18 17:21:39 +02:00
Max Kellermann
c14484a5cc
mixer/MixerList: eliminate header
2022-08-18 17:14:42 +02:00
Max Kellermann
a966cfeb1f
playlist/cue/CueParser: fix nullptr dereference
...
Regression from commit 21e4c25e61
2022-08-18 17:06:51 +02:00
Max Kellermann
6c0546d829
mixer/Internal: document that caller must lock the mutex
2022-08-18 16:57:58 +02:00
Max Kellermann
e1e8f45983
mixer/Control: add noexcept
2022-08-18 16:56:32 +02:00
Max Kellermann
3eedcc55b9
mixer/Control: convert pointers to references
2022-08-18 16:56:06 +02:00
Max Kellermann
dd2cab1488
Merge branch 'v0.23.x'
2022-08-18 16:54:18 +02:00
Max Kellermann
f883c09b6b
fs/FileSystem: add pure attributes
2022-08-18 16:53:32 +02:00
Max Kellermann
71acad6c21
fs/FileSystem: add noexcept
2022-08-18 16:53:31 +02:00
Max Kellermann
e2d4654e20
filter/ReplayGain: invoke the MixerListener after volume change
...
This ensures that Partition::OnMixerVolumeChanged() invokes
MixerMemento::InvalidateHardwareVolume(), clearing the cached volume
level.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1526
2022-08-18 14:45:45 +02:00
Max Kellermann
2b8f1170a6
mixer/Control: use Mixer::IsGlobal()
2022-08-18 14:33:35 +02:00
Max Kellermann
5c4743441e
mixer/All: use Mixer::IsPlugin()
2022-08-18 14:08:31 +02:00
Max Kellermann
938054bdb8
command/all: fix off-by-one bug in parameter count check
2022-08-09 12:47:57 +02:00
Max Kellermann
d0909adf6b
command/all: use class StaticVector
2022-08-09 12:46:26 +02:00
Max Kellermann
a12b004fa4
util/StaticVector: new class
2022-08-09 12:44:02 +02:00
Max Kellermann
a8452957fc
command/Request: pass std::span to constructor
2022-08-09 12:43:52 +02:00
Max Kellermann
feb334756e
command/all: convert macro to constexpr
2022-08-09 12:39:18 +02:00
Max Kellermann
50a4d7169e
TagAny: pass std::string_view to uri_has_scheme()
2022-08-09 11:43:35 +02:00
Max Kellermann
b789ffd2bf
Merge branch 'v0.23.x'
2022-08-08 23:46:22 +02:00
Max Kellermann
69f741e8a6
mixer/Memento: move IDLE_MIXER out of SetVolume()
...
Make this idle event per-partition.
2022-08-08 23:32:57 +02:00
Max Kellermann
4b4f47002b
mixer/Volume: refactor to class MixerMemento, per partition
...
Eliminate global variables, convert them to MixerMemento fields.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1583
2022-08-08 23:30:27 +02:00
Max Kellermann
615c301961
mixer/Volume: remove logging (mostly useless)
2022-08-08 23:13:14 +02:00
Max Kellermann
dc07180e48
input/CdioParanoia: add options "mode" and "skip"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1529
2022-08-08 22:53:48 +02:00
Max Kellermann
d3b235bab5
input/CdioParanoia: move global variables up
2022-08-08 22:38:28 +02:00
Max Kellermann
0279f4fb57
output/jack: fix bogus assertion failure
...
Regression from commit 45071607aa
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1571
2022-08-08 22:01:59 +02:00
Max Kellermann
7c920ddebe
filter/ffmpeg: fix FFmpeg 5.1 deprecation warnings
2022-08-08 21:34:26 +02:00
Max Kellermann
88793cbc1a
output/httpd: avoid extra buffer copy if possible
2022-08-08 21:00:38 +02:00
Max Kellermann
2afe427ab3
output/httpd: copy from returned encoder buffer
...
This fixes a regression from commits c266fb7758
and 00b8ced09f
,
but really caused by API change in commit 7e14f8f830
, and this
plugin's failure to adapt to this API change.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1585
2022-08-08 21:00:27 +02:00
Dave Hocker
bbc088ae4e
This PR provides forward and backward compatibility at macos SDK 12.0. At SDK 12.0, API function names were changed essentially replacing
...
occurrences of the word Master/master with Main/main. This change was test built on two different systems.
1. macos 10.15.7 with Xcode 12.4 and clang 12.0.0 on x86_64
2. macos 12.5 with Xcode 13.4.1 and clang 13.1.6 on arm64 (Apple silicon M1)
It should be noted that on macos 10.15.7 with Xcode 11.2 and clang 11.0, MPD will not build.
The MPD documentation states that clang 11.0 is the minimum requirement,
but clang 11.0 produces compile errors. Apparently the macos version
of clang 11.0 is not fully compliant.
2022-08-08 17:39:29 +02:00
Max Kellermann
4c08c0b8b1
Merge branch 'v0.23.x'
2022-07-27 11:06:47 +02:00
Max Kellermann
57d5df8118
decoder/ffmpeg: fix FFmpeg 5.1 deprecation warnings
2022-07-27 11:04:09 +02:00
Max Kellermann
59792cb0b8
decoder/ffmpeg: wrap FFmpeg include in "extern C"
...
Commit ebae25d175
added that #include, but forgot to wrap it in
"extern C", so the linker tried to look up C++ symbols, causing linker
failure.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1582
2022-07-27 11:04:03 +02:00
Max Kellermann
b864094fdc
Merge branch 'master' of https://github.com/Sonico98/MPD
2022-07-21 21:14:15 +02:00
Sonico
3ef83cc34e
Add titleSort tag
2022-07-20 23:05:10 -03:00
Rosen Penev
3f133dd586
use data() instead of &[0]
...
No need for C pointer manipulation.
Removed data() for string_view as [] can be used without.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2022-07-20 13:50:48 -07:00
Rosen Penev
cc557c4d60
meson: port ncpmc iconv solution
...
Properly deals with iconv, unlike the current solution. have_iconv fails
when libiconv CFLAGS are passed to the compiler. Tested under OpenWrt
with its CONFIG_BUILD_NLS, which adds libiconv include flags.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2022-07-20 08:03:24 +02:00
Max Kellermann
0c98d93e9a
io/FileOutputStream: write to temporary file if O_TMPFILE is not available
2022-07-14 18:45:33 +02:00
Max Kellermann
c344403bed
fs/Path: add operator+
2022-07-14 18:42:25 +02:00
Max Kellermann
150e8f78bf
io/FileOutputStream: use fsync() if fdatasync() is unavailable
...
Fixes the macOS build which apparently doesn't implement the POSIX
function fdatasync().
2022-07-14 18:34:44 +02:00
Max Kellermann
fe3ab7b937
fs/Path: add WithSuffix()
2022-07-14 18:23:48 +02:00
Max Kellermann
458084d79b
fs/Path: add GetSuffix()
2022-07-14 18:20:55 +02:00
Max Kellermann
d3947d0ad5
fs/Path: GetExtension() skips all leading dots
...
Don't return an empty string for "..", because this path doesn't have
an extension.
2022-07-14 18:20:45 +02:00
Max Kellermann
849ed122c7
fs/Path: document GetExtension()
2022-07-14 18:12:00 +02:00
Max Kellermann
254ee00c37
fs/Path: rename GetSuffix() to GetExtension()
...
The "extension" is the name after the dot, but the "suffix" is the
string including the dot.
2022-07-14 18:12:00 +02:00
Max Kellermann
594b97feb1
fs/Path: change cast syntax
2022-07-14 18:12:00 +02:00
Max Kellermann
cc0def15c4
Copyright year 2022
2022-07-14 17:59:35 +02:00
Max Kellermann
2670bbdcc8
io/FileOutputStream: simplify OpenTempFile() call
2022-07-14 15:47:10 +02:00
Max Kellermann
bd3e096411
io/FileOutputStream: move code to Delete()
2022-07-14 15:43:36 +02:00
Max Kellermann
270a74e53b
io/FileOutputStream: add method Sync()
2022-07-14 15:41:12 +02:00
Max Kellermann
47d103e8a1
io/FileOutputStream: add API documentation
2022-07-14 15:41:03 +02:00
Max Kellermann
188f7ab795
thread/WindowsCond: add explicit cast
2022-07-14 13:04:08 +02:00
Max Kellermann
4953a57c1c
java/String: add std::string_view constructor
2022-07-14 13:03:23 +02:00
Max Kellermann
199037c682
config: allow configuring partitions
...
This just allows creating empty partitions. More features to come.
2022-07-13 15:18:06 +02:00
Max Kellermann
64f84d5468
player/Listener: add virtual method OnPlayerState(), wrapping IDLE_PLAYER
...
This eliminates most of the remaining global "player" idle events.
2022-07-13 14:11:36 +02:00
Max Kellermann
047561dc22
player/Listener: add virtual method OnPlayerError()
...
Replaces two global idle_add() calls.
2022-07-13 14:11:36 +02:00
Max Kellermann
a542a0804a
Partition: OnPlayerTagModified() emits IDLE_PLAYER
...
Replaces one global idle_add() call.
2022-07-13 14:11:36 +02:00
Max Kellermann
cddeb2a0df
io/BufferedOutputStream: add missing #include
2022-07-13 14:11:36 +02:00
Max Kellermann
de1d443db1
output/Multiple: use std::size_t
2022-07-13 13:26:27 +02:00
Max Kellermann
e2040ed395
output/Multiple: use [[gnu::pure]]
2022-07-13 13:25:17 +02:00
Max Kellermann
8a0ba7a725
output/Control: GetName() returns std::string&
2022-07-13 13:23:21 +02:00
Max Kellermann
e74788ea32
output/Control: inline GetName()
2022-07-13 13:13:23 +02:00
Max Kellermann
fef79931c5
output/Multiple: pass std::string_view to FindByName()
2022-07-13 13:13:21 +02:00
Max Kellermann
b52b0ac85a
*: use BufferedOutputStream::Fmt()
2022-07-13 13:10:14 +02:00
Max Kellermann
9a30286289
io/BufferedOutputStream: add libfmt support
2022-07-13 12:52:20 +02:00
Max Kellermann
ae4f4d3533
config/Data: add WithEach(ConfigBlockOption)
...
To improve error messages without making callers more complex.
2022-07-13 11:05:21 +02:00
Max Kellermann
89a18b49a7
Merge branch 'v0.23.x'
2022-07-12 14:00:00 +02:00
guihkx
956c5faebb
output/PipeWire: set app icon
...
Closes #1564
2022-07-12 13:59:05 +02:00
Max Kellermann
eb589b0a46
output/osx: fix CI failure
2022-07-12 13:37:46 +02:00
Max Kellermann
52eff41379
remove Haiku support
...
Haiku support has been unmaintained for many years, and this issue has
been open for more than 5 years, but apparently the Haiku people have
lost interest:
https://github.com/MusicPlayerDaemon/MPD/pull/183
Haiku support was therefore deprecated by this commit 4 years ago:
7de8fd04a4
- but in those 4 years, nobody stepped up to adopt
maintainership.
I don't have any computer (or VM) with Haiku and there is no CI with
Haiku support, so I'm unable to adapt the Haiku specific code to API
changes.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/182
Closes https://github.com/MusicPlayerDaemon/MPD/issues/185
2022-07-12 13:14:49 +02:00
Max Kellermann
45071607aa
output/Interface: pass std::span to Play()
2022-07-12 12:59:47 +02:00
Max Kellermann
f5d104e7af
output/ao: simplify write_size checks
2022-07-12 12:58:19 +02:00
Max Kellermann
4f8d2a8b1c
output/alsa: use std::byte instead of uint8_t
2022-07-12 12:36:39 +02:00
Max Kellermann
0158a2b6b9
encoder/flac: refactor input buffer conversion
2022-07-12 12:31:08 +02:00
Max Kellermann
00b8ced09f
encoder/flac: Read() returns the internal buffer
2022-07-12 12:19:55 +02:00
Max Kellermann
5f51be43cf
decoder/flac: add noexcept
and inline
2022-07-12 12:15:06 +02:00
Max Kellermann
3e2de560ca
encoder/lame: eliminate the audio_format field
2022-07-12 12:08:46 +02:00
Max Kellermann
c266fb7758
encoder/lame: Read() returns the internal buffer
...
Eliminate memcpy() calls.
2022-07-12 12:01:31 +02:00
Max Kellermann
0d09f307b2
encoder/Interface: update API docs
2022-07-12 12:00:02 +02:00
Max Kellermann
7e14f8f830
encoder/Interface: pass std::span to Write() and Read()
2022-07-12 10:33:59 +02:00
Max Kellermann
28e044a36a
encoder/lame: use std::size_t
2022-07-12 10:14:10 +02:00
Max Kellermann
4e91d8279b
encoder/vorbis: use std::size_t
2022-07-12 10:11:30 +02:00
Max Kellermann
ff3d8509ac
output/httpd: move buffer to stack
2022-07-12 10:08:26 +02:00
Max Kellermann
e861d4f83d
encoder/interface: make Read() noexcept
(all implementations are)
2022-07-12 10:07:38 +02:00
Max Kellermann
31d89b36cf
encoder/flac: use std::size_t
2022-07-12 09:53:16 +02:00
Max Kellermann
6b24344031
output/shout: move buffer to stack
2022-07-12 09:48:02 +02:00
Max Kellermann
c55e250c45
encoder/Interface: include cleanup
2022-07-11 22:38:24 +02:00
Max Kellermann
cd241a93c1
util/DynamicFifoBuffer: pass std::span to Append()
2022-07-11 22:38:24 +02:00
Max Kellermann
53acf7ae82
encoder/*: use std::byte instead of uint8_t
2022-07-11 22:38:24 +02:00
Max Kellermann
c34f6ed8c0
decoder/Client: pass std::span to SubmitData()
2022-07-11 22:37:38 +02:00
Max Kellermann
329c448d30
decoder/wavpack: use [[gnu::pure]]
2022-07-11 22:11:42 +02:00
Max Kellermann
a6619e9a13
decoder/wavpack: add "constexpr" and "const_cast"
2022-07-11 22:10:11 +02:00
Max Kellermann
24ce5da2b8
decoder/wavpack: convert pointer to reference
2022-07-11 22:08:49 +02:00
Max Kellermann
b4f751080d
decoder/wavpack: add noexcept
2022-07-11 22:06:10 +02:00
Max Kellermann
6d02edebc9
decoder/wavpack: rename "samples" to "frames"
2022-07-11 22:05:49 +02:00
Max Kellermann
349882ed75
decoder/wavpack: require libwavpack version 5
2022-07-11 22:04:15 +02:00
Max Kellermann
4464310e74
release v0.23.8
...
-----BEGIN PGP SIGNATURE-----
iQJBBAABCgArFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmLIuEINHG1heEBibGFy
Zy5kZQAKCRAjbopYxttFEm1JD/9j/a82cNccPLUfTptgb8ak5fAnYA65edbtGPr9
dLv1BSjMrsTpMpgJ8FT5wjQn7H5drmE2GLvCN+oZUqaSz99F5BC+Hof7bfvv/sVF
opLTiZn2iAtanwtHP6ZEPPswTbdN2FgtZeFhJIGmFspghJV5hdbM7vbwNX1SIpc6
LH+WvE42ZG/w5wNajRvr6/lPYQhJc70wUqODXLzgdYu3WYmIclUAyFv7tVr067Hh
uXP6b6MZV60cqh+a0xX01n5kwDo2reqmmE0IY0Le7H6xg5quE7DzCVElTOAa7R1x
MZJCqY/thjvXl3JfHW5/ZwmiNrxsmx8nzGhrDyg4tb3hjbwip1iEI/OgnDyacdl4
34njeFxO40AJhienDWLAp2oSYh4pNdfjFvnfSJXeQ9HD2sIzGi692WUgzjdM1VmA
83iVRe9Bx4OTyAg1jwPOFyAYnRqhWsYFSp7GjwNBQwTRSwwBtmOxwAhWKwuspuLi
YfDoF7wGYVY5lOXuDBw+rvhGRWqGKsbQzZFy0bQFoD8dbwG9huLJCumNWZCbqELF
TAfU5sRcQlAjwSGncEpKOitYjdrtylYRb12p2DSedFuBWxcRGGPiCFfTVUKV8hz1
LGD1xj1g/4ClEUbfDNVwa7sAEO7o84Qojfkt/siBjhE427i11CpPGIlMCVeO2FkG
fI1f3Q==
=KgWM
-----END PGP SIGNATURE-----
Merge tag 'v0.23.8'
release v0.23.8
2022-07-09 01:08:16 +02:00
Max Kellermann
c8dae95eff
output/PipeWire: after Cancel(), refill buffer before resuming playback
...
Deactivate the stream in Cancel(). This fixes stuttering after a
manual song change by refilling the whole ring buffer before
reactivating the stream.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1354
2022-07-09 01:03:36 +02:00
Max Kellermann
547a084c7e
output/PipeWire: call pw_stream_flush() in Cancel()
...
Clear not only MPD's ring buffer, but also libpipewire's buffers, to
avoid playing some audio from the previous song after a manual song
change.
Fixes part 1 of https://github.com/MusicPlayerDaemon/MPD/issues/1354
2022-07-09 01:01:29 +02:00
Max Kellermann
493677ff81
output/PipeWire: skip Cancel() if already drained
2022-07-09 00:53:53 +02:00
Max Kellermann
6b430ba271
output/PipeWire: activate stream in Drain()
2022-07-09 00:53:20 +02:00
Max Kellermann
4b3dcf831b
output/Timer: add noexcept
2022-07-08 22:58:45 +02:00
Max Kellermann
bc6924d303
output/snapcast: fix busy loop while paused
...
Removing the LockHasClients(); this code was copied from the "httpd"
output plugin, but unlike "httpd", the SnapCast output plugin does not
feed silence while paused, so we need to implement a delay to avoid
busy-looping the CPU.
As a side effect, this eliminates the suttering after resuming
playback, because the timer now gets reset even if there is a client.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1394
2022-07-08 22:55:41 +02:00
Max Kellermann
02b00f9146
output/PipeWire: don't force initial volume=100%
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1484
2022-07-08 18:25:41 +02:00
Max Kellermann
e807ed5870
output/PipeWire: ignore SPA_PROP_channelVolumes if n_values==0
...
After connecting, PipeWire sometimes sends SPA_PROP_channelVolumes
with no values, and this led to "volume=-NaN".
2022-07-08 18:13:33 +02:00
Max Kellermann
f08944253b
output/PipeWire: check SPA_PROP_channelVolumes, not control name
...
Since PipeWire 0.3.53, there is no control name anymore, therefore the
name check doesn't work anymore, breaking volume change events.
This obsoletes the crash bug fix in commit 2ee57f9b0d
2022-07-08 18:06:36 +02:00
Max Kellermann
792d6584b9
output/PipeWire: move code to OnChannelVolumes()
2022-07-08 18:02:36 +02:00
Max Kellermann
7b45d01462
output/PipeWire: update field "volume"
2022-07-08 17:44:39 +02:00
Max Kellermann
5c17b2966a
output/PipeWire: use std::accumulate
2022-07-08 17:44:08 +02:00
Max Kellermann
0c54f29446
output/PipeWire: document field "volume"
2022-07-08 17:30:57 +02:00
Max Kellermann
9c3cf39fdd
output/PipeWire: catch exceptions in ParamChanged()
...
Fixes a potential crash bug.
2022-07-08 17:24:41 +02:00
Max Kellermann
d2fb229685
output/PipeWire: call ::SetVolume() in ParamChanged()
...
This is a lower-level function without some of the clutter of
PipeWireOutput::SetVolume() which is not needed in that case.
2022-07-08 17:21:17 +02:00
Max Kellermann
f55bc6682f
output/PipeWire: move code to ::SetVolume()
2022-07-08 17:19:10 +02:00
Max Kellermann
6857286b42
decoder/Thread: don't scan for replay gain tags in PCM streams
...
This disables a long delay for playing songs from the cdio_paranoia
input plugin if ReplayGain is enabled.
2022-07-08 16:33:19 +02:00
Max Kellermann
c0d5bd2048
decoder/Thread: move code to DecoderControl::LockIsReplayGainEnabled()
2022-07-08 16:21:53 +02:00
Max Kellermann
666e5d7904
input/CdioParanoia: use integer modulo to calculate "diff"
2022-07-08 16:04:05 +02:00
Max Kellermann
3613407ac5
input/CdioParanoia: use typedef lsn_t
2022-07-08 16:03:04 +02:00
Max Kellermann
c32dceb4d4
input/CdioParanoia: remove loop from Read()
...
The Read() method is not required to fill the whole buffer. By
returning as soon as at least one byte was read, we allow faster
cancellation.
2022-07-08 16:01:23 +02:00
Max Kellermann
5573e78364
input/CdioParanoia: skip seek if seeking within the buffer
2022-07-08 13:57:11 +02:00
Max Kellermann
807a19889f
input/CdioParanoia: update offset only after successful seek
...
If seeking fails, don't leave the class with a wrong offset.
2022-07-08 13:57:11 +02:00
Max Kellermann
df7242de91
input/CdioParanoia: eliminate redundant field "lsn_relofs"
2022-07-08 13:36:59 +02:00
Max Kellermann
d62426f168
input/CdioParanoia: eliminate redundant field "lsn_to"
...
Use "size" instead.
2022-07-08 12:42:49 +02:00
Max Kellermann
1714cf3417
input/CdioParanoia: use IsEof() in Read()
2022-07-08 12:42:42 +02:00
Max Kellermann
1080c917be
input/CdioParanoia: use std::min()
2022-07-08 12:37:21 +02:00
Max Kellermann
8eb3164878
input/CdioParanoia: fix crash if no drive was found
...
cdio_get_devices_with_cap() can return nullptr if no drive was found,
or it can instead return an empty list. The latter caused MPD to
crash.
2022-07-08 12:05:20 +02:00
Max Kellermann
915c5442d1
input/CdioParanoia: use AtScopeExit() for cdio_free_device_list()
2022-07-08 12:03:57 +02:00
Max Kellermann
4d6ae6ffdd
output/PipeWire: add nullptr check to SetVolume()
...
If the PipeWire output has not yet been enabled and no thread_loop has
been created yet, a nullptr dereference in SetVolume() was possible
because nullptr was passed to pw_thread_loop_lock().
2022-07-08 11:32:59 +02:00
Max Kellermann
ecee6f415b
mixer/MixerInternal: remember error details
...
If a mixer is not open, rethrow the original exception each time
setting the volume is requested. This further improves error messages
sent to MPD clients.
2022-07-08 11:11:53 +02:00
Max Kellermann
47680f936b
mixer/All: auto-open "global" mixers
...
If a mixer is "global", it is available even if the output isn't
open. However, since the check was changed from IsEnabled() to
IsReallyEnabled(), enabled outputs have not yet been used have not
been "really" enabled yet, preventing using the mixer.
Fixes a regression by commit 35dbc1a90c
(part of https://github.com/MusicPlayerDaemon/MPD/pull/1480 ).
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1563
2022-07-08 11:05:26 +02:00
Max Kellermann
2d7181105d
output/MultipleOutputs: SetVolume() throws on error
...
This reveals more about the nature of an error instead of just
returning "problems setting volume".
2022-07-08 10:56:55 +02:00
Max Kellermann
9bdc75524b
python/build/libs.py: update CURL to 7.84.0
2022-07-08 10:13:52 +02:00
Max Kellermann
138738075b
libfmt 9 support
...
libfmt version 9 broke the API by removing fmt::make_args_checked().
Fixes https://bugs.debian.org/1014543
2022-07-08 10:06:53 +02:00
Max Kellermann
7dd65f3028
Merge branch 'v0.23.x'
2022-07-04 19:21:18 +02:00
Max Kellermann
2ee57f9b0d
output/PipeWire: add nullptr check, fixing crash with PipeWire 0.3.53
...
Since PipeWire 0.3.53, control names can apparently be nulled, leading
to crashes in applications assertion that the string cannot be
nullptr.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1558
2022-07-04 19:20:08 +02:00
Max Kellermann
bc56f8c2f0
util/ConstBuffer: remove obsolete library
...
Everything has been migrated to std::span.
2022-07-04 19:15:10 +02:00
Max Kellermann
596ff7e6bf
output/*: use std::span instead of ConstBuffer
2022-07-04 19:14:12 +02:00
Max Kellermann
e8667f99be
util/OptionParser: use std::span instead of ConstBuffer
2022-07-04 19:04:16 +02:00
Max Kellermann
9b427b3171
command/*: use std::span instead of ConstBuffer
2022-07-04 18:58:13 +02:00
Max Kellermann
baff5e5594
lib/yajl: use std::span instead of ConstBuffer
2022-07-04 18:37:36 +02:00
Max Kellermann
020c9b41cc
lib/icu: use std::span instead of ConstBuffer
2022-07-04 18:37:35 +02:00
Max Kellermann
e975e2e477
lib/ffmpeg: use std::span instead of ConstBuffer
2022-07-04 18:37:35 +02:00
Max Kellermann
4e1dc562f7
lib/curl: use std::span instead of ConstBuffer
2022-07-04 18:37:35 +02:00
Max Kellermann
d097babe73
lib/chromaprint: use std::span instead of ConstBuffer
2022-07-04 18:37:35 +02:00
Max Kellermann
8fa212f04d
lib/cdio: use std::span instead of ConstBuffer
2022-07-04 18:37:35 +02:00
Max Kellermann
b9c9a5f1dd
db/*: use std::span instead of ConstBuffer
2022-07-04 18:37:35 +02:00
Max Kellermann
4fb8b45111
song/Filter: use std::span instead of ConstBuffer
2022-07-04 18:37:35 +02:00
Max Kellermann
6c107443d3
input/qobuz: include cleanup
2022-07-04 18:37:35 +02:00
Max Kellermann
67c6d111a8
filter/*: use std::span instead of ConstBuffer
2022-07-04 18:37:35 +02:00
Max Kellermann
9675cc77e2
decoder/*: use std::span instead of ConstBuffer
2022-07-04 18:11:21 +02:00
Max Kellermann
4ce1dae673
pcm/*: use std::span instead of ConstBuffer
2022-07-04 18:11:21 +02:00
Max Kellermann
d89136b09c
util/ConstBuffer: hard-code std::span support
2022-07-04 18:09:32 +02:00
Max Kellermann
d58c38943a
util/StringView: remove obsolete class
...
Everything has been migrated to std::string_view.
2022-07-04 15:04:31 +02:00
Max Kellermann
66704ec879
util/UriExtract: use std::string_view instead of StringView
2022-07-04 15:04:31 +02:00
Max Kellermann
422c1e9288
util/TemplateString: remove StringView support
2022-07-04 15:04:31 +02:00
Max Kellermann
683f0da2e7
tag/*: use std::string_view instead of StringView
2022-07-04 15:04:31 +02:00
Max Kellermann
c7a8fc91c0
storage/curl: use std::string_view instead of StringView
2022-07-04 15:04:31 +02:00
Max Kellermann
cfd255a014
lib/xiph: use std::string_view instead of StringView
2022-07-04 15:04:31 +02:00
Max Kellermann
1c30b3d5a1
lib/dbus/UDisks2: use std::string_view instead of StringView
2022-07-04 15:04:31 +02:00
Max Kellermann
4964eda167
fs/StandardDirectory: use std::string_view instead of StringView
2022-07-04 15:04:31 +02:00
Max Kellermann
502e5f006a
decoder/*: use std::string_view instead of StringView
2022-07-04 14:50:18 +02:00
Max Kellermann
23235e3194
db/upnp/Directory: use std::string_view instead of StringView
2022-07-04 14:50:18 +02:00
Max Kellermann
93834fe389
db/simple/Directory: use std::string_view instead of StringView
2022-07-04 14:50:18 +02:00
Max Kellermann
bd32b229b5
config/Path: use std::string_view instead of StringView
2022-07-04 14:41:39 +02:00
Max Kellermann
c7d2cb855a
Permission: use std::string_view instead of StringView
2022-07-04 14:38:29 +02:00
Max Kellermann
04c924ae3b
playlist/Registry: use std::string_view instead of StringView
2022-07-04 14:36:21 +02:00