Commit Graph

17942 Commits

Author SHA1 Message Date
Felix Hädicke 70d0fbd715 python/makeproject: do not use hard-code absolute path to make 2023-05-21 20:41:38 +02:00
Felix Hädicke 302432e157 python/makeproject: set appropriate build jobs count depending on the number of CPUs 2023-05-21 20:41:34 +02:00
Felix Hädicke 4ab8a677dc build/python: do not use absolute path for tar 2023-05-21 20:41:29 +02:00
Max Kellermann 52e4a4c904 build/python/build/project.py: lazy tarball extraction 2023-05-21 20:41:25 +02:00
Max Kellermann a0f6932ebe unix/SignalHandlers: shut down if parent process dies in --no-daemon mode
By default, if the parent of a process dies, the process gets SIGHUP
and is supposed to shut down.  This however doesn't work for MPD,
because MPD redefines SIGHUP with a different meaning (like most
daemons do).

To work around this, we configure the kernel to send SIGTERM instead
of SIGHUP.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1706
2023-05-21 20:40:47 +02:00
Max Kellermann 6e700dab69 CommandLine: hard-code `daemon=false` if ENABLE_DAEMON is not set 2023-05-21 20:40:39 +02:00
Max Kellermann 35eaed7206 python/build/libs.py: update FFmpeg to 6.0 2023-05-21 20:40:39 +02:00
Max Kellermann e7c963f2ce python/build/libs.py: disable more unused FFmpeg features 2023-05-21 20:40:39 +02:00
Naïm Favier 949d72e368 output/PipeWire: lock thread loop in SendTag 2023-05-21 20:40:29 +02:00
Max Kellermann 8d2a184658 python/build/libs.py: update CURL to 7.88.1 2023-05-21 20:36:28 +02:00
Max Kellermann c877a32d97 python/build/libs.py: update OpenSSL to 3.0.8 2023-05-21 20:36:23 +02:00
Max Kellermann 541468f0ca input/async: check for errors in Seek()
Fixes a busy loop in BufferingInputStream::RunThreadLocked() because
the method never learns that seeking is ignored, even though the HTTP
stream is already broken and can never be read; nobody cared to check
for errors.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1727
2023-05-21 20:34:19 +02:00
Max Kellermann d2797effa3 command/database: add missing include for UINT_MAX 2023-05-21 20:33:34 +02:00
Max Kellermann 1170fb1e1e output/osx: change type to std::size_t to fix -Wc++11-narrowing 2023-05-21 20:33:03 +02:00
Max Kellermann 65b9b3195c lib/dbus/AppendIter: add missing include 2023-05-21 20:33:03 +02:00
Max Kellermann 258830e913 increment version number to 0.23.13 2023-05-21 20:29:23 +02:00
Max Kellermann c69b9780df Merge branch 'reorder-decoder-plugins' of https://github.com/fuck-shithub/MPD 2023-05-15 21:03:35 +02:00
Max Kellermann f869593ac8 TimePrint: minor fixup for libfmt 10
libfmt version 10 has difficulties formatting a `StringBuffer`, and we
need to help it by explicitly invoking the `c_str()` method.
2023-05-15 21:00:24 +02:00
Max Kellermann 181b96dd2d command/player, SongPrint: use AudioFormatFormatter()
libfmt version 10 apparently doesn't know how to format a
`StringBuffer`, failing the MPD build.  Since we have a formatter
specialization for `AudioFormat`, let's use that - it's better and
easier to use.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1807
2023-05-15 20:59:05 +02:00
latex 4e9f463bb6 reorder ffmpeg to be lower priority than gme
This should prevent ffmpeg from taking priority over the gme plugin.
The ffmpeg plugin is more buggy than gme.
One of the prominent bugs of preferring ffmpeg over gme is that ffmpeg
cannot seek SAP files while gme can. This should prevent that from
happening.
2023-05-12 00:28:56 +02:00
skidoo23 4345a656aa
output/httpd: fix libfmt icy-metaint replacement field
Since using libfmt (commit: dfc5b49) ICY MetaData was broken. Eg MP3 streams encoded with LAME were affected resulting in missing stream titles on VLC or strange noises on Sonos hardware. This commit fixes the icy-metaint field.
2023-05-04 18:15:13 +02:00
Max Kellermann 31dc8b73b7 db/update/Archive: validate directory names
Fixes assertion failure if the ZIP file contains a path that begins
with a slash.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1793
2023-04-30 08:46:52 +02:00
Max Kellermann e84db4f411 db/update/Archive: ignore filenames with newline character 2023-04-30 08:45:34 +02:00
Max Kellermann 395bf34a91 db/update/Archive: move check to IsAcceptableFilename() 2023-04-30 08:42:16 +02:00
Max Kellermann dcc7628b67 db/update/Archive: remove useless log message 2023-04-30 08:39:34 +02:00
Max Kellermann f2a4ae15aa db/update: pass filenames as std::string_view 2023-04-30 08:28:43 +02:00
Max Kellermann 434bcb08ee db/simple/Song: pass std::string_view to Load{File,FromArchive}() 2023-04-30 08:21:20 +02:00
Max Kellermann 99885c4cbc util/IntrusiveHashSet: add method remove_and_dispose() 2023-04-22 08:40:53 +02:00
Simon Arlott ab196f7afc
output/Control: Support `always_off` outputs that are never used for playback
Add an `always_off` option to outputs that causes them to never start
playback even if they're enabled.

This allows placeholder `null` outputs to be defined for the purpose
of having an external client react to the enabled state without the
side effects of real outputs. Like an external mixer, the client can
perform some action when an output is enabled.

Normally `null` outputs can be used for playback so it's possible for
MPD to continue playback silently if a problem occurs with all the real
outputs (or there are none enabled).
2023-04-21 20:54:37 +01:00
Max Kellermann 90c3fe22f5 decoder/openmpt: check libopenmpt version at compile time, not at configure time 2023-04-21 17:29:20 +02:00
Simon Arlott ad8117e7c8 decoder/openmpt: Fix build error with libopenmpt < 0.5
openmpt_at_end is a string, not an integer

Fixes build error:

 src/decoder/plugins/OpenmptDecoderPlugin.cxx: In function 'void mod_decode(DecoderClient&, InputStream&)':
 src/decoder/plugins/OpenmptDecoderPlugin.cxx:85:44: error: invalid cast from type 'std::string_view' {aka 'std::basic_string_view<char>'} to type 'unsigned in '
   85 |  mod.ctl_set("play.at_end", std::to_string((unsigned)openmpt_at_end));
      |                                            ^~~~~~~~~~~~~~~~~~~~~~~~
2023-04-21 17:24:42 +02:00
Benjamin Cremer 82568c0b52
Fix syntax error in mpdconf.example 2023-04-13 08:47:43 +02:00
datasone 838b19c2b5 db/SimpleDatabasePlugin: store `in_playlist` value of songs into database
Fixes hide_playlist_targets not working after server restart

Currently, `hide_playlists_targets` works by skipping songs with
`in_playlist` value set to true in
[`Directory::Walk`](a57bcd0238/src/db/plugins/simple/Directory.cxx (L237)). But
`in_playlist` is not stored and only updated in
[`UpdateWalk::PurgeDanglingFromPlaylists`](a57bcd0238/src/db/update/Playlist.cxx (L139)),
which will only be executed while updating DB.

This causes the problem that playlist target songs are correctly
hidden after database update, but will remain visible after mpd server
restarted. This pr solves the problem by storing `in_playlist` value
of songs into the `SimpleDatabase` file.
2023-04-12 05:18:21 +02:00
kaliko 0d2f67b523 check systemd unit dir from systemd.pc in meson 2023-04-11 21:06:53 +02:00
Max Kellermann a57bcd0238 thread/Mutex: add RecursiveMutex 2023-04-06 21:32:18 +02:00
Max Kellermann 76497bd5f7 util/IntrusiveSortedList, event/TimerList: include cleanup 2023-04-06 10:24:53 +02:00
Max Kellermann 53ec02d5e9 net/SocketDescriptor: decouple from FileDescriptor on Windows
On Windows, a socket is not a file descriptor; it is a different beast
(and anyway, Windows doesn't have file descriptors).
2023-03-29 10:12:50 +02:00
Max Kellermann 7a5f485cf8 event/ServerSocket: use class UniqueSocketDescriptor in SupportsIPv6() 2023-03-29 10:06:48 +02:00
Max Kellermann 90565b1e36 test/run_{input,output}: add missing includes 2023-03-29 10:06:48 +02:00
Max Kellermann 6f7c7a2149 event/EpollBackend: add missing header guard 2023-03-21 11:00:41 +01:00
Max Kellermann 91123983ad Revert "python/build/meson.py: keep Meson from executing Android-x86 test binaries"
This reverts commit 8ab2722300.  The
"needs_exe_wrapper" setting was already there, and the new one was
misplaced, it belongs in "[properties]".
2023-03-21 09:46:25 +01:00
Max Kellermann 2506edbffb python/build/libs.py: update OpenSSL to 3.1.0 2023-03-21 09:39:28 +01:00
Max Kellermann 929520ecd2 python/build/libs.py: update CURL to 8.0.1 2023-03-21 09:38:22 +01:00
Max Kellermann a20d467bf1 event/Loop: move quit_injected check to inside `#ifdef HAVE_THREADED_EVENT_LOOP` 2023-03-20 15:02:32 +01:00
Max Kellermann 102dc123e8 LogBackend: log to stderr (regression fix) 2023-03-14 20:25:28 +01:00
Max Kellermann b4d0b23369 LogBackend: use fmt::print() 2023-03-14 20:24:14 +01:00
Max Kellermann 119a949bb5 ls: use fmt::print() 2023-03-14 20:20:46 +01:00
Max Kellermann f5b22bf2c3 input/Offset: remove unused macro `PRIoffset` 2023-03-14 20:20:10 +01:00
Max Kellermann 5b7a89d714 mixer/plugins/volume_mapping: convert to C++ 2023-03-14 20:18:41 +01:00
Max Kellermann 5b41857a22 mixer/plugins/volume_mapping: add SPDX header 2023-03-14 20:08:43 +01:00