aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* playlist_queue: simplify error handlerMax Kellermann2010-06-251-9/+8
| | | | Return early on error, save one level of indent.
* playlist_list: moved input_stream.ready loop to calling functionMax Kellermann2010-06-251-22/+11
| | | | | | Merged both loops into playlist_list_open_stream(). This is needed because playlist_list_open_stream() needs to know the MIME type, which is only known after the stream has become "ready".
* uri: really count dots in verify_uri_segment()Max Kellermann2010-06-251-1/+4
| | | | | | This buggy implementation failed to allow "..." sequences, because the dot count was always zero. The usefulness of allowing "..." (or more dots) is debatable, but since it's a valid file name, we allow it.
* playlist/cue: last track ends at end of fileMax Kellermann2010-06-251-3/+2
| | | | | | | | libcue's track_get_length() returns 0 for the last track, because that information is not available in the CUE sheet. This makes MPD quit playing the last track immediately. If we set "song.end_ms=0", MPD will play the track until the end of the song file, which is what we want.
* song_print: simplified start_ms/end_ms checkMax Kellermann2010-06-251-12/+10
|
* playlist_list: wait for input stream to become readyAaron Griffith2010-06-251-0/+22
| | | | Fixes an assertion failure in the input_stream_seek() call.
* Make get_remote_uid() work on BSDAndreas Vögele2010-06-191-1/+7
| | | | | | I've attached a patch that will make file URIs work on operating systems that provide the getpeereid() function call to check the user ID of the peer connected to a UNIX domain socket.
* client: increase send_buf from 4kB to 16kBAndrzej Rybczak2010-06-191-1/+1
| | | | | | this greatly improves performance of commands that return a lot of data, e.g. search results or recursive content of a directory, while being connected to local mpd via tcp/ip socket.
* playlist: check "queued" before calling playlist_update_queued_song()Max Kellermann2010-06-191-1/+1
| | | | Workaround for an assertion failure.
* playlist: protect acess to player state in playlist_sync()Max Kellermann2010-06-191-2/+7
|
* playlist: move checks out of playlist_sync_with_queue()Max Kellermann2010-06-191-20/+21
| | | | | Rename the function to playlist_song_started(), which gets only called if the song has actually started.
* player_control: hold mutex in pc_play(), pc_pause()Max Kellermann2010-06-191-9/+42
| | | | Race condition fix.
* filter/route: fixed unsigned/signed comparisonMax Kellermann2010-06-061-1/+1
| | | | Fixes a clang warning.
* output/httpd: add libwrap supportTim Phipps2010-06-061-0/+28
| | | | | | libwrap support is in MPD but only for the control port. This patch adds support for the http port. The code is copied from src/client_new.c
* directory_print: print a list of playlist files in "lsinfo"Max Kellermann2010-06-011-0/+61
| | | | Print those files which can be handled by a playlist plugin.
* playlist_list: export playlist_suffix_supported()Max Kellermann2010-06-012-1/+10
|
* playlist_list: playlist_list_open_path() returns input_streamMax Kellermann2010-06-016-16/+39
| | | | | | | Memory leak fix. The input_stream object passed to playlist_list_open_stream_suffix() must be closed by the caller - this however never happens in playlist_list_open_path(), because it does not return it to the caller.
* playlist_list: move fallback g_uri_parse_scheme() to glib_compat.hMax Kellermann2010-06-012-14/+16
|
* playlist: emit IDLE_OPTIONS when resetting single modeMax Kellermann2010-06-011-0/+2
|
* single mode: at the end of the song, pause on the next song instead of stopRomain Bignon2010-05-313-19/+13
|
* directory_print: return voidMax Kellermann2010-05-312-7/+3
| | | | There is no useful return value here.
* fix crash when decoder is NULLRomain Bignon2010-05-311-2/+2
|
* decoder/mikmod: fix memory leakMax Kellermann2010-05-311-2/+4
| | | | | The return value of Player_LoadTitle() is allocated with malloc(), and must be freed by the caller.
* decoder/mikmod: duplicate the path only onceMax Kellermann2010-05-311-2/+2
|
* decoder/mikdmod: moved local variable declarations in tag_dup()Max Kellermann2010-05-311-12/+8
|
* decoder/wildmidi: moved local variable declarations in tag_dup()Max Kellermann2010-05-311-7/+3
|
* decoder/gme: replace macro GME_BUF_SIZEMax Kellermann2010-05-311-4/+5
| | | | | Added macros with better names: GME_BUFFER_FRAMES, GME_BUFFER_SAMPLES (the former only used to calculate the latter).
* decoder/gme: added constants for sample rate and channelsMax Kellermann2010-05-311-6/+12
| | | | Move into enums.
* decoder/gme: pass the whole buffer to decoder_data()Max Kellermann2010-05-311-2/+2
| | | | | | | | Pass sizeof(buf) to decoder_data(), not the number of samples (which is half the size). At the same time, pass GME_BUF_SIZE to gme_play() - libgme really wants to get the number of samples, not the number of stereo frames. Previously, this plugin had been using only the first half of the buffer.
* decoder/gme: allocate tag later, fixes memory leakMax Kellermann2010-05-311-1/+1
| | | | Allocate the "tag" object after the file has been opened successfully.
* decoder/mp4ff: rename and move local variableMax Kellermann2010-05-311-6/+5
| | | | | Allocate the "tag" object after the file has been checked. That removes one tag_free() call in an error handler.
* decoder/mp4ff: merge code into mp4ff_input_stream_open()Max Kellermann2010-05-311-17/+17
|
* decoder/mp4ff: move mp4ff_callback_t into mp4ff_input_streamMax Kellermann2010-05-311-12/+15
| | | | Allocate only one item on the stack.
* decoder/mp4ff: rename mp4_context to mp4ff_input_streamMax Kellermann2010-05-311-9/+9
|
* decoder/mp4ff: remove duplicate entries in the tag name tableMax Kellermann2010-05-311-9/+5
| | | | Reuse the function tag_name_parse_i().
* decoder/mp4ff: moved code to mp4ff_tag_name_parse()Max Kellermann2010-05-311-1/+7
|
* tag_ape: remove duplicate entries in the tag name tableMax Kellermann2010-05-311-13/+5
| | | | Reuse the function tag_name_parse_i().
* tag_ape: move code to tag_ape_name_parse()Max Kellermann2010-05-311-1/+7
|
* decoder/vorbis: rename local variable "ret"Max Kellermann2010-05-311-6/+5
|
* decoder/vorbis: implement method stream_tag()Max Kellermann2010-05-311-11/+4
| | | | This allows tags in archive files.
* decoder/vorbis: move code to vorbis_open_stream()Max Kellermann2010-05-311-19/+23
|
* decoder/vorbis: use single global ov_callbacks constantMax Kellermann2010-05-301-6/+9
| | | | Initialize the ov_callbacks struct at compile time.
* decoder/vorbis: rename struct vorbis_decoder_data to vorbis_isMax Kellermann2010-05-301-20/+19
|
* inotify_update: follow symlinksMax Kellermann2010-05-301-2/+1
| | | | | | This is probably unsafe, and doesn't protect against symlink loops, but we will eventually add this when we bring update*.c and inotify*.c closer together.
* inotify_update: fix assertion failure when music dir is deletedMax Kellermann2010-05-301-1/+7
| | | | | | | | This shouldn't really happen, but insane users might delete/rename the music directory while MPD runs. What was even more insane was that MPD crashed due to this. This is a workaround - there is currently nothing useful we can do in this case; except maybe poll for the music directory to reappear, but that's too much trouble for a user error.
* decoder/mp4ff: support tags "albumartist", "band"Max Kellermann2010-05-301-0/+2
| | | | | I'm not sure if mapping "band" to TAG_PERFORMER is correct, but it might be better than nothing.
* decoder/mp4ff: use tag_table.h to parse tag namesMax Kellermann2010-05-301-18/+15
| | | | Convert if/else/else/... to a loop.
* decoder/mp4ff: rename plugin "mp4" to "mp4ff"Max Kellermann2010-05-301-1/+1
| | | | | The underlying library is named "libmp4ff". To reduce confusion, rename the plugin to a more specific name.
* tag_ape: move table lookup to tag_table.hMax Kellermann2010-05-302-9/+52
| | | | Allow code sharing.
* tag_ape: support album artist, MusicBrainz tagsMax Kellermann2010-05-301-1/+8
| | | | | | | | | | I took these tag names from a MusePack sample file I got from a user. These are not documented in the APE specification: http://wiki.hydrogenaudio.org/index.php?title=APE_key People seem to be using undocumented extensions to the specification anyway, and the best we can do is attempt to support them.