Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | MultipleOutputs: ensure input_audio_format is zero-initialised | Pete Beardmore | 2014-03-14 | 1 | -0/+1 |
| | | | | | | | | | | | | | | | -fixes SIGABRT when mpd is started from a previously paused state -regression introduced by commit: f5a923b9d16e4c63942a033d1bdb2ab150aae342: 'OutputAll: convert to class, move instance to class Partition' -input_audio_format was previously declared using the static modifier ensuring it was zero-initialised by default -the current default-initialised input_audio_format contains garbage at runtime which allows the AudioFormat.IsDefined() 'fail fast' test in MultipleOutputs::Update to pass and the SIGABRT follows in AudioOutput::Open when passed the invalid input_audio_format struct -switching AudioFormat.IsDefined() for AudioFormat.IsValid() is an alternative workaround | ||||
* | PulseOutputPlugin: set icon name | Pete Beardmore | 2014-03-04 | 1 | -0/+1 |
| | |||||
* | Merge tag 'release-0.18.9' | Max Kellermann | 2014-03-02 | 1 | -33/+22 |
|\ | |||||
| * | output/alsa: remove the obsolete Raspberry Pi workaround | Max Kellermann | 2014-03-02 | 1 | -36/+0 |
| | | | | | | | | Has been superseded by the previous commit. | ||||
| * | output/alsa: call snd_pcm_prepare() after snd_pcm_drop() | Max Kellermann | 2014-03-02 | 1 | -0/+25 |
| | | | | | | | | | | | | | | Don't wait for an optimistic write to fail. This is an improved workaround for the infamous Raspberry Pi bug (see commit af991765). It works much better and comes without the negative side effects. The old workaround is now obsolete. | ||||
| * | output/pulse: remove bogus g_free() call | Max Kellermann | 2014-02-24 | 1 | -2/+0 |
| | | |||||
* | | output/sles: support stereo | Max Kellermann | 2014-03-01 | 1 | -5/+7 |
| | | |||||
* | | output/httpd/client: eliminate GLib | Max Kellermann | 2014-02-24 | 1 | -13/+11 |
| | | |||||
* | | output/{shout,win32}: include cleanup | Max Kellermann | 2014-02-24 | 2 | -3/+0 |
| | | |||||
* | | output/openal: use usleep() instead of g_usleep() | Max Kellermann | 2014-02-24 | 1 | -2/+2 |
| | | |||||
* | | output/pulse: use setenv() instead of g_setenv() | Max Kellermann | 2014-02-24 | 1 | -3/+2 |
| | | | | | | | | There is no advantage in using g_setenv(). | ||||
* | | output/pulse: remove bogus g_free() call | Max Kellermann | 2014-02-24 | 1 | -2/+0 |
| | | |||||
* | | output/sles: new output plugin for Android | Max Kellermann | 2014-02-22 | 7 | -0/+817 |
| | | |||||
* | | ConfigGlobal: eliminate function config_get_next_param() | Max Kellermann | 2014-02-20 | 1 | -3/+2 |
| | | |||||
* | | Mixer: add class MixerListener | Max Kellermann | 2014-02-19 | 4 | -11/+31 |
| | | | | | | | | Use a listener interface instead of GlobalEvents. | ||||
* | | output/Init: pass AudioOutput references | Max Kellermann | 2014-02-19 | 1 | -29/+29 |
| | | |||||
* | | output/httpd: move to dedicated directory | Max Kellermann | 2014-02-19 | 10 | -4/+349 |
| | | |||||
* | | Timer: move to output/ | Max Kellermann | 2014-02-19 | 5 | -3/+117 |
| | | |||||
* | | mixer/Plugin: pass AudioOutput reference to init() | Max Kellermann | 2014-02-06 | 7 | -50/+46 |
| | | | | | | | | Passing a void pointer is unsafe. | ||||
* | | MixerPlugin: convert function pointers to Mixer virtual methods | Max Kellermann | 2014-02-06 | 1 | -1/+1 |
| | | |||||
* | | Mixer: use reference instead of pointer for MixerPlugin | Max Kellermann | 2014-02-05 | 1 | -2/+2 |
| | | |||||
* | | Mixer: rename struct mixer_plugin to MixerPlugin | Max Kellermann | 2014-02-05 | 2 | -2/+3 |
| | | |||||
* | | MixerPlugin: add EventLoop& init() parameter | Max Kellermann | 2014-02-05 | 4 | -14/+17 |
| | | |||||
* | | Main, OutputThread: increase kernel timer slack (Linux) | Max Kellermann | 2014-01-30 | 1 | -0/+2 |
| | | | | | | | | | | Allows the kernel to combine timer wakeups with other processes, reducing power usage. | ||||
* | | OutputThread: move more functions into the AudioOutput class | Max Kellermann | 2014-01-29 | 2 | -240/+271 |
| | | |||||
* | | output: rename "chunk" to "current_chunk" | Max Kellermann | 2014-01-29 | 4 | -28/+30 |
| | | |||||
* | | output: move functions into the AudioOutput struct | Max Kellermann | 2014-01-29 | 23 | -328/+281 |
| | | |||||
* | | AudioOutput: make "plugin" a reference | Max Kellermann | 2014-01-29 | 5 | -37/+37 |
| | | |||||
* | | AudioOutput: pass plugin to constructor | Max Kellermann | 2014-01-29 | 18 | -45/+68 |
| | | | | | | | | Make it "const". | ||||
* | | AudioOutput: add constructor and destructor | Max Kellermann | 2014-01-28 | 19 | -101/+27 |
| | | |||||
* | | output: rename source files | Max Kellermann | 2014-01-28 | 16 | -19/+19 |
| | | |||||
* | | output: rename struct audio_output to AudioOutput | Max Kellermann | 2014-01-28 | 31 | -267/+268 |
| | | |||||
* | | OutputPlugin: rename struct audio_output_plugin to AudioOutputPlugin | Max Kellermann | 2014-01-28 | 38 | -49/+52 |
| | | |||||
* | | OutputAll: convert to class, move instance to class Partition | Max Kellermann | 2014-01-28 | 10 | -815/+791 |
| | | | | | | | | Another big chunk of code for multi-player support. | ||||
* | | Mixer*: move to mixer/ | Max Kellermann | 2014-01-24 | 9 | -13/+13 |
| | | |||||
* | | Filter*: move to filter/ | Max Kellermann | 2014-01-24 | 4 | -11/+11 |
| | | |||||
* | | Client*: move to client/ | Max Kellermann | 2014-01-24 | 1 | -1/+1 |
| | | |||||
* | | Config*: move to config/ | Max Kellermann | 2014-01-24 | 8 | -11/+11 |
| | | |||||
* | | output/*: move to output/plugins/ | Max Kellermann | 2014-01-23 | 57 | -17/+3501 |
| | | |||||
* | | Encoder*: move to src/encoder | Max Kellermann | 2014-01-23 | 3 | -6/+6 |
| | | | | | | | | .. and move the plugins to src/encoder/plugins/. | ||||
* | | copyright year 2014 | Max Kellermann | 2014-01-13 | 35 | -35/+35 |
| | | |||||
* | | util/Alloc: new library replacing GLib's g_malloc() | Max Kellermann | 2014-01-07 | 1 | -1/+1 |
| | | |||||
* | | event/SocketMonitor: don't close the socket automatically | Max Kellermann | 2014-01-06 | 1 | -0/+3 |
| | | | | | | | | | | | | Users now have to call Close() explicitly. This simplifies using the class, as most users have automatic socket management already, and Steal() had to be used often. | ||||
* | | util/Cast: new utility library | Max Kellermann | 2014-01-06 | 1 | -1/+2 |
| | | |||||
* | | output/httpd: move the clients.clear() call to the IOThread | Max Kellermann | 2014-01-05 | 1 | -1/+3 |
| | | | | | | | | This call is not thread-safe. | ||||
* | | output/httpd: import GetEventLoop() | Max Kellermann | 2014-01-05 | 2 | -3/+5 |
| | | |||||
* | | output/httpd: move Bind()/Unbind() to the IOThread | Max Kellermann | 2014-01-04 | 1 | -4/+8 |
| | | | | | | | | Fixes more thread-safety bugs. | ||||
* | | output/httpd: move all broadcast operations to the IOThread | Max Kellermann | 2014-01-04 | 2 | -11/+76 |
| | | | | | | | | | | | | | | Add a Page queue to class HttpdOutput, and use DeferredMonitor to flush this queue inside the IOThread. This fixes a thread-safety issue: much of EventLoop is not thread-safe, and the httpd plugin ignored that problem. | ||||
* | | output/httpd: use the IOThread | Max Kellermann | 2014-01-04 | 1 | -2/+2 |
| | | | | | | | | | | Do all I/O in the IOThread and not in the main thread. This solves an upcoming deadlock problem. | ||||
* | | output/httpd: move queue size check to HttpdClient::PushPage() | Max Kellermann | 2014-01-04 | 3 | -18/+6 |
| | | | | | | | | Don't let the server care for client problems. |