aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | input/curl: unlock the mutex for io_thread_call()Max Kellermann2011-09-161-1/+4
| | | | | | | | Fix deadlock.
* | input/soup: fix "unused local variable" warningsMax Kellermann2011-09-161-1/+1
| |
* | Merge branch 'v0.16.x'Max Kellermann2011-09-162-2/+3
|\|
| * input/curl, output/pulse: fix "unused local variable" warningsMax Kellermann2011-09-162-2/+3
| |
* | input_stream: add "nonnull" attributesMax Kellermann2011-09-151-0/+12
| |
* | Merge branch 'v0.16.x'Max Kellermann2011-09-153-11/+35
|\| | | | | | | | | | | Conflicts: NEWS configure.ac
| * decoder/ffmpeg: flush the codec after seekingMax Kellermann2011-09-151-1/+3
| | | | | | | | | | Let the codec start with fresh buffers. This should fix the remaining seeking issues.
| * decoder/ffmpeg: explicitly specify the current stream for seekingMax Kellermann2011-09-151-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 seekingMax Kellermann2011-09-151-1/+2
| | | | | | | | Use flag AV_TIME_BASE.
| * decoder/ffmpeg: higher precision timestampsMax Kellermann2011-09-151-1/+2
| |
| * decoder/ffmpeg: move formula to time_from_ffmpeg()Max Kellermann2011-09-151-2/+10
| |
| * decoder/ffmpeg: add local variable "av_stream"Max Kellermann2011-09-151-3/+4
| | | | | | | | Code simplification.
| * input/rewind: copy the MIME type only onceMax Kellermann2011-09-151-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 Kellermann2011-09-081-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/condMax Kellermann2011-09-151-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 threadMax Kellermann2011-09-151-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 Kellermann2011-09-152-5/+5
| |
* | input/curl: don't set "ready" on _easy_free()Max Kellermann2011-09-151-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 Kellermann2011-09-151-0/+9
| |
* | input/curl: merge _request_abort() into _request_done()Max Kellermann2011-09-151-31/+19
| | | | | | | | | | This is a trivial function. Merge some duplicate code, e.g. the g_cond_broadcast() call.
* | udp_server: disable -Wmissing-field-initializersMax Kellermann2011-09-151-0/+7
| |
* | gcc.h: add macro GCC_CHECK_VERSIONMax Kellermann2011-09-151-1/+6
| |
* | input/curl: API documentation fixMax Kellermann2011-09-151-1/+1
| |
* | input_plugin: add method update()Max Kellermann2011-09-144-0/+33
| | | | | | | | | | Update the struct attributes, important for facades like the "rewind" plugin. To replace buffer().
* | input_internal: add assertionsMax Kellermann2011-09-141-0/+9
| |
* | input_stream: move input_stream_init(), _deinit() to _internal.cMax Kellermann2011-09-1414-20/+88
| |
* | decoder_internal: don't call input_stream_buffer()Max Kellermann2011-09-143-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 Kellermann2011-09-137-132/+27
| | | | | | | | Use it in handle_lsinfo(), and eliminate some duplicate code.
* | db_visitor: add method playlist()Max Kellermann2011-09-133-0/+54
| |
* | db_plugin: add method visit()Max Kellermann2011-09-137-22/+147
| |
* | database: don't allow uri==NULLMax Kellermann2011-09-137-10/+34
| | | | | | | | Add nonnull attributes and fix all callers.
* | gcc.h: add macro gcc_nonnullMax Kellermann2011-09-131-0/+4
| |
* | gcc.h: change "mpd_" prefix to "gcc_"Max Kellermann2011-09-132-19/+19
| | | | | | | | This is specific to gcc, not to mpd.
* | db_plugin: add method get_song()Max Kellermann2011-09-133-2/+39
| | | | | | | | New db_get_song() implementation.
* | database: generate GError when database is disabledMax Kellermann2011-09-133-5/+20
| |
* | directory: don't visit "self" in _walk()Max Kellermann2011-09-132-4/+8
| | | | | | | | Let the caller decide if the current directory should be visited.
* | locate: remove unused function locate_item_new()Max Kellermann2011-09-132-17/+0
| |
* | directory: don't require a "directory" visitorMax Kellermann2011-09-131-6/+6
| | | | | | | | | | .. to recurse. A visitor may not have one, but still be interested in a recursive search.
* | database: add struct db_visitorMax Kellermann2011-09-1312-196/+361
| | | | | | | | Use this struct for db_walk().
* | stored_playlist: return GError, code is playlist_resultMax Kellermann2011-09-1110-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.hMax Kellermann2011-09-118-17/+49
| | | | | | | | Reduce header dependencies.
* | playlist: move PLAYLIST_COMMENT to stored_playlist.cMax Kellermann2011-09-112-2/+2
| | | | | | | | Only used there.
* | db_plugin: introducing a plugin API for the song databaseMax Kellermann2011-09-107-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.
* | database: move code to db_save.cMax Kellermann2011-09-103-128/+214
| |
* | directory_save: pass const pointer to _save()Max Kellermann2011-09-102-4/+4
| |
* | tag_internal: add missing tag.h includeMax Kellermann2011-09-101-0/+2
| | | | | | | | For TAG_NUM_OF_ITEM_TYPES.
* | conf: export config_param_free()Max Kellermann2011-09-092-1/+4
| |
* | conf: _get_next_param() returns a const pointerMax Kellermann2011-09-092-3/+3
| | | | | | | | No writers.
* | database: return GError on failureMax Kellermann2011-09-094-23/+41
| |
* | conf: add config_dup_block_path()Max Kellermann2011-09-093-14/+38
| |