| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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).
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
Sending PLAYER_COMMAND_STOP followed by PLAYER_COMMAND_QUEUE does the
same. PLAYER_COMMAND_PLAY is redundant.
|
| |
| |
| |
| |
| | |
After some of the commands, the player thread must have reset the
pc.next_song attribute.
|
| | |
|
| |
| |
| |
| |
| | |
Without the player error code, it errored_song variable is not used,
and should be cleared, to avoid invalid access in pc_song_deleted().
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| | |
This lets us eliminate the static fixed-size buffer.
|
| |
| |
| |
| |
| |
| |
| | |
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".
|
| |
| |
| |
| |
| | |
AC_SYS_LARGEFILE defines macros for config.h. If we don't include
config.h, we don't get large file support.
|
| | |
|
| |
| |
| |
| | |
This fixes mpg123 support.
|
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
|\|
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
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".
|
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Include CoreServices/CoreServices.h.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
"rescan" is the same as "update", but it discards existing songs in
the database.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| | |
Don't call g_error(), which will abort the process and dump core.
|
| |
| |
| |
| | |
Don't call g_error(), which will abort the process and dump core.
|
| | |
|
| |
| |
| |
| |
| | |
Duplicate the path string within update.c, do not expect an allocated
string as parameter.
|
| | |
|
| |
| |
| |
| |
| | |
When parsing the songlength database fails, the code forgot to free
the memory allocated by the raw file data.
|
| | |
|
| |
| |
| |
| |
| | |
The caller is responsible fro freeing GError objects. That
g_error_free() call was missing in two places.
|
| |
| |
| |
| |
| | |
The error handler dereferences GError*, but did not retrieve that
object from g_file_get_contents().
|
| |
| |
| |
| |
| | |
Both options are deprecated, and should not be used anymore. Many
users get confused by their presence.
|