aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-11-08fd_util: added API documentationMax Kellermann1-0/+24
2009-11-08fd_util: unexport fd_set_cloexec()Max Kellermann2-4/+1
This function is used only internally.
2009-11-07inotify: set close-on-exec flagMax Kellermann3-1/+31
Added wrapper for inotify_init1() to fd_util.c.
2009-11-07set the close-on-exec flag on all file descriptorsMax Kellermann14-23/+259
Added the "fd_util" library, which attempts to use the new thread-safe Linux system calls pipe2(), accept4() and the options O_CLOEXEC, SOCK_CLOEXEC. Without these, it falls back to FD_CLOEXEC, which is not thread safe. This is particularly important for the "pipe" output plugin (and others, such as JACK/PulseAudio), because we were heavily leaking file descriptors to child processes.
2009-11-07decoder_thread: close input fileMax Kellermann1-3/+10
An input_stream_close() call was missing after today's code reorganization.
2009-11-07log: redirect stdout/stderr to /dev/null if syslog is usedMax Kellermann1-1/+4
Don't hold a file descriptor on root's tty when syslog is used for logging.
2009-11-07output/jack: added option "server_name"Max Kellermann1-1/+8
2009-11-07output_all: automatically attempt to re-enable failed outputsMax Kellermann1-0/+1
When an output's enable() method has failed, and playback starts, retry to enable it. Without this, the user may be confused, because he sees the device is "enabled" but cannot use it, and currently there is no error message in the log.
2009-11-07output/httpd: moved code to httpd_output_bind()Max Kellermann1-28/+48
2009-11-07exclude: use GPatternSpec instead of fnmatch()Max Kellermann1-5/+5
GLib's version of fnmatch() is more portable.
2009-11-07added missing source file decoder_print.cMax Kellermann2-0/+81
2009-11-07database: I/O error handling in db_save()Max Kellermann3-19/+16
Check ferror() instead of the fprintf() return value.
2009-11-07update_walk: log new container filesMax Kellermann1-1/+4
2009-11-07command: added command "decoders"Max Kellermann1-0/+10
This command prints a list of decoder plugins and their suffixes / MIME types.
2009-11-07decoder_list: moved print_all_decoders() to cmdline.cMax Kellermann3-28/+27
Export the decoder_plugins array. The function decoder_plugin_print_all_decoders() it is UI specific and should not live in this backend library.
2009-11-07decoder_thread: check for STOP before calling the pluginMax Kellermann1-0/+6
Before calling the plugin's decode method, we should ensure that we didn't receive a STOP command during initialization.
2009-11-07decoder_thread: moved code to decoder_input_stream_open()Max Kellermann1-27/+50
This function opens the stream and waits for it to become ready; meanwhile it checks for STOP commands. It is code moved from decoder_run_stream().
2009-11-07decoder_thread: added local variable "dc" in decoder_run_file()Max Kellermann1-6/+7
Simplify the expressions.
2009-11-07output/jack: free source port names on exitMax Kellermann1-0/+3
Make valgrind happy.
2009-11-07decoder_list: pass previous plugin pointer to lookup functionsMax Kellermann4-19/+40
Remove the static integer hack, that's not thread safe and sucks.
2009-11-07decoder_list: moved suffix/mime_type checks to decoder_plugin.cMax Kellermann3-4/+64
2009-11-07decoder_list: back to NULL terminated listMax Kellermann1-7/+8
A NULL terminated list is easier to iterate.
2009-11-07decoder_thread: open input stream on demandMax Kellermann1-72/+59
Moved the global input stream opener to decoder_run_stream(). decoder_run_file() now opens the input stream each time a plugin provides a stream decoder method.
2009-11-07decoder_thread: moved plugin loops to separate functionsMax Kellermann1-82/+127
Tame the large decoder_run_song() function.
2009-11-07uri: added function attributesMax Kellermann1-0/+5
Let gcc optimize a little bit more.
2009-11-06utils: renamed stringFoundInStringArray()Max Kellermann6-30/+35
No CamelCase. Use bool instead of int. Make both arguments mandatory.
2009-11-06output/jack: dynamic source port listMax Kellermann1-37/+74
Same as the previous patch: create up to 16 configured source ports. The plugin tries to do its best at guessing the right combination for the given input file, the number of source and destination ports.
2009-11-06output/jack: dynamic destination port listMax Kellermann1-25/+71
Support up to 16 configured destination ports, that should really be enough for everybody.
2009-11-06output/jack: renamed option "ports" to "destination_ports"Max Kellermann1-1/+9
Be more clear which kind of port should be configured here.
2009-11-06output/jack: renamed "output ports" to "destination ports"Max Kellermann1-18/+20
Use the same name as in the libjack API documentation.
2009-11-06playlist_queue: use playlist plugins to load from playlist_directoryMax Kellermann1-0/+33
This patch allows the client to load a playlist file from the playlist directory with a plugin. This can be used with the "load" command, but the client has to pass the file name including the suffix. We will probably use the music directory in the future, to support playlist files inside the music directory.
2009-11-06playlist_queue: moved code to playlist_open_remote_into_queue()Max Kellermann1-5/+12
2009-11-06playlist_list: added function playlist_list_open_path()Max Kellermann2-0/+47
Added an interface for loading playlists from a local file.
2009-11-06playlist: added extm3u pluginMax Kellermann3-0/+187
This new plugin parses extm3u files. Files without the "#EXTM3U" header are still parsed by the plain old "m3u" plugin.
2009-11-06playlist/{m3u,pls}: removed URI checksMax Kellermann2-7/+1
The caller is responsible for verifying the song URI.
2009-11-06playlist_list: rewind the stream before opening the playlistMax Kellermann1-0/+9
If one plugin has failed to open the playlist, it may have consumed a part of the stream already. This may lead to a failure in all following plugins. Fix: rewind the stream before each open() call.
2009-11-05output/httpd: bind port when output is enabledMax Kellermann2-13/+49
Implement the methods enable() and disable(). Bind the HTTP port in the enable() method, but reject all incoming connections until the output is opened.
2009-11-05output/jack: support mono inputMax Kellermann1-13/+41
When MPD plays a mono song (audio_format.channel==1), connect only one source port to both destination ports.
2009-11-05output/jack: clear ring buffers before activatingMax Kellermann1-1/+6
After playback has stopped, the ring buffers may still contain samples. These will be played when playback is started the next time. We should clear the buffers each time.
2009-11-05output/jack: use jack_client_open() instead of jack_client_new()Max Kellermann1-4/+23
jack_client_new() is deprecated. This requires libjack 0.100 (released nearly 5 years ago). We havn't been testing older libjack versions anyway. As a side effect, there is the new option "autostart".
2009-11-05output/jack: added option "client_name"Max Kellermann1-3/+2
Instead of using MPD's audio output name (setting "name"), use a separate configuration option. Change the default to "Music Player Daemon".
2009-11-05update_walk: log unrecognized filesMax Kellermann1-2/+9
When a song's tags could not be loaded during database update, log this as a debug message. Same for a song being removed because its updated tag could not be read.
2009-11-04database: rescan after metadata_to_use changeMax Kellermann1-0/+32
Store a list of supported tag items in the database. When loading a database which does not have a matching list, we must rescan in order to get the missing information.
2009-11-04tag: added function tag_name_parse()Max Kellermann4-26/+61
Convert a string into a tag_type enum.
2009-11-04song_save: explicitly parse the colonMax Kellermann1-18/+27
Clear the colon. This simplifies all attribute parsers, because they can now use strcmp() instead of strncmp().
2009-11-04decoder_thread: initialize decoder_control.quitMax Kellermann1-0/+2
If left uninitialized, then the decoder thread quits spuriously.
2009-11-04sticker comments in code and example configuration fileRomain Bignon1-0/+5
Signed-off-by: Romain Bignon <romain@peerfuse.org>
2009-11-03player_thread: on return, reset next_song only if queuedMax Kellermann1-3/+7
If no song was queued, then player_control.next_song might contain the value for the next QUEUE command. We must not reset that.
2009-11-03player_thread: detect finished queued songMax Kellermann1-1/+2
When the decoder finishes the "queued" song very quickly (before the "current" song finishes playing), an assertion in do_play() fails because it thinks that it should start decoding the queued song, although that has in fact just finished.
2009-11-03player_control: moved pc.next_song assertion into lockMax Kellermann1-1/+2
The assertion shouldn't access player_control.next_song without locking it.