aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2011-09-16input_plugin: add method check()Max Kellermann6-0/+72
To check for errors without reading. The decoder thread wants to do that, before it passes the input stream to the plugin.
2011-09-16input/{soup,curl}: free unused postponed_errorMax Kellermann2-0/+8
Fix memory leak.
2011-09-16input/soup: move libsoup calls to the I/O threadMax Kellermann1-4/+25
libsoup's asynchronous API is not thread safe. By moving the calls into the I/O thread, several crash bugs will be fixed.
2011-09-16input/soup: wait for _cancel_message() to completeMax Kellermann1-5/+21
Add the "complete" attribute, and set it in _session_callback(). _close() waits for it to become true.
2011-09-16input/soup: return real GErrors to the callerMax Kellermann1-3/+31
Add attribute postponed_error, pass this GError to the caller.
2011-09-16input/soup: set the "ready" flag on failureMax Kellermann1-0/+2
Fix deadlock.
2011-09-16input/soup: remove redundant flag "ready"Max Kellermann1-6/+2
We'll add proper locking now, and there's no need to carry this duplicate flag.
2011-09-16input/soup: report failure in _read()Max Kellermann1-0/+1
To report failures to callers who don't use _buffer().
2011-09-16input/soup: unlock before cancelling the soup messageMax Kellermann1-3/+5
Avoid recursive deadlock in _session_callback().
2011-09-16decoder_api: remove the loop from decoder_read()Max Kellermann1-16/+10
This was useless, because input_stream_read() blocks until data is available. Calling it in a loop doesn't make sense.
2011-09-16decoder_api: move code to decoder_check_cancel_read()Max Kellermann1-12/+28
2011-09-16input/curl: wait some more before resuming the streamMax Kellermann1-1/+6
Pausing and resuming after every little chunk adds lots of overhead. Add a lower level for resuming the stream.
2011-09-16input/curl: clear the "paused" flag before resumingMax Kellermann1-1/+1
curl_easy_pause(CURLPAUSE_CONT) may have added enough data to go into pause again.
2011-09-16input/curl: remove _schedule_update()Max Kellermann1-48/+1
Call _update_fds() directly. This is possible because it's only called from within the I/O thread.
2011-09-16input/curl: unlock the mutex for io_thread_call()Max Kellermann1-1/+4
Fix deadlock.
2011-09-16input/soup: fix "unused local variable" warningsMax Kellermann1-1/+1
2011-09-16input/curl, output/pulse: fix "unused local variable" warningsMax Kellermann2-2/+3
2011-09-15input_stream: add "nonnull" attributesMax Kellermann1-0/+12
2011-09-15decoder/ffmpeg: flush the codec after seekingMax Kellermann1-1/+3
Let the codec start with fresh buffers. This should fix the remaining seeking issues.
2011-09-15decoder/ffmpeg: explicitly specify the current stream for seekingMax Kellermann1-2/+11
Use AVStream.time_base to convert the decoder_seek_where() value, and pass the current stream number to av_seek_frame().
2011-09-15decoder/ffmpeg: don't require key frame for seekingMax Kellermann1-1/+2
Use flag AV_TIME_BASE.
2011-09-15decoder/ffmpeg: higher precision timestampsMax Kellermann1-1/+2
2011-09-15decoder/ffmpeg: move formula to time_from_ffmpeg()Max Kellermann1-2/+10
2011-09-15decoder/ffmpeg: add local variable "av_stream"Max Kellermann1-3/+4
Code simplification.
2011-09-15input/rewind: copy the MIME type only onceMax Kellermann1-1/+3
Reduce heap usage by reducing the number of malloc() / free() calls.
2011-09-15input/curl: per-request mutex/condMax Kellermann1-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.
2011-09-15input/curl: move all libCURL calls to the I/O threadMax Kellermann1-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.
2011-09-15input/file: return NULL instead of "false"Max Kellermann2-5/+5
2011-09-15input/curl: don't set "ready" on _easy_free()Max Kellermann1-3/+2
Move the assignment to _request_done(), right before the GCond is signalled. This might fix spurious wakeups.
2011-09-15input/curl: add assertions on io_thread_inside()Max Kellermann1-0/+9
2011-09-15input/curl: merge _request_abort() into _request_done()Max Kellermann1-31/+19
This is a trivial function. Merge some duplicate code, e.g. the g_cond_broadcast() call.
2011-09-15udp_server: disable -Wmissing-field-initializersMax Kellermann1-0/+7
2011-09-15gcc.h: add macro GCC_CHECK_VERSIONMax Kellermann1-1/+6
2011-09-15input/curl: API documentation fixMax Kellermann1-1/+1
2011-09-14input_plugin: add method update()Max Kellermann4-0/+33
Update the struct attributes, important for facades like the "rewind" plugin. To replace buffer().
2011-09-14input_internal: add assertionsMax Kellermann1-0/+9
2011-09-14input_stream: move input_stream_init(), _deinit() to _internal.cMax Kellermann14-20/+88
2011-09-14decoder_internal: don't call input_stream_buffer()Max Kellermann3-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.
2011-09-13db_print: move code to function db_selection_print()Max Kellermann7-132/+27
Use it in handle_lsinfo(), and eliminate some duplicate code.
2011-09-13db_visitor: add method playlist()Max Kellermann3-0/+54
2011-09-13db_plugin: add method visit()Max Kellermann7-22/+147
2011-09-13database: don't allow uri==NULLMax Kellermann7-10/+34
Add nonnull attributes and fix all callers.
2011-09-13gcc.h: add macro gcc_nonnullMax Kellermann1-0/+4
2011-09-13gcc.h: change "mpd_" prefix to "gcc_"Max Kellermann2-19/+19
This is specific to gcc, not to mpd.
2011-09-13db_plugin: add method get_song()Max Kellermann3-2/+39
New db_get_song() implementation.
2011-09-13database: generate GError when database is disabledMax Kellermann3-5/+20
2011-09-13directory: don't visit "self" in _walk()Max Kellermann2-4/+8
Let the caller decide if the current directory should be visited.
2011-09-13locate: remove unused function locate_item_new()Max Kellermann2-17/+0
2011-09-13directory: don't require a "directory" visitorMax Kellermann1-6/+6
.. to recurse. A visitor may not have one, but still be interested in a recursive search.
2011-09-13database: add struct db_visitorMax Kellermann12-196/+361
Use this struct for db_walk().