Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | PlayerThread: reduce the number of DecoderThread wakeups | Max Kellermann | 2013-11-06 | 1 | -2/+14 |
| | | | | | | | After the number of decoded chunks has fallen below the threshold, the PlayerThread woke up the DecoderThread over and over. This commit adds a boolean flag that avoids these duplicate wakeups, and thus reduces the number of system calls. | ||||
* | DecoderControl: reduce the number of PlayerThread wakeups | Max Kellermann | 2013-11-06 | 3 | -4/+26 |
| | | | | | Wake up the PlayerThread only if it is really waiting for the decoder. This greatly reduces the number of system calls in the DecoderThread. | ||||
* | DecoderInternal: lock DecoderControl in _flush_chunk() | Max Kellermann | 2013-11-06 | 2 | -0/+4 |
| | | | | Must hold the Mutex to signal the Cond object safely. | ||||
* | DecoderInternal: wake up the player thread in _flush_chunk() | Max Kellermann | 2013-11-06 | 2 | -4/+2 |
| | | | | Merge duplicate code. | ||||
* | event/FullyBufferedSocket: remove obsolete TODO comment | Max Kellermann | 2013-11-06 | 1 | -16/+0 |
| | | | | We have a better solution now. | ||||
* | ClientRead: "close" flushes the output buffer | Max Kellermann | 2013-11-06 | 4 | -1/+14 |
| | | | | | | Add a new CommandResult code called "FINISH" which, unlike "CLOSE", will attempt to flush the output buffer. This is a one-shot attempt; it will do one write, and not try again. | ||||
* | event/FullyBufferedSocket: try to write without extra roundtrip | Max Kellermann | 2013-11-06 | 2 | -17/+33 |
| | | | | | | Postpone the write using IdleMonitor instead of scheduling a write event. This reduces the number of system calls, because we don't need to register and unregister the write event in epoll. | ||||
* | event/FullyBufferedSocket: make WriteFromBuffer() protected | Max Kellermann | 2013-11-06 | 2 | -4/+4 |
| | | | | .. and rename it to Flush(). | ||||
* | PlayerThread: enable buffering when starting playback | Max Kellermann | 2013-11-06 | 2 | -1/+2 |
| | | | | | | For some reason, this got lost in commit 975deca8. Re-enabling this fixes stuttering at the beginning of radio streams. | ||||
* | configure.ac: require libaudiofile 0.3 due to API breakage | Max Kellermann | 2013-11-06 | 2 | -1/+2 |
| | | | | | | Prior to version 0.3, the "length" callback returned a "long" instead of AFfileoffset. Now that this API bug fix is a few years old, let's drop 0.2 support for good. | ||||
* | input/curl: fix bug with redirected streams | Max Kellermann | 2013-11-06 | 2 | -110/+140 |
| | | | | | | | | | | | Migrate from the old curl_multi_perform() API to the newer curl_multi_socket_action() API (since CURL 7.16). This allows working around a bug with HTTP redirections with epoll: when CURL closes a socket and the new one happens to have the same file number, MPD did not have a chance to remove the old one from epoll and subsequently attempted to use EPOLL_CTL_MOD, which was not allowed by epoll, because it's a new socket now. | ||||
* | input/curl: move code into class CurlMulti | Max Kellermann | 2013-11-06 | 1 | -43/+66 |
| | | | | | Move all global variables there, and keep just one global variable: the pointer to the CurlMulti instance. Prepares for the next commit. | ||||
* | input/curl: remove the global list of requests | Max Kellermann | 2013-11-06 | 1 | -13/+0 |
| | | | | Unused. | ||||
* | input/curl: don't abort all requests on curl_multi_perform() error | Max Kellermann | 2013-11-06 | 1 | -40/+7 |
| | | | | Eliminate some complicated code that's not worth the trouble. | ||||
* | input/curl: use CURLOPT_PRIVATE | Max Kellermann | 2013-11-06 | 1 | -5/+7 |
| | | | | Replaces the loop in input_curl_find_request(). | ||||
* | event/SocketMonitor: add method Abandon() | Max Kellermann | 2013-11-06 | 4 | -2/+32 |
| | |||||
* | system/ByteOrder: fix big-endian support | Max Kellermann | 2013-11-05 | 2 | -2/+3 |
| | | | | D'oh! | ||||
* | playlist/pls: fix reversed song order | Max Kellermann | 2013-11-05 | 2 | -1/+2 |
| | | | | | Remove the forward_list::reverse() call. It was not necessary, because pls_parser() already reads the playlist in reverse order. | ||||
* | decoder/dsf: enable DSD128 | Jurgen Kramer | 2013-11-05 | 2 | -2/+4 |
| | |||||
* | NEWS: add missing line | Max Kellermann | 2013-11-05 | 1 | -0/+1 |
| | |||||
* | test/*: add more missing stdlib.h includes | Max Kellermann | 2013-11-05 | 4 | -0/+5 |
| | |||||
* | add various missing headers | Natanael Copa | 2013-11-05 | 3 | -0/+3 |
| | | | | | | Fixes building with gcc-4.8 Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> | ||||
* | configure.ac: prepare for 0.18.2 | Max Kellermann | 2013-11-05 | 2 | -1/+3 |
| | |||||
* | release v0.18.1 | Max Kellermann | 2013-11-04 | 2 | -2/+2 |
| | |||||
* | output/alsa: avoid endless loop in Raspberry Pi workaround | Max Kellermann | 2013-11-04 | 2 | -1/+19 |
| | | | | See code comment. | ||||
* | event/ServerSocket: don't abort if IPv6 is not available | Max Kellermann | 2013-11-04 | 2 | -1/+20 |
| | | | | First check if an IPv6 socket can be created. | ||||
* | Log: add level "DEFAULT" | Max Kellermann | 2013-11-04 | 14 | -45/+72 |
| | | | | | | Map LogLevel::INFO to G_LOG_LEVEL_INFO, and LogLevel::DEFAULT to G_LOG_LEVEL_MESSAGE. Now client connect/disconnect message are only logged on log_level "secure". | ||||
* | Log: document the LogLevel items | Max Kellermann | 2013-11-04 | 1 | -0/+16 |
| | |||||
* | test/test_mixramp: add threshold to floating point comparisons | Max Kellermann | 2013-11-04 | 1 | -6/+9 |
| | | | | | Fixes bogus test failures on Debian build machines due to rounding errors (hopefully). | ||||
* | event/ServerSocket: fix assertion failure | Max Kellermann | 2013-11-04 | 1 | -1/+1 |
| | | | | Regression from previous commit. D'oh! | ||||
* | event/ServerSocket: open sockets in the order they were configured | Max Kellermann | 2013-11-04 | 3 | -5/+6 |
| | | | | Use a std::list which can be appended at the end. | ||||
* | system/resolver: return path of UNIX domain sockets | Max Kellermann | 2013-11-04 | 2 | -7/+17 |
| | | | | getnameinfo() doesn't work well - it always returns "localhost". | ||||
* | ClientRead: always ignore whitespace at the end of the line | Max Kellermann | 2013-11-04 | 2 | -2/+9 |
| | |||||
* | Makefile.am: distribute missing files | Max Kellermann | 2013-11-04 | 2 | -0/+6 |
| | |||||
* | filter/AutoConvert: modify child_audio_format, not in_audio_format | Max Kellermann | 2013-11-04 | 2 | -2/+4 |
| | | | | | | | | This prevented using the "volume_normalization" feature with some codecs (e.g. mp3), because the normalization code requires 16 bit samples. If the codec happens to deliver formats other than S16, the AutoConvert filter succeeds to initialize the conversion filter, but the returned input audio format was wrong. | ||||
* | configure.ac: prepare for 0.18.1 | Max Kellermann | 2013-11-04 | 2 | -1/+3 |
| | |||||
* | release v0.18 | Max Kellermann | 2013-10-31 | 2 | -2/+3 |
| | |||||
* | AUTHORS: add new authors | Max Kellermann | 2013-10-31 | 1 | -0/+6 |
| | |||||
* | AUTHORS: new formatting | Max Kellermann | 2013-10-31 | 1 | -67/+25 |
| | |||||
* | CommandLine: simplified program name line | Max Kellermann | 2013-10-31 | 1 | -1/+1 |
| | |||||
* | Makefile.am: add missing header file | Max Kellermann | 2013-10-31 | 1 | -0/+1 |
| | |||||
* | system/FatalError: use _exit() instead of exit() | Max Kellermann | 2013-10-30 | 1 | -2/+2 |
| | | | | | Skip the global destructors. We don't need them here - we bail out as quickly as we can. | ||||
* | system/FatalError: move code to Abort() | Max Kellermann | 2013-10-30 | 1 | -3/+10 |
| | |||||
* | *: update copyright year to 2013 | Max Kellermann | 2013-10-30 | 116 | -116/+116 |
| | |||||
* | ClientList: disconnect all clients in destructor | Max Kellermann | 2013-10-30 | 1 | -0/+3 |
| | | | | Fixes assertion failure. | ||||
* | mixer/software: fix double free bug | Max Kellermann | 2013-10-30 | 1 | -3/+15 |
| | |||||
* | PlaylistState: ignore "mixrampdelay:nan" | Max Kellermann | 2013-10-30 | 1 | -1/+7 |
| | | | | mixramp_delay==nan() causes severe problems with cross-fading. | ||||
* | increase default buffer size to 4 MB | Max Kellermann | 2013-10-30 | 4 | -3/+4 |
| | | | | | | 2 MB was too small for cross-fading a 24 bit file. Increasing to 4 MB is still not too large for weak machines, but is enough for cross-fading. | ||||
* | db/proxy: remove obsolete #undefs | Max Kellermann | 2013-10-30 | 1 | -2/+0 |
| | |||||
* | db/proxy: auto-reconnect | Max Kellermann | 2013-10-30 | 1 | -14/+64 |
| |