aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* player_thread: disable cross-fading in "single" modeMax Kellermann2012-08-251-7/+10
| | | | | | | | | | | | | This commit reimplements the core of the "single" mode. Instead of doing the detection in the playlist code from the outside, it is moved to the player thread, which gets a new option called "border_pause". It will now pause playback exactly at the beginning of the new song, making the feature more reliable. Now that the player thread knows what will happen, it can suppress cross-fading. Fixes mantis tickets 0003055 and 0003166.
* playlist: fix unprotected player_control accessMax Kellermann2012-08-151-1/+5
|
* copyright year 2011Max Kellermann2011-01-291-1/+1
|
* player_control: removed the global variable "pc"Max Kellermann2011-01-101-32/+41
| | | | | | | Allocate a player_control object where needed, and pass it around. Each "client" object is associated with a "player_control" instance. This prepares multi-player support.
* playlist: make single mode 'sticky'Andrew Morgan2010-09-281-4/+1
|
* 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.
* 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.
* 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-311-9/+10
|
* Merge release 0.15.9 from branch 'v0.15.x'Max Kellermann2010-03-281-1/+2
|\ | | | | | | | | | | | | | | | | Conflicts: NEWS configure.ac src/cue/cue_tag.c src/decoder/mpcdec_decoder_plugin.c src/player_thread.c
| * playlist: fix single+repeat in random modeMax Kellermann2010-03-071-1/+2
| | | | | | | | | | | | | | With single+repeat enabled, it is expected that MPD repeats the current song over andd over. With random mode also enabled, this didn't work, because the song order was shuffled internally. This patch adds a special check for this case.
* | Update copyright notices.Avuton Olrich2009-12-311-1/+1
| |
* | include config.h in all sourcesMax Kellermann2009-11-121-0/+1
| | | | | | | | | | | | After we've been hit by Large File Support problems several times in the past week (which only occur on 32 bit platforms, which I don't have), this is yet another attempt to fix the issue.
* | player_control: no CamelCaseMax Kellermann2009-10-081-5/+5
| |
* | playlist_control: "previous" really plays the previous songMax Kellermann2009-10-081-4/+0
| | | | | | | | | | | | | | 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".
* | playlist: CamelCaseIsBadCourtney Cavin2009-07-281-25/+35
| | | | | | | | Renamed all playlist functions to non-CamelCase.
* | playlist: no CamelCaseMax Kellermann2009-07-141-1/+1
|/
* playlist_control: use GTimer in previousSongInPlaylist()Max Kellermann2009-04-251-0/+4
| | | | | To determine whether to rewind the current song or to go to the previous song, use a GTimer instead of manually diffing time(NULL).
* implemented the 'consume' modeRomain Bignon2009-03-301-0/+19
| | | | Consume mode removes each song played
* renamed smartstop to single and changed behaviorRomain Bignon2009-03-271-7/+16
| | | | | When single mode is enabled, after current song it stops playback, or it replay same song if repeat mode is activated.
* implements the smartstop featureRomain Bignon2009-03-271-0/+20
| | | | | | | | | 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
* all: Update copyright header.Avuton Olrich2009-03-131-6/+7
| | | | | | | | 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.
* playlist: don't preserve "current" song after "random" toggleMax Kellermann2009-02-111-2/+4
| | | | | | | | When MPD is not playing, it may still remember which is the "current" song. When you switch to "random" mode, MPD will always start playing exactly this song. This defies the goal of "random" mode a little. Clear the "current" song when MPD is not playing during the "random" mode switch.
* playlist: fixed "next song" checkVladimir S Eremin2009-02-091-3/+2
| | | | Check if the "current+1" position is actually valid.
* playlist: provide information about "next song"Vladimir S Eremin2009-02-091-0/+15
| | | | | In random mode, this patch allows clients to see the "next song" in the queue.
* playlist: added G_LOG_DOMAINMax Kellermann2009-02-041-3/+5
| | | | Removed the explicit "playlist:" prefix from all log messages.
* playlist: pass const playlist pointersMax Kellermann2009-02-041-6/+6
| | | | Pass constant playlist objects to functions which do not modify it.
* playlist: moved code to playlist_edit.cMax Kellermann2009-02-041-369/+0
| | | | | Moved functions for playlist editing (append, delete, shuffle, move) to playlist_edit.c.
* playlist: moved code to playlist_control.cMax Kellermann2009-02-041-241/+4
| | | | | Moved handlers for control commands (play, stop, next, prev) to playlist_control.c.
* playlist: call syncPlaylistWithQueue() only in the event handlerMax Kellermann2009-02-041-4/+0
| | | | | | Don't call syncPlaylistWithQueue() in nextSongInPlaylist() and previousSongInPlaylist(). This is a relic from the time when there was no event, and was a workaround to the timing problem.
* playlist: renamed global "playlist" variable to "g_playlist"Max Kellermann2009-02-041-306/+310
| | | | | | | 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.
* playlist: moved code to playlist_state.cMax Kellermann2009-02-041-134/+3
| | | | | Moved everything related to saving or loading the playlist from/to the state file to playlist_state.c.
* playlist: simplified playlist.queued updatesMax Kellermann2009-02-041-117/+111
| | | | | | | | | Before every operation which modifies the playlist, remember a pointer to the song struct. After the modification, determine the "next song" again, and if it differs, dequeue and queue the new song. This removes a lot of complexity from the playlist update code, and makes it more robust.
* playlist: clear playlist.playing when deleting current songMax Kellermann2009-01-301-0/+1
| | | | | This fixes an assertion failure: when the last song in the playlist was playing, and you deleted it, MPD aborted.
* playlist: moved is_valid_playlist_name() to stored_playlist.cMax Kellermann2009-01-251-16/+0
|
* playlist: moved savePlaylist() and loadPlaylsit() to playlist_save.cMax Kellermann2009-01-251-61/+0
|
* playlist: removed g_rand, PLAYLIST_HASH_MULTMax Kellermann2009-01-251-10/+0
| | | | Both are unused.
* queue: added queue_shuffle_order_last()Max Kellermann2009-01-251-6/+3
| | | | | This function shuffles the last song of a range. This is used by addSongToPlaylist().
* stored_playlist: moved configuration variables from playlist.cMax Kellermann2009-01-251-14/+3
| | | | | Don't declare and export variables specific to stored playlists in playlist.c/playlist.h.
* playlist: removed locate functions to queue_print.cMax Kellermann2009-01-241-33/+0
| | | | Now playlist.c does not contain any protocol specific code anymore.
* locate: renamed LocateTagItem to "struct locate_item"Max Kellermann2009-01-241-4/+5
| | | | No CamelCase and no typedefs.
* command: use queue_print_*()Max Kellermann2009-01-241-48/+0
| | | | | Replaced several wrapper functions from playlist.c, and make command.c use the queue print functions directly.
* playlist: added playlist_get_queue()Max Kellermann2009-01-241-0/+6
| | | | | To allow code outside playlist.c to access the "queue" object, provide a function which returns a const pointer.
* playlist: renamed the Playlist typedef to "struct playlist"Max Kellermann2009-01-241-1/+1
| | | | No typedefs.
* playlist: moved stopOnError and errorCount into struct playlistMax Kellermann2009-01-241-11/+9
| | | | Moved the 2 remaining global variables into the playlist struct.
* playlist: restore random mode after playlist is loadedMax Kellermann2009-01-231-8/+6
| | | | | | | When the playlist was loaded from the state file, the order numbers were the same as the positions. In random mode, we need to shuffle the queue order. To accomplish that, call setPlaylistRandomStatus() at the end of readPlaylistState(), and do a fresh shuffle.
* playlist: removed song_id_to_position()Max Kellermann2009-01-231-12/+7
| | | | song_id_to_position() is only a wrapper for queue_id_to_position().
* playlist: fix "clear" crash in random modeMax Kellermann2009-01-231-0/+5
| | | | | | | When MPD is not playing while in random mode, and the client issues the "clear" command, MPD crashes in stopPlaylist(), or more exactly, in queue_order_to_position(-1). Exit from stopPlaylist() if MPD isn't playing.