summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-12-20output/SharedPipeConsumer: update API documentationMax Kellermann
2016-12-19input/curl: wrap CURLM* in new class CurlMultiMax Kellermann
2016-12-19input/curl: rename class CurlMulti to CurlGlobalMax Kellermann
2016-12-19input/curl: wrap CURL* in new class CurlEasyMax Kellermann
2016-12-19input/curl: remove duplicate InitEasy() callMax Kellermann
2016-12-14output/Client: new interface to replace direct access to class PlayerControlMax Kellermann
2016-12-14player/Thread: reduce unlock/lock overhead in PlayerCommand::PAUSE handlerMax Kellermann
2016-12-14player/Thread: mutex must be locked inside OpenOutput()Max Kellermann
2016-12-14player/Thread: mutex must be locked inside CheckDecoderStartup()Max Kellermann
2016-12-14output/Multiple: move Wait() to struct PlayerControlMax Kellermann
Eliminate a dependency from MultipleOutputs on PlayerControl.
2016-12-14player/Thread: use class ScopeLockMax Kellermann
2016-12-14player/Control: add method LockApplyBorderPause()Max Kellermann
2016-12-14player/Control: add method LockSetOutputError()Max Kellermann
2016-12-14output/MultipleOutputs: parallelize EnableDisable()Max Kellermann
2016-12-14output/MultipleOutputs: parallelize AudioOutput destructionMax Kellermann
Reduce latency by stopping all AudioOutputs asynchronously.
2016-12-14output/Thread: KILL implicitly closes and disables the AudioOutputMax Kellermann
Reduce shutdown latency by two commands per output.
2016-12-14output/MultipleOutputs: move code to AudioOutput::EnableDisableWait()Max Kellermann
2016-12-14output/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-13output/Thread: wake up the player thread periodically while playingMax 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-13NEWS: add "player" sectionMax Kellermann
2016-12-13output/Thread: eliminate redundant nullptr checkMax Kellermann
2016-12-13output/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-13output/Thread: use AtScopeExit() to revert the in_playback_loop flagMax Kellermann
2016-12-13output/Thread: eliminate one ScopeLockMax Kellermann
2016-12-13output/Thread: split Open()Max Kellermann
Simplify the code, eliminate duplicate rollback code and eliminate the "goto" kludge.
2016-12-13output/Thread: simplify the retry_audio_format declarationMax Kellermann
2016-12-13output/Thread: reduce locking further in Open()Max Kellermann
2016-12-13output/Thread: unlock mutex during OpenFilter()Max Kellermann
2016-12-13output/Thread: remove unused variableMax Kellermann
2016-12-13AudioFormat: add method WithMask(), shortcut for ApplyMask()Max Kellermann
2016-12-13test/run_convert: pass out_audio_format to PcmConvert::Open()Max Kellermann
2016-12-13output/Thread: remove a useless out_audio_format settingMax 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-13output/Thread: remove another redundant "open" checkMax Kellermann
2016-12-13output/Thread: convert redundant runtime check to assertionMax Kellermann
2016-12-13output/Thread: don't deinitialize the pipe in Close()Max Kellermann
2016-12-13output/Internal: merge REOPEN and OPENMax Kellermann
2016-12-13output/Thread: move MusicPipe code to class SharedPipeConsumerMax Kellermann
2016-12-13Merge tag 'v0.19.21'Max Kellermann
release v0.19.21
2016-12-13release v0.19.21v0.19.21Max Kellermann
2016-12-13Makefile.am: fix mpd.socket path in EXTRA_DISTMax Kellermann
2016-12-13NEWS: fix version numberMax Kellermann
2016-12-13systemd: add user unitMax 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-13systemd: add "system" sub directoryMax Kellermann
2016-12-13doc/user: fix --with-systemdsystemunitdir exampleMax Kellermann
2016-12-13test/test_queue_priority: fix unit test failure after recent "setprio" changeMax Kellermann
2016-12-13decoder/ffmpeg: fix double free bugMax 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-13configure.ac: prepare for 0.19.21Max Kellermann
2016-12-11output/Multiple: make chunk_is_consumed_in() an AudioOutput methodMax Kellermann
2016-12-10decoder/wavpack: implement WavpackStreamReader64 if availableMax Kellermann
2016-12-10decoder/wavpack: move code to WavpackInput methodsMax Kellermann