- 12 Jan, 2020 1 commit
-
-
Max Kellermann authored
Closes https://github.com/MusicPlayerDaemon/MPD/issues/708
-
- 06 Nov, 2019 1 commit
-
-
Max Kellermann authored
Apparently, Icecast defaults to ISO-8859-1 for MP3: http://icecast.org/docs/icecast-2.4.0/config-file.html#mountsettings This change forces Icecast to UTF-8 without having to configure it in Icecast's configuration file.
-
- 29 Oct, 2019 1 commit
-
-
Niklas Haas authored
This is the correct thing to do for ports from which a signal ultimately "originates", such as is the case with mpd.
-
- 22 Aug, 2019 1 commit
-
-
Max Kellermann authored
This header had been available for a long time on Linux, but was removed in glibc 2.30. This commit moves the `#include` line inside the `#ifdef __sun` block and adds a fake declaration of `I_FLUSH` for the Linux build. Closes https://github.com/MusicPlayerDaemon/MPD/issues/630
-
- 06 Aug, 2019 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Without this, the compiler may optimize accesses away.
-
Max Kellermann authored
-
- 02 Aug, 2019 1 commit
-
-
Diomendius authored
The JACK output plugin would not correctly upmix mono input files when exactly 2 output ports were configured. This fixes that.
-
- 28 Jun, 2019 8 commits
-
-
Max Kellermann authored
MPD used to do that when this code lived in the player thread, but it was removed by commit 98a7c62d; and the replacement code in the ALSA output plugin didn't have it.
-
Max Kellermann authored
Without this timer, DispatchSockets() may disable the MultiSocketMonitor and if Play() doesn't get called soon, it never gets a chance to generate silence. However if Play() gets called, generating silence isn't necessary anymore... Resulting from this misdesign (added by commit ccafe3f3 in 0.21.3), the silence generator didn't work reliably.
-
Max Kellermann authored
In DispatchSockets(), when there was not enough data, but enough for current playback, the method would disable the "active" flag so the next Play() call would re-enable the MultiSocketMonitor. This was an abuse of the flag which could result in a crash in Cancel(), because that method asserts that the period_buffer is empty, which it may be not. The solution is to add anther flag called "waiting" which shares some behavior with the old flag.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Draining isn't finished just because the period_buffer has run empty. It is only finished after snd_pcm_drain() has succeeded.
-
Max Kellermann authored
Apparently, if snd_pcm_drain() returns EAGAIN, it does not actually want to be called again; the next call will snd_pcm_drain() will also return EAGAIN, forever, even though the PCM state has meanwhile switched to SND_PCM_STATE_SETUP. This causes a busy loop; to fix this, we should always check snd_pcm_state() to see if draining is really required.
-
- 17 Jun, 2019 1 commit
-
-
Max Kellermann authored
This can happen if the DoP converter doesn't get enough source samples for one destination quad. This isn't a critical bug, because the OSS plugin doesn't support DoP yet, but it's good to be prepared.
-
- 05 Jun, 2019 3 commits
-
-
cathugger authored
Return `404 not found` for some common well-known paths, as clients requesting them usually do that automatically and don't expect endless audio stram. Closes #572
-
cathugger authored
memcmp use may result in out of bounds access
-
Max Kellermann authored
-
- 04 Apr, 2019 1 commit
-
-
Max Kellermann authored
This missing piece probably never really hurt, because HttpdClient::OnSocketClosed() would be called right after a socket error, but it's better to be explicit about closing on error.
-
- 03 Apr, 2019 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
- 29 Mar, 2019 1 commit
-
-
François Revol authored
Fixes #184. Semaphores are kernel-managed objects, calling delete_sem() twice is not more dangerous than calling close() twice on an fd though, it would just return an error.
-
- 17 Mar, 2019 2 commits
-
-
Max Kellermann authored
-
Jacob Vosmaer authored
-
- 16 Mar, 2019 1 commit
-
-
Max Kellermann authored
Unlike pa_channel_map_init_auto(), pa_channel_map_init_extend() does not fail if there is no valid mapping for the given channel count, but instead maps additional "AUX" channels. Closes https://github.com/MusicPlayerDaemon/MPD/issues/493
-
- 26 Jan, 2019 1 commit
-
-
Yue Wang authored
Currently it falls back to system default device (either internal speaker or headphone) when device not found. I believe it is a better to fail in this case, to make it better aligned with platforms (such as alsa).
-
- 21 Jan, 2019 1 commit
-
-
Max Kellermann authored
Fixes build failure after commit 0cea67ee
-
- 19 Jan, 2019 1 commit
-
-
Jakob Ovrum authored
-
- 28 Dec, 2018 5 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
libwrap is an obscure artefact from a past long ago, when source IP address meant something. And its API is "interesting"; it requires the application to expose two global variables `allow_severity` and `deny_severity`. This led to bug #437. I don't want to declare those variables; instead, I'd like to remove libwrap support. Closes #437
-
- 14 Dec, 2018 1 commit
-
-
HyShai authored
-
- 19 Nov, 2018 1 commit
-
-
Max Kellermann authored
Since we switched from autotools to Meson in commit 94592c14, we don't need to include `config.h` early to properly enable large file support. Meson passes the required macros on the compiler command line instead of defining them in `config.h`. This means we can include `config.h` at any time, whenever we want to check its macros, and there are no ordering constraints.
-
- 16 Nov, 2018 1 commit
-
-
Max Kellermann authored
Works around a problem where MPD goes into a busy loop because snd_pcm_drain() always returns `-EAGAIN` without making any progress (fixes #425). This problem was triggered by snd_pcm_drain() after snd_pcm_cancel() and snd_pcm_prepare(), but without submitting any data with snd_pcm_writei(). I believe this is a kernel bug: in non-blocking mode, the kernel's snd_pcm_drain() function returns early. In this mode, it only checks whether snd_pcm_drain_done() has been called already, but snd_pcm_drain_done() is never called if no data was submitted. In blocking mode, the following `for` loop detects this condition, so snd_pcm_drain_done() is not necessary, but without this extra check, we get `-EAGAIN` forever.
-
- 14 Nov, 2018 2 commits
-
-
Max Kellermann authored
This fixes a problem which caused a failure with snd_pcm_writei() because snd_pcm_drain() had already been called in the previous iteration. This commit makes sure that snd_pcm_drain() is only called after the final snd_pcm_writei() call. This fixes discarded samples at the end of playback.
-
Max Kellermann authored
When a playback error has occurred, MPD would never recover until one restarts MPD.
-