| Commit message (Collapse) | Author | Files | Lines |
|
Consume mode removes each song played
|
|
When single mode is enabled, after current song it stops playback,
or it replay same song if repeat mode is activated.
|
|
The smartstop feature is a way to tell mpd to stop playing after
current song.
This patche provides:
- 'state' command returns 'smartstop' state (1 or 0)
- 'smartstop' can activate or not the smartstop state
- when song is terminated, mpd stops playing and smartstop is set to 0
|
|
The move command now accepts a range for the first argument, in the same
form as other range commands, e.g. move 15:17 3. The first song in the
range is placed at the destination position. Note that as with other
range commands, the range is inclusive on the left only; this example
would move only songs 15 and 16, not 17.
[mk: fixed signed/unsigned warnings; use G_MAXUINT instead of
UINT_MAX]
|
|
This updates the copyright header to all be the same, which is
pretty much an update of where to mail request for a copy of the GPL
and the years of the MPD project. This also puts all committers under
'The Music Player Project' umbrella. These entries should go
individually in the AUTHORS file, for consistancy.
|
|
This command shuffles a range of songs.
|
|
In random mode, this patch allows clients to see the "next song" in
the queue.
|
|
Pass constant playlist objects to functions which do not modify it.
|
|
Export the "g_playlist" variable, and pass it to all playlist
functions. This way, we can split playlist.c easier into separate
parts. The code which initializes the singleton variable is moved to
playlist_global.c.
|
|
|
|
Don't declare and export variables specific to stored playlists in
playlist.c/playlist.h.
|
|
Now playlist.c does not contain any protocol specific code anymore.
|
|
No CamelCase and no typedefs.
|
|
Replaced several wrapper functions from playlist.c, and make command.c
use the queue print functions directly.
|
|
To allow code outside playlist.c to access the "queue" object,
provide a function which returns a const pointer.
|
|
No typedefs.
|
|
Moved the 2 remaining global variables into the playlist struct.
|
|
PlaylistInfo() (notice the capital 'P') sends a stored playlist to the
client. Move it to a separate library, where all the code which glues
the playlist and the MPD protocol together will live.
|
|
The LocateTagItem objects are not modified.
|
|
The playlist.c source is currently quite hard to understand. I have
managed to wrap my head around it, and this patch attempts to explain
it to the next guy.
|
|
All callers pass false. Don't bother to collect that parameter.
|
|
There were only two possible states: STOP and PLAY. The code looks a
lot easier if we use a bool instead. Move the variable into the
playlist struct.
|
|
Added several comments.
|
|
Attempt to untie the playlist.c knot: moved the playlist storage code
to queue.c, struct queue.
|
|
Don't attempt to restart the player if it was stopped, but there were
still songs left on the playlist. This looks like it has been a
workaround for a bug which has been fixed long time ago.
|
|
The "TAG" event is emitted by the player thread when the current
song's tag has changed. Split this event from "PLAYLIST" and make it
a separate callback, which is more efficient.
|
|
|
|
A song index cannot be negative. Also require the second parameter to
be valid.
|
|
Loosely based on a patch provided by lesion in bug #1766. The playlistinfo
command can now retrieve ranges of the playlist. The new argument indicates
which entry is the last one that will be displayed. The number of displayed
entries may be smaller than expected if the end of the playlist is reached.
Previous usage:
playlistinfo [start]
New usage:
playlistinfo [start[:end]]
|
|
Don't call command_error() if loading a song from the playlist fails.
This may result in assertion failures, since command_error() may be
called more than once.
|
|
There are no unix sockets on WIN32, and therefore no authentication.
WIN32 might have similar capabilities, but until we implement them,
disable that MPD feature.
|
|
When the tag of the current song changes (e.g. a new tag was sent in
the stream), update the playlist, so clients pick up the new tag.
|
|
Added the function map_spl_utf8_to_fs() which replaces
utf8_to_fs_playlist_path().
|
|
"LOG_H" is a macro which is also used by ffmpeg/log.h. This is
ffmpeg's fault, because short macros should be reserved for
applications, but since it's always a good idea to choose prefixed
macro names, even for applications, we are going to do that in MPD.
|
|
The function deletePlaylist() shouldn't be in playlist.c.
|
|
There are some integers which have a "magic" -1 value which means
"undefined" or "nothing". All others can be converted to unsigned,
since they must not contain a negative number.
|
|
The two functions clearStoredPlaylist() and addToStoredPlaylist()
don't belong into playlist.c. clearStoredPlaylist() was a wrapper for
spl_clear(), and is converted into a CPP macro for now.
|
|
Clients which have authenticated via unix socket may add local files
to the MPD playlist, provided that they own the file.
|
|
"bool" should be used in C99 programs for boolean values.
|
|
Again, a data type which can be forward-declared.
|
|
Do full C99 integer type conversion in all modules which were not
touched by Eric's merged patch.
|
|
We don't change the song pointer there, either.
|
|
Pass the client struct instead of the raw file descriptor.
|
|
The function loadPlaylist() wants to report incremental errors to the
client, for this reason we cannot remove its protocol dependency right
now. Instead, make it use the client struct instead of the raw file
descriptor.
|
|
Don't pass the raw file descriptor around. This migration patch is
rather large, because all of the sources have inter dependencies - we
have to change all of them at the same time.
|
|
Return an "enum playlist_result" value instead of calling
commandError() in storedPlaylist.c.
|
|
The playlist library shouldn't talk to the client if possible.
Introduce the "enum playlist_result" type which the caller
(i.e. command.c) may use to generate an error message.
|
|
Make them both return void.
|
|
Client's input values should be validated by the command
implementation, and the core libraries shouldn't talk to the client
directly if possible. Thus, setPlaylistRepeatStatus() and
setPlaylistRandomStatus() don't get the file descriptor, and cannot
fail (return void).
|
|
The function valid_playlist_name() checks the name, but it insists on
reporting an eventual error to the client. The new function
is_valid_playlist_name() is more generic: it just returns a boolean,
and does not care what the caller will use it for. The old function
valid_playlist_name() will be removed later.
|