aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* input_stream: use "goffset" instead of "off_t"Max Kellermann2009-10-1110-25/+25
| | | | | | | | | | | | The "off_t" type may change when you enable or disable large file support on 32 bit platforms. This caused severe ABI problems within MPD when we enabled LFS for the first time: two sources included config.h and sys/types.h in different order, and had different off_t sizes - leading to memory corruption because of ABI incompatibility. This patch attempts to get rid of all public "off_t" uses: it removes "off_t" from the input_stream ABI/API, and switches to GLib's 64 bit "goffset" type. This may hurt 32 bit embedded platforms a tiny bit, but that's not even measurable.
* Merge branch 'v0.15.x'Max Kellermann2009-10-115-54/+77
|\ | | | | | | | | | | | | Conflicts: NEWS configure.ac
| * riff, aiff: fixed "limited range" gcc warningMax Kellermann2009-10-113-10/+12
| | | | | | | | | | | | On 32 bit systems with large file support enabled (i.e. "sizeof(off_t) > sizeof(size_t)") gcc emits a warning because a size_t cast to off_t can never become negative.
| * decoder_thread: change the fallback decoder name to "mad"Max Kellermann2009-10-112-1/+2
| | | | | | | | | | | | When there is no Content-Type response header, try the "mad" decoder plugin. It uesd to be named "mp3", and we forgot to change the fallback name in decoder_thread.c.
| * input/curl: don't abort if a packet has only metadataMax Kellermann2009-10-112-20/+24
| | | | | | | | | | | | | | | | | | When a received chunk of data has only icy-metadata, there was no usable data left for input_curl_read() to return, and thus it returned 0 bytes. "0" however is a special value for "end of file" or "error". This patch makes input_curl_read() read more data from the socket, until the read request can be fulfilled (or until there's really EOF).
| * input/curl: moved code to fill_buffer()Max Kellermann2009-10-111-27/+40
| |
| * Modify version string to post-release version 0.15.5~gitAvuton Olrich2009-10-032-1/+4
| |
* | configure: Fix up the recorder plugin configure.Avuton Olrich2009-10-101-3/+3
| |
* | doc/protocol.xml: "addid" with negative position is deprecatedMax Kellermann2009-10-092-4/+2
| |
* | player_thread: get "elapsed" from audio outputsMax Kellermann2009-10-085-4/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tracking the "elapsed" time from the chunks which we have sent to the output pipe is very imprecise: since we have implemented the music pipe, we're sending large number of chunks at once, giving the "elapsed" time stamp a resolution of usually more than a second. This patch changes the source of this information to the outputs. If a chunk has been played by all outputs, the "elapsed" time stamp is updated. The new command PLAYER_COMMAND_REFRESH makes the player thread update its status information: it tells the outputs to update the chunk time stamp. After that, player_control.elapsed_time is current.
* | player_thread: always clear player_control.next_song on returnMax Kellermann2009-10-081-5/+3
| | | | | | | | | | | | pc.next_song might be non-NULL even if player.queued==true: when the decoder has started decoding the next song, but the result hasn't been read yet.
* | player_control: eliminate PLAYER_COMMAND_PLAYMax Kellermann2009-10-083-5/+1
| | | | | | | | | | Sending PLAYER_COMMAND_STOP followed by PLAYER_COMMAND_QUEUE does the same. PLAYER_COMMAND_PLAY is redundant.
* | player_control: added several assertions on pc.next_song==NULLMax Kellermann2009-10-081-0/+6
| | | | | | | | | | After some of the commands, the player thread must have reset the pc.next_song attribute.
* | player_control: no CamelCaseMax Kellermann2009-10-089-62/+79
| |
* | player_control: clear errored_song in clearPlayerError()Max Kellermann2009-10-081-1/+2
| | | | | | | | | | Without the player error code, it errored_song variable is not used, and should be cleared, to avoid invalid access in pc_song_deleted().
* | player_control: bundle "get" functions in pc_get_status()Max Kellermann2009-10-084-34/+46
| | | | | | | | | | | | The new player_status struct replaces a bunch of playerGetX() functions. When we add proper locking to the player_control struct, we will only need to lock once for the "status" command.
* | player_control: allocate getPlayerErrorStr() resultMax Kellermann2009-10-083-21/+23
| | | | | | | | This lets us eliminate the static fixed-size buffer.
* | playlist_control: "previous" really plays the previous songMax Kellermann2009-10-084-39/+13
| | | | | | | | | | | | | | No more CD player emulation. The current behaviour of "previous" is difficult for a client to predict, because it does not definitely know the current position within the song. If a client wants to restart the current song, it can always send "playid".
* | input_stream: include config.h for AC_SYS_LARGEFILE macrosMax Kellermann2009-10-081-0/+2
| | | | | | | | | | AC_SYS_LARGEFILE defines macros for config.h. If we don't include config.h, we don't get large file support.
* | decoder_api: document all function parametersMax Kellermann2009-10-081-27/+73
| |
* | configure.ac: build with large file support by defaultAlam Arias2009-10-082-0/+3
| | | | | | | | This fixes mpg123 support.
* | state_file: save only if something has changedMax Kellermann2009-10-089-0/+87
| | | | | | | | | | | | If nothing has changed since the last save, don't save the state file. Saving will spin up the hard drive, which is undesirable on hosts where MPD is idling in background.
* | output_state: no CamelCaseMax Kellermann2009-10-063-6/+6
| |
* | Merged release 0.15.4 from branch 'v0.15.x'Max Kellermann2009-10-036-6/+51
|\| | | | | | | | | | | Conflicts: NEWS configure.ac
| * mpd version 0.15.4release-0.15.4Avuton Olrich2009-10-032-2/+2
| |
| * decoder/ffmpeg: use the "artist" tag if "author" is not presentMax Kellermann2009-09-302-2/+6
| | | | | | | | | | | | | | Usually, we read our "artist" tag from ffmpeg's "author" tag. In some cases however (e.g. APE), this tag is named "artist". This patch implements a fallback: if no "author" is found, MPD tries to use "artist".
| * decoder/faad: skip assertion failure on large ID3 tagsMax Kellermann2009-09-302-2/+7
| | | | | | | | | | | | When the ID3 tag in an AAC file is larger than the current buffer, the function decoder_buffer_consume() aborts. By using the new function decoder_buffer_skip() instead, we can safely skip the ID3 tag.
| * decoder_buffer: added function decoder_buffer_skip()Max Kellermann2009-09-302-0/+36
| |
| * input/mms: fix G_LOG_DOMAIN valueSerge Ziryukin2009-09-201-1/+1
| |
| * output/osx: fix the OS X 10.6 buildPatrik Weiskircher2009-09-202-0/+3
| | | | | | | | Include CoreServices/CoreServices.h.
* | command: range support for "delete"Max Kellermann2009-09-304-3/+39
| |
* | playlist_edit: moved code to playlist_delete_internal()Max Kellermann2009-09-301-10/+19
| |
* | Add the sidplay filter param to doc/mpdconf.example.Tony2009-09-281-0/+4
| |
* | Make the sidplay decoder filter configurable.Tony2009-09-281-1/+5
| |
* | automatically update the database with Linux inotifyMax Kellermann2009-09-2510-0/+806
| | | | | | | | | | | | This patch implements a light-weight inotify library, and watches all directories below the music directory. It updates all directories where files changed after a delay of 5 seconds.
* | update: added missing stdbool.h includeMax Kellermann2009-09-251-0/+2
| |
* | command: relax requirements for unquoted wordsMax Kellermann2009-09-253-6/+75
| | | | | | | | | | | | Allow most printable characters in unquoted words. The tokenizer patch introduced very strict requirements for command parameters - those were undocumented, and we're reverting the strictness now.
* | command: added command "rescan"Max Kellermann2009-09-248-27/+81
| | | | | | | | | | "rescan" is the same as "update", but it discards existing songs in the database.
* | configure.ac: rename HAVE_CURL to ENABLE_CURLMax Kellermann2009-09-244-6/+6
| |
* | conf: handle fatal errors with GErrorMax Kellermann2009-09-247-58/+136
| | | | | | | | | | | | | | Don't call g_error(), which will abort the process and dump core. This patch does not affect all the config_get_X() functions. These need some more refactoring.
* | conf: splitted function config_param_free()Max Kellermann2009-09-241-4/+11
| |
* | cmdline: handle fatal errors with GErrorMax Kellermann2009-09-243-5/+30
| | | | | | | | Don't call g_error(), which will abort the process and dump core.
* | listen: handle fatal errors with GErrorMax Kellermann2009-09-243-10/+29
| | | | | | | | Don't call g_error(), which will abort the process and dump core.
* | update: splitted update.c into several sourcesMax Kellermann2009-09-246-770/+991
| |
* | update: pass const string to update_enqueue()Max Kellermann2009-09-243-14/+20
| | | | | | | | | | Duplicate the path string within update.c, do not expect an allocated string as parameter.
* | update: renamed directory_update_init() to update_enqueue()Max Kellermann2009-09-244-4/+4
| |
* | decoder/sidplay: free songlength data blob in error handlerMax Kellermann2009-09-241-3/+4
| | | | | | | | | | When parsing the songlength database fails, the code forgot to free the memory allocated by the raw file data.
* | decoder/sidplay: moved code to sidplay_load_songlength_db()Max Kellermann2009-09-241-29/+36
| |
* | decoder/sidplay: free GError objectsMax Kellermann2009-09-241-0/+2
| | | | | | | | | | The caller is responsible fro freeing GError objects. That g_error_free() call was missing in two places.
* | decoder/sidplay: pass GError** to g_file_get_contents()Max Kellermann2009-09-241-1/+2
| | | | | | | | | | The error handler dereferences GError*, but did not retrieve that object from g_file_get_contents().