- 10 Feb, 2017 15 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Since we switched to C++ exceptions, there is no code path which returns false.
-
Max Kellermann authored
We don't need to access Thread::handle early inside the EventThread, so we don't need this trick anymore.
-
Max Kellermann authored
Eliminate global variables.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
.. and not the input data. Regression from commit b1c7649e (integer underflow). https://bugs.musicpd.org/view.php?id=4639
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
- 09 Feb, 2017 13 commits
-
-
Max Kellermann authored
Use SND_PCM_NONBLOCK, and perform all snd_pcm_writei() calls in the IOThread. Use a lockless queue to copy data from the OutputThread to the IOThread. This rather major change aims to improve MPD's internal latency. All waits are now under MPD's control, instead of blocking inside libasound2. As a side effect, an output's filter is now decoupled from the actual device I/O, which solves a major latency problem with the conversion filter on slow CPUs and small period buffers. See: https://bugs.musicpd.org/view.php?id=3900
-
Max Kellermann authored
The main EventLoop can block for a long time while a client's command runs, and is therefore inappropriate for internal engine I/O. This fixes a serious regression for at least the "httpd" output, which used to be hard-coded for the IOThread, but now receives the main EventLoop as an initialization parameter. For the mixers, this doesn't make much of a difference. They are not latency critical.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Fixes build breakage by commit 4e5271fc; and this method does make sense in non-debug builds.
-
Max Kellermann authored
Fixes potential crash bug.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Now ClearSocketList() may only be called from PrepareSockets(). Calling it before destroying the object doesn't work properly, because it doesn't unregister the TimeoutMonitor and the IdleMonitor. Some of its callers need to be fixed.
-
Max Kellermann authored
Change EventLoop::IsInside() call to EventLoop::IsInsideOrNull(). This means that BlockingCall() may be used during shutdown, after the main EventLoop::Run() has finished. This is important because mixers are currently registered in the main EventLoop.
-
Max Kellermann authored
The libsidplayfp fork has merged libsidutils into the main library. The libsidutils we used to link with was part of the original libsidplay project.
-
Max Kellermann authored
Doesn't make a practical difference - but it's more correct this way.
-
- 08 Feb, 2017 12 commits
-
-
Max Kellermann authored
Implement the second part of https://bugs.musicpd.org/view.php?id=3990
-
Max Kellermann authored
These days, this is common knowledge, and doesn't need a lengthy explanation.
-
Max Kellermann authored
-
Max Kellermann authored
An explicit destructor prevents usage of implicit move operators, even if it's empty. Therefore, declaring a defaulted destructor with GCC attribute "noinline" does what we want without preventing those implicit operators.
-
Max Kellermann authored
-
Max Kellermann authored
This reverts commit 67b7d464. Turns out I was wrong, and mentioning these does make a difference: the implicit move constructor is not defined in the presence of a user-declared destructor.
-
Max Kellermann authored
-
Max Kellermann authored
Some database plugins don't use a Storage (e.g. UPnP), and with this plugin, DatabaseDetachSong() can crash.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-