Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | | input/soup: report failure in _read() | Max Kellermann | 2011-09-16 | 1 | -0/+1 | |
| | | | | | | | | To report failures to callers who don't use _buffer(). | |||||
* | | input/soup: unlock before cancelling the soup message | Max Kellermann | 2011-09-16 | 1 | -3/+5 | |
| | | | | | | | | Avoid recursive deadlock in _session_callback(). | |||||
* | | decoder_api: remove the loop from decoder_read() | Max Kellermann | 2011-09-16 | 1 | -16/+10 | |
| | | | | | | | | | | This was useless, because input_stream_read() blocks until data is available. Calling it in a loop doesn't make sense. | |||||
* | | decoder_api: move code to decoder_check_cancel_read() | Max Kellermann | 2011-09-16 | 1 | -12/+28 | |
| | | ||||||
* | | input/curl: wait some more before resuming the stream | Max Kellermann | 2011-09-16 | 1 | -1/+6 | |
| | | | | | | | | | | Pausing and resuming after every little chunk adds lots of overhead. Add a lower level for resuming the stream. | |||||
* | | input/curl: clear the "paused" flag before resuming | Max Kellermann | 2011-09-16 | 1 | -1/+1 | |
| | | | | | | | | | | curl_easy_pause(CURLPAUSE_CONT) may have added enough data to go into pause again. | |||||
* | | input/curl: remove _schedule_update() | Max Kellermann | 2011-09-16 | 1 | -48/+1 | |
| | | | | | | | | | | Call _update_fds() directly. This is possible because it's only called from within the I/O thread. | |||||
* | | input/curl: unlock the mutex for io_thread_call() | Max Kellermann | 2011-09-16 | 1 | -1/+4 | |
| | | | | | | | | Fix deadlock. | |||||
* | | input/soup: fix "unused local variable" warnings | Max Kellermann | 2011-09-16 | 1 | -1/+1 | |
| | | ||||||
* | | Merge branch 'v0.16.x' | Max Kellermann | 2011-09-16 | 2 | -2/+3 | |
|\| | ||||||
| * | input/curl, output/pulse: fix "unused local variable" warnings | Max Kellermann | 2011-09-16 | 2 | -2/+3 | |
| | | ||||||
* | | input_stream: add "nonnull" attributes | Max Kellermann | 2011-09-15 | 1 | -0/+12 | |
| | | ||||||
* | | Merge branch 'v0.16.x' | Max Kellermann | 2011-09-15 | 3 | -11/+35 | |
|\| | | | | | | | | | | | Conflicts: NEWS configure.ac | |||||
| * | decoder/ffmpeg: flush the codec after seeking | Max Kellermann | 2011-09-15 | 1 | -1/+3 | |
| | | | | | | | | | | Let the codec start with fresh buffers. This should fix the remaining seeking issues. | |||||
| * | decoder/ffmpeg: explicitly specify the current stream for seeking | Max Kellermann | 2011-09-15 | 1 | -2/+11 | |
| | | | | | | | | | | Use AVStream.time_base to convert the decoder_seek_where() value, and pass the current stream number to av_seek_frame(). | |||||
| * | decoder/ffmpeg: don't require key frame for seeking | Max Kellermann | 2011-09-15 | 1 | -1/+2 | |
| | | | | | | | | Use flag AV_TIME_BASE. | |||||
| * | decoder/ffmpeg: higher precision timestamps | Max Kellermann | 2011-09-15 | 1 | -1/+2 | |
| | | ||||||
| * | decoder/ffmpeg: move formula to time_from_ffmpeg() | Max Kellermann | 2011-09-15 | 1 | -2/+10 | |
| | | ||||||
| * | decoder/ffmpeg: add local variable "av_stream" | Max Kellermann | 2011-09-15 | 1 | -3/+4 | |
| | | | | | | | | Code simplification. | |||||
| * | input/rewind: copy the MIME type only once | Max Kellermann | 2011-09-15 | 1 | -1/+3 | |
| | | | | | | | | Reduce heap usage by reducing the number of malloc() / free() calls. | |||||
| * | pcm_format: fix 32-to-24 bit conversion (the "silence" bug) | Max Kellermann | 2011-09-08 | 1 | -2/+2 | |
| | | | | | | | | | | | | D'oh, we were reading 16 bit integers instead of 32 bit integers! That caused silence when trying to play a 32 bit input file on a 24 bit sound card (e.g. USB sound chips with 24 bit packed samples). | |||||
* | | input/curl: per-request mutex/cond | Max Kellermann | 2011-09-15 | 1 | -33/+35 | |
| | | | | | | | | | | | | | | The global data structures are now lock-free, because they are accessed only from the I/O thread. By using per-request locks, we have finer grained locking, preparing for locks shared with the client. | |||||
* | | input/curl: move all libCURL calls to the I/O thread | Max Kellermann | 2011-09-15 | 1 | -29/+69 | |
| | | | | | | | | | | | | This adds some overheads for indirect calls to the I/O thread, but reduces the amount of global locks. Next step will be switching to per-request locks. | |||||
* | | input/file: return NULL instead of "false" | Max Kellermann | 2011-09-15 | 2 | -5/+5 | |
| | | ||||||
* | | input/curl: don't set "ready" on _easy_free() | Max Kellermann | 2011-09-15 | 1 | -3/+2 | |
| | | | | | | | | | | Move the assignment to _request_done(), right before the GCond is signalled. This might fix spurious wakeups. | |||||
* | | input/curl: add assertions on io_thread_inside() | Max Kellermann | 2011-09-15 | 1 | -0/+9 | |
| | | ||||||
* | | input/curl: merge _request_abort() into _request_done() | Max Kellermann | 2011-09-15 | 1 | -31/+19 | |
| | | | | | | | | | | This is a trivial function. Merge some duplicate code, e.g. the g_cond_broadcast() call. | |||||
* | | udp_server: disable -Wmissing-field-initializers | Max Kellermann | 2011-09-15 | 1 | -0/+7 | |
| | | ||||||
* | | gcc.h: add macro GCC_CHECK_VERSION | Max Kellermann | 2011-09-15 | 1 | -1/+6 | |
| | | ||||||
* | | input/curl: API documentation fix | Max Kellermann | 2011-09-15 | 1 | -1/+1 | |
| | | ||||||
* | | input_plugin: add method update() | Max Kellermann | 2011-09-14 | 4 | -0/+33 | |
| | | | | | | | | | | Update the struct attributes, important for facades like the "rewind" plugin. To replace buffer(). | |||||
* | | input_internal: add assertions | Max Kellermann | 2011-09-14 | 1 | -0/+9 | |
| | | ||||||
* | | input_stream: move input_stream_init(), _deinit() to _internal.c | Max Kellermann | 2011-09-14 | 14 | -20/+88 | |
| | | ||||||
* | | decoder_internal: don't call input_stream_buffer() | Max Kellermann | 2011-09-14 | 3 | -37/+12 | |
| | | | | | | | | | | | | This is not necessary since all relevant input plugins have been moved to the I/O thread, and there is no remaining useful buffer() implementation. This also fixes a busy loop when playing radio. | |||||
* | | db_print: move code to function db_selection_print() | Max Kellermann | 2011-09-13 | 7 | -132/+27 | |
| | | | | | | | | Use it in handle_lsinfo(), and eliminate some duplicate code. | |||||
* | | db_visitor: add method playlist() | Max Kellermann | 2011-09-13 | 3 | -0/+54 | |
| | | ||||||
* | | db_plugin: add method visit() | Max Kellermann | 2011-09-13 | 7 | -22/+147 | |
| | | ||||||
* | | database: don't allow uri==NULL | Max Kellermann | 2011-09-13 | 7 | -10/+34 | |
| | | | | | | | | Add nonnull attributes and fix all callers. | |||||
* | | gcc.h: add macro gcc_nonnull | Max Kellermann | 2011-09-13 | 1 | -0/+4 | |
| | | ||||||
* | | gcc.h: change "mpd_" prefix to "gcc_" | Max Kellermann | 2011-09-13 | 2 | -19/+19 | |
| | | | | | | | | This is specific to gcc, not to mpd. | |||||
* | | db_plugin: add method get_song() | Max Kellermann | 2011-09-13 | 3 | -2/+39 | |
| | | | | | | | | New db_get_song() implementation. | |||||
* | | database: generate GError when database is disabled | Max Kellermann | 2011-09-13 | 3 | -5/+20 | |
| | | ||||||
* | | directory: don't visit "self" in _walk() | Max Kellermann | 2011-09-13 | 2 | -4/+8 | |
| | | | | | | | | Let the caller decide if the current directory should be visited. | |||||
* | | locate: remove unused function locate_item_new() | Max Kellermann | 2011-09-13 | 2 | -17/+0 | |
| | | ||||||
* | | directory: don't require a "directory" visitor | Max Kellermann | 2011-09-13 | 1 | -6/+6 | |
| | | | | | | | | | | .. to recurse. A visitor may not have one, but still be interested in a recursive search. | |||||
* | | database: add struct db_visitor | Max Kellermann | 2011-09-13 | 12 | -196/+361 | |
| | | | | | | | | Use this struct for db_walk(). | |||||
* | | stored_playlist: return GError, code is playlist_result | Max Kellermann | 2011-09-11 | 10 | -197/+320 | |
| | | | | | | | | | | Improve error reporting and handling. command.c gets the new function print_error(), which sends a GError to the client. | |||||
* | | playlist: move enum playlist_result to playlist_error.h | Max Kellermann | 2011-09-11 | 8 | -17/+49 | |
| | | | | | | | | Reduce header dependencies. | |||||
* | | playlist: move PLAYLIST_COMMENT to stored_playlist.c | Max Kellermann | 2011-09-11 | 2 | -2/+2 | |
| | | | | | | | | Only used there. | |||||
* | | db_plugin: introducing a plugin API for the song database | Max Kellermann | 2011-09-10 | 7 | -189/+527 | |
| | | | | | | | | | | | | | | | | | | | | | | First draft, not really pluggable currently - hard-coded to use the "simple" plugin, and calls several of its internal functions. The API is very simple currently, all searches are still performed over the root "directory" object. Future changes to the API will move those search implementations into the plugin, to allow more efficient implementations, or implementations that don't have the whole tree in memory all the time. |