Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-12-20 | output/SharedPipeConsumer: update API documentation | Max Kellermann | |
2016-12-19 | input/curl: wrap CURLM* in new class CurlMulti | Max Kellermann | |
2016-12-19 | input/curl: rename class CurlMulti to CurlGlobal | Max Kellermann | |
2016-12-19 | input/curl: wrap CURL* in new class CurlEasy | Max Kellermann | |
2016-12-19 | input/curl: remove duplicate InitEasy() call | Max Kellermann | |
2016-12-14 | output/Client: new interface to replace direct access to class PlayerControl | Max Kellermann | |
2016-12-14 | player/Thread: reduce unlock/lock overhead in PlayerCommand::PAUSE handler | Max Kellermann | |
2016-12-14 | player/Thread: mutex must be locked inside OpenOutput() | Max Kellermann | |
2016-12-14 | player/Thread: mutex must be locked inside CheckDecoderStartup() | Max Kellermann | |
2016-12-14 | output/Multiple: move Wait() to struct PlayerControl | Max Kellermann | |
Eliminate a dependency from MultipleOutputs on PlayerControl. | |||
2016-12-14 | player/Thread: use class ScopeLock | Max Kellermann | |
2016-12-14 | player/Control: add method LockApplyBorderPause() | Max Kellermann | |
2016-12-14 | player/Control: add method LockSetOutputError() | Max Kellermann | |
2016-12-14 | output/MultipleOutputs: parallelize EnableDisable() | Max Kellermann | |
2016-12-14 | output/MultipleOutputs: parallelize AudioOutput destruction | Max Kellermann | |
Reduce latency by stopping all AudioOutputs asynchronously. | |||
2016-12-14 | output/Thread: KILL implicitly closes and disables the AudioOutput | Max Kellermann | |
Reduce shutdown latency by two commands per output. | |||
2016-12-14 | output/MultipleOutputs: move code to AudioOutput::EnableDisableWait() | Max Kellermann | |
2016-12-14 | output/MultipleOutputs: reduce lock/unlock calls in EnableDisable() | Max Kellermann | |
Use ScopeLock to manage the lock; don't unlock after obtaining the "really_enabled" flag; keep the same lock during EnableWait() / DisableWait(). | |||
2016-12-13 | output/Thread: wake up the player thread periodically while playing | Max Kellermann | |
Without this, the pipe would run empty very often, which may result in an xrun if the roundtrip to the PlayerThread and back takes too long. By waking up the PlayerThread before the pipe runs empty, we make MPD much more latency tolerant, which is a major optimization. | |||
2016-12-13 | NEWS: add "player" section | Max Kellermann | |
2016-12-13 | output/Thread: eliminate redundant nullptr check | Max Kellermann | |
2016-12-13 | output/Thread: don't wake up the player after receiving command in Play() | Max Kellermann | |
If we have a pending command, then the player thread is already awake. Even if not, we'll wake it up as soon as we have finished the command. | |||
2016-12-13 | output/Thread: use AtScopeExit() to revert the in_playback_loop flag | Max Kellermann | |
2016-12-13 | output/Thread: eliminate one ScopeLock | Max Kellermann | |
2016-12-13 | output/Thread: split Open() | Max Kellermann | |
Simplify the code, eliminate duplicate rollback code and eliminate the "goto" kludge. | |||
2016-12-13 | output/Thread: simplify the retry_audio_format declaration | Max Kellermann | |
2016-12-13 | output/Thread: reduce locking further in Open() | Max Kellermann | |
2016-12-13 | output/Thread: unlock mutex during OpenFilter() | Max Kellermann | |
2016-12-13 | output/Thread: remove unused variable | Max Kellermann | |
2016-12-13 | AudioFormat: add method WithMask(), shortcut for ApplyMask() | Max Kellermann | |
2016-12-13 | test/run_convert: pass out_audio_format to PcmConvert::Open() | Max Kellermann | |
2016-12-13 | output/Thread: remove a useless out_audio_format setting | Max Kellermann | |
Now that I can see the Reopen() method clearly, it is obvious that the out_audio_format setting will get overwritten by the following Open() call. | |||
2016-12-13 | output/Thread: remove another redundant "open" check | Max Kellermann | |
2016-12-13 | output/Thread: convert redundant runtime check to assertion | Max Kellermann | |
2016-12-13 | output/Thread: don't deinitialize the pipe in Close() | Max Kellermann | |
2016-12-13 | output/Internal: merge REOPEN and OPEN | Max Kellermann | |
2016-12-13 | output/Thread: move MusicPipe code to class SharedPipeConsumer | Max Kellermann | |
2016-12-13 | Merge tag 'v0.19.21' | Max Kellermann | |
release v0.19.21 | |||
2016-12-13 | release v0.19.21v0.19.21 | Max Kellermann | |
2016-12-13 | Makefile.am: fix mpd.socket path in EXTRA_DIST | Max Kellermann | |
2016-12-13 | NEWS: fix version number | Max Kellermann | |
2016-12-13 | systemd: add user unit | Max Kellermann | |
The user unit omits the "ProtectKernelModules" setting which fails with modular kernels: Failed at step CAPABILITIES spawning /usr/bin/mpd: Operation not permitted It is unfortunate that systemd (version 232) is unable to reduce its own capabilities, because this requires us to split system and user units. https://bugs.musicpd.org/view.php?id=4608 | |||
2016-12-13 | systemd: add "system" sub directory | Max Kellermann | |
2016-12-13 | doc/user: fix --with-systemdsystemunitdir example | Max Kellermann | |
2016-12-13 | test/test_queue_priority: fix unit test failure after recent "setprio" change | Max Kellermann | |
2016-12-13 | decoder/ffmpeg: fix double free bug | Max Kellermann | |
From the avformat_open_input() API documentation: "Note that a user-supplied AVFormatContext will be freed on failure." https://bugs.musicpd.org/view.php?id=4607 | |||
2016-12-13 | configure.ac: prepare for 0.19.21 | Max Kellermann | |
2016-12-11 | output/Multiple: make chunk_is_consumed_in() an AudioOutput method | Max Kellermann | |
2016-12-10 | decoder/wavpack: implement WavpackStreamReader64 if available | Max Kellermann | |
2016-12-10 | decoder/wavpack: move code to WavpackInput methods | Max Kellermann | |