Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | output/pulse: move more code into the struct | Max Kellermann | 2015-01-04 | 1 | -75/+148 |
| | |||||
* | output/pulse: use AudioOutputWrapper::Init() | Max Kellermann | 2015-01-04 | 1 | -9/+7 |
| | |||||
* | output/openal: convert macro to constexpr | Max Kellermann | 2015-01-03 | 1 | -3/+3 |
| | |||||
* | output/openal: convert struct to class | Max Kellermann | 2015-01-03 | 1 | -1/+1 |
| | |||||
* | output/openal: move functions into the class | Max Kellermann | 2015-01-02 | 1 | -121/+116 |
| | |||||
* | Copyright year 2015 | Max Kellermann | 2015-01-01 | 65 | -65/+65 |
| | |||||
* | output/osx: use nullptr instead of NULL | Max Kellermann | 2014-12-31 | 1 | -8/+8 |
| | |||||
* | output/pulse: move code into the struct | Max Kellermann | 2014-12-30 | 3 | -286/+299 |
| | |||||
* | output/Wrapper: new helper class | Max Kellermann | 2014-12-29 | 6 | -256/+159 |
| | |||||
* | output/pulse: move initialization to constructor | Max Kellermann | 2014-12-29 | 1 | -5/+3 |
| | |||||
* | output/pulse: remove unnecessary initialization | Max Kellermann | 2014-12-29 | 1 | -2/+0 |
| | |||||
* | {mixer,output}/pulse: move code to LogPulseError() | Max Kellermann | 2014-12-29 | 1 | -6/+4 |
| | |||||
* | output/pulse: move SetError() to lib/pulse/Error.cxx | Max Kellermann | 2014-12-29 | 1 | -21/+17 |
| | |||||
* | {mixer,output}/pulse: use a common Domain instance | Max Kellermann | 2014-12-29 | 1 | -12/+10 |
| | |||||
* | output/fifo: make variables more local | Max Kellermann | 2014-12-28 | 1 | -2/+1 |
| | |||||
* | output/pipe: convert to class | Max Kellermann | 2014-12-27 | 1 | -1/+2 |
| | |||||
* | output/pipe: add static method Create() | Max Kellermann | 2014-12-27 | 1 | -6/+14 |
| | |||||
* | output/pipe: merge Initialize() and Configure() | Max Kellermann | 2014-12-27 | 1 | -9/+4 |
| | |||||
* | output/pipe: move functions into the struct | Max Kellermann | 2014-12-27 | 1 | -18/+35 |
| | |||||
* | EncoderPlugin: pass Tag reference to method tag() | Max Kellermann | 2014-12-26 | 3 | -3/+3 |
| | |||||
* | OutputPlugin: pass Tag reference to _send_tag() | Max Kellermann | 2014-12-26 | 8 | -19/+17 |
| | |||||
* | output/recorder: implement send_tag() | Max Kellermann | 2014-12-26 | 1 | -1/+22 |
| | |||||
* | output/recorder: move functions into the struct | Max Kellermann | 2014-12-26 | 1 | -25/+40 |
| | |||||
* | output/jack: fix implicit nullptr/bool conversion | Max Kellermann | 2014-12-26 | 1 | -2/+2 |
| | | | | Return false on error, not nullptr. | ||||
* | Merge branch 'v0.19.x' | Max Kellermann | 2014-12-26 | 1 | -1/+1 |
|\ | |||||
| * | Merge branch 'v0.18.x' into v0.19.x | Max Kellermann | 2014-12-26 | 1 | -1/+1 |
| |\ | |||||
| | * | db/proxy, output/shout: fix implicit nullptr/bool conversion | Max Kellermann | 2014-12-26 | 1 | -1/+1 |
| | | | | | | | | | | | | Return false on error, not nullptr. | ||||
| | * | output/roar: remove unnecessary "volatile" keyword | Max Kellermann | 2014-11-02 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | A mutex acts as a memory barrier, and thus "volatile" is not necessary. | ||||
* | | | output/jack: move code to separate functions | Max Kellermann | 2014-12-25 | 1 | -40/+73 |
| | | | |||||
* | | | output/jack: cache AudioFormat::channels | Max Kellermann | 2014-12-24 | 1 | -4/+6 |
| | | | |||||
* | | | output/jack: fix typo | Max Kellermann | 2014-12-24 | 1 | -1/+1 |
| | | | |||||
* | | | output/jack: use jack_ringbuffer_get_write_vector() | Max Kellermann | 2014-12-24 | 1 | -10/+20 |
| | | | | | | | | | | | | Reduce number of libjack calls. | ||||
* | | | output/jack: move jack_ringbuffer_write_space() call to WriteSamples() | Max Kellermann | 2014-12-24 | 1 | -19/+21 |
| | | | |||||
* | | | output/jack: cache AudioFormat::channels | Max Kellermann | 2014-12-24 | 1 | -4/+3 |
| | | | |||||
* | | | output/jack: pass float* to WriteSamples() | Max Kellermann | 2014-12-24 | 1 | -5/+3 |
| | | | |||||
* | | | output/jack: WriteSamples() returns size_t | Max Kellermann | 2014-12-24 | 1 | -4/+11 |
| | | | |||||
* | | | output/jack: pass size_t to WriteSamples() | Max Kellermann | 2014-12-24 | 1 | -3/+3 |
| | | | |||||
* | | | output/jack: use SampleFormat::FLOAT | Max Kellermann | 2014-12-24 | 1 | -55/+9 |
| | | | | | | | | | | | | | | | | | | What JACK expects is already implemented in MPD, just not used. The sample format conversion code in the JACK plugin was redundant and could reduce sound quality. | ||||
* | | | output/Internal: move enum AudioOutputCommand into the struct | Max Kellermann | 2014-12-24 | 4 | -58/+58 |
| | | | |||||
* | | | output/Internal: convert audio_output_command to strictly-typed enum | Max Kellermann | 2014-12-24 | 4 | -47/+49 |
| | | | |||||
* | | | output/jack: use std::fill() | Max Kellermann | 2014-12-24 | 1 | -9/+6 |
| | | | |||||
* | | | output/jack: move functions into the struct | Max Kellermann | 2014-12-24 | 1 | -208/+246 |
| | | | |||||
* | | | output/jack: merge two mpd_jack_available() calls | Max Kellermann | 2014-12-24 | 1 | -2/+2 |
| | | | |||||
* | | | output/jack: make variables more local | Max Kellermann | 2014-12-24 | 1 | -21/+15 |
| | | | |||||
* | | | output/jack: convert const to constexpr | Max Kellermann | 2014-12-24 | 1 | -1/+1 |
| | | | |||||
* | | | output/jack: convert enum to constexpr | Max Kellermann | 2014-12-24 | 1 | -3/+1 |
| | | | |||||
* | | | output/winmm: show detailed error messages | Max Kellermann | 2014-12-17 | 1 | -7/+18 |
| | | | |||||
* | | | output/oss: make the static arrays "constexpr" | Max Kellermann | 2014-12-09 | 1 | -3/+3 |
| | | | |||||
* | | | Merge tag 'v0.19.6' | Max Kellermann | 2014-12-08 | 1 | -0/+1 |
|\| | | |||||
| * | | Output: start with a null mixer. | Nix | 2014-12-01 | 1 | -0/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are code paths (mostly error cases) in which it is possible to initialize an AudioOutput and then kill it without ever calling audio_output_new(). In such a case, its destructor will attempt to free a mixer that was never initialized, leading to an attempt to take out a lock on a mutex that was similarly never initialized, which hangs forever. Fix by always initializing the mixer appropriately. |