aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* playlist/rss: new playlist plugin for RSS feedsMax Kellermann2010-10-113-0/+348
|
* Merge release 0.15.13 from branch 'v0.15.x'Max Kellermann2010-10-116-5/+19
|\ | | | | | | | | | | | | | | Conflicts: NEWS configure.ac src/input/rewind_input_plugin.c src/output/httpd_output_plugin.c
| * output/httpd: MIME type audio/ogg for Ogg VorbisMax Kellermann2010-10-031-1/+1
| | | | | | | | | | | | RFC 5334 10.3 defines the MIME type "audio/ogg". We could use "application/ogg" as well, but we know for sure that we only emit audio data.
| * input/rewind: enable for MMSThomas Jansen2010-09-281-2/+10
| |
| * rewind_input_plugin: Update MIME not only onceThomas Jansen2010-09-231-3/+4
| | | | | | | | | | | | | | The assumption that MIME type is set only once is not valid with CURL, as URL redirections may update the MIME type. This fixes bug #3044.
| * Correctly terminate stream_title.Qball Cow2010-09-081-0/+1
| | | | | | | | | | This caused random data to be send via icy-server if the played song had no tags.
| * input/curl: fix version check for curl_multi_timeout()Max Kellermann2010-09-071-1/+1
| | | | | | | | | | | | | | According to the CURL web site, curl_multi_timeout() was added in version 7.15.4: http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
| * output_thread: fix race condition after CANCEL commandMax Kellermann2010-08-191-0/+10
| | | | | | | | | | | | Clear the notification before finishing the CANCEL command, so the notify_wait() after that will always wait for the right notification, sent by audio_output_all_cancel().
| * notify: add function notify_clear()Max Kellermann2010-08-192-0/+12
| |
* | mixer: winmm_mixer implementedDenis Krjuchkov2010-10-094-0/+153
| |
* | win32_output: renamed win32 output plugin to winmmDenis Krjuchkov2010-10-082-53/+53
| | | | | | | | Win32 has many audio APIs. New name is slightly more correct.
* | output/httpd: use the new server_socket libraryMax Kellermann2010-10-052-118/+32
| |
* | listen: move generic code to server_socket.cMax Kellermann2010-10-053-354/+551
| |
* | output/httpd: don't close socket in open() failureMax Kellermann2010-10-051-2/+0
| | | | | | | | | | This cleanup call is obsolete, since we moved the binding code to enable()/disable().
* | output_all: disable outputs on shutdownMax Kellermann2010-10-051-0/+1
| | | | | | | | | | | | Call output_plugin.disable() before output_plugin.finish(). This ensures that all outputs are properly cleaned up, to make valgrind happy.
* | main_win: replaced g_error usages with MPD_ERRORDenis Krjuchkov2010-09-281-3/+4
| |
* | mpd_error: more correct MPD_ERROR implementationDenis Krjuchkov2010-09-282-3/+3
| | | | | | | | | | | | | | | | | | Original implementation does not handle if (...) MPD_ERROR("die"); else ... case well. This change fixes handling of such cases.
* | playlist: make single mode 'sticky'Andrew Morgan2010-09-281-4/+1
| |
* | eliminate g_error() usageThomas Jansen2010-09-2527-103/+166
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Replaced all occurrences of g_error() with MPD_ERROR() located in a new header file 'mpd_error.h'. This macro uses g_critical() to print the error message and then exits gracefully in contrast to g_error() which would internally call abort() to produce a core dump. The macro name is distinctive and allows to find all places with dubious error handling. The long-term goal is to get rid of MPD_ERROR() altogether. To facilitate the eventual removal of this macro it was added in a new header file rather than to an existing header file. This fixes #2995 and #3007.
* | output/httpd: bind_to_address support (including IPv6)Thomas Jansen2010-09-251-12/+52
| | | | | | | | | | | | | | | | | | Added support for a new optional configuration setting for the httpd output named "bind_to_address". Setting it to a specific IP address (v4 or v6) will cause the httpd output to bind to that address exclusively. Supporting multiple addresses in parallel is future work. This implements the feature requests #2998 and #2646.
* | conf: Whitespace cosmeticsThomas Jansen2010-09-251-9/+9
| |
* | playlist: fix "queued" check in playlist_sync()Max Kellermann2010-09-231-1/+1
| | | | | | | | | | The check was meant to fix an assertion failure, but it was the wrong way around. This broke cross-fading most of the time.
* | decoder/mp4ff: support more variations of "album artist"Max Kellermann2010-09-231-0/+4
| | | | | | | | | | | | | | | | | | | | | | According to the mantis bug report 2847, there are several possible variations of the "album artist" tag: - "album artist" - "album_artist" - "albumartist" This patch adds support for the latter two.
* | listen: fix "unused parameter" warning on WIN32Max Kellermann2010-09-231-0/+2
| |
* | main: Add Windows Service supportDenis Krjuchkov2010-09-235-1/+228
| | | | | | | | | | | | | | | | | | I've added PIPE_EVENT_SHUTDOWN because calling g_main_loop_quit() do not work when called from another thread. Main thread was sleeping in g_poll() so I needed some way to wake it up. By some strange reason call close(event_pipe[0]) in event_pipe_deinit() hangs. In current implementation that code never reached so that was not a problem :-) I've added a conditional to leave event_pipe[0] open on Win32.
* | playlist_state: Fix the "state" line in the outputThomas Jansen2010-09-231-1/+1
| | | | | | | | | | | | | | An '\n' was erroneously inserted in the line containing the state, e.g. "state: \nplay" instead of "state: play". Fix for bug #2992.
* | zeroconf-bonjour: use g_htons() instead of htons()Max Kellermann2010-09-231-1/+1
| | | | | | | | htons() is not available if netinet/in.h is not included.
* | directory: cast DEVICE_INARCHIVE, DEVICE_CONTAINER to dev_tMax Kellermann2010-09-231-2/+2
| | | | | | | | Fix gcc warning.
* | playlist_database: initialize pm.mtimeMax Kellermann2010-09-231-1/+3
| |
* | fd_util: work around aliasing warning in recvmsg_cloexec()Max Kellermann2010-09-231-2/+2
| |
* | output/httpd: access sockaddr_storage object directlyMax Kellermann2010-09-231-3/+2
| | | | | | | | Work around aliasing warning.
* | decoder_control: use g_free() to manage mixramp allocationsMax Kellermann2010-09-233-20/+10
| | | | | | | | | | Be consistent with the rest of MPD, and don't use the non-portable header "malloc.h".
* | update_walk: update existing playlist entryMax Kellermann2010-09-071-1/+3
| | | | | | | | Fixes duplicate playlist entries.
* | playlist_vector: update_or_add() returns boolMax Kellermann2010-09-072-2/+10
| | | | | | | | False if the vector was not modified.
* | output/httpd: implement "pause"Max Kellermann2010-08-311-0/+19
| | | | | | | | | | Send silence to all connected clients while paused, to avoid connection interruption.
* | output/httpd: forced flush after 32 kB of input dataMax Kellermann2010-08-312-0/+23
| | | | | | | | | | Avoid buffer underruns on the streaming client, if the encoder is "too efficient" (e.g. when encoding silence while paused).
* | ReplayGain filter: allow gain > 100 %Johan Kiviniemi2010-08-231-3/+11
| | | | | | | | | | | | | | The ReplayGain filter clamped the gain to max. 100 % even if the algorithm determined the signal needed a boost. That would result in any such tracks being played with too low volume, effectively defeating the purpose of the filter.
* | fd_util: add function dup_cloexec()Max Kellermann2010-08-032-0/+17
| | | | | | | | | | | | Unfortunately, there's no "optimized" implementation here. We can't use Linux's proprietary system call dup3(), because it would require us to specify the new descriptor.
* | fd_util: add function recvmsg_cloexec()Max Kellermann2010-08-032-0/+49
| |
* | fd_util: add function socketpair_cloexec()Max Kellermann2010-08-032-0/+35
| |
* | playlist_song: fix memory leakMax Kellermann2010-07-251-0/+2
| | | | | | | | Free the temporary path string in apply_song_metadata().
* | directory: free playlist vector in directory_free()Max Kellermann2010-07-251-0/+2
| |
* | queue_save: save tags and range of non-database songsMax Kellermann2010-07-255-21/+63
| | | | | | | | | | Use the functions song_save() and song_load() to use the same format as in the database file for those songs which need the tags.
* | song_save: save start_ms and end_msMax Kellermann2010-07-251-0/+11
| | | | | | | | | | While this is not useful for the database, it may become useful for reusing this code for the state file.
* | queue_save: simplify get_song()Max Kellermann2010-07-251-10/+3
| | | | | | | | Don't try db_get_song() if the URI has a scheme.
* | {queue,song}_print: print relative paths if possibleMax Kellermann2010-07-254-1/+22
| | | | | | | | | | | | If a song with an absolute path points inside the music directory, print only the relative part. This happens when partial songs from a playlist file were loaded.
* | queue_print: hide HTTP password in the "playlist" commandMax Kellermann2010-07-251-5/+2
| | | | | | | | | | | | | | I've already changed the "playlistinfo" command to hide HTTP passwords, but forgot to do the same for the simpler "playlist" command. This patch changes queue_print_uris() to use the code from song_print_uri().
* | queue_save: move code to queue_save_song()Max Kellermann2010-07-251-7/+11
| |
* | queue_save: queue_load_song() returns voidMax Kellermann2010-07-253-11/+7
| | | | | | | | | | The only caller doesn't use its return value, and the value isn't useful anyway.
* | song_save: song_load() returns NULL instead of falseMax Kellermann2010-07-251-2/+2
| |