In a case where a playlist is composed entirely of unresolvable
internet service URLs and the playlist is set to repeat, playing an
item will result in an infinite (until crash) recursive condition.
HandleLoadResult is called with a NoMoreTracks result. It then calls
NextItem, which calls PlayAt for the next item, which, again, calls
HandleLoadResult.
This can be reproduced by logging into a subsonic server, adding items
to an empty playlist, then signing out.
To solve this, separate the error condition from the NoMoreTracks
result. Handle URL resolution errors the same way that media playback
errors are handled, where an error count is incremented and the player
stops if a limit is reached. The common code also notifies the playlist
of the error and provides user feedback by graying out the item.
Use the request URL rather than the media URL when emitting the
SongChangeRequestProcessed signal. The request URL is the URL that the
PlaylistManager, which is the only consumer of this signal, knows about.
However, in the current cases, the url is only checked by the playlist
when the two URLs should be the same.
Modify the signals emitted by the engine when a url is determined to be
valid or invalid to send the entire request. This will allow additional
metadata to be added to the request, providing a mechanism to better
identify the request source.
track".
Changed shortcut key for Next Album from "space" to F9
Fixed indentation in player.cpp
Fixed spacing in player.cpp.
Updated player.cpp to ensure while loop takes into consideration the last
song on the playlist.
Fixed lint formatting error in player.cpp
Additional changes to player.cpp to make sure next album search reacts properly to the given repeat mode.
Updated player.cpp to address cpplint issues.
Fixing formatting issues.
Fixing formatting errors.
Finished formatting updates.
Final formatting...
Final formatting
Really final formatting...
Addressed issues from code review.
Added functionality to disable Next Album option when repeat mode is "repeat track".
Added commentary to recent changes.
Disable Next Album action also when Repeat Mode is Repeat_Album
In addition to disabling this action for the Next_Track repeat mode, the same applies to the Next_Album repeat mode.
Add a class to wrap the URL in the playback engines. In the future, this will
contain authentication information for the specified URL. It can also include
the start and end time as well as other data that is currently specified along
with the URL.
Fixes#4836
Last.fm defines a scrobble should be sent if:
-the track is longer than 30 seconds.
-the track has been played for at least half its duration, or for 4 minutes (whichever occurs earlier.)
Clementine has treated this as seconds from the start of the track, and if any seeking occurs, it nullifies the scrobble.
This IMO is incorrect. If I skip the first 10 seconds of a song, but listen to the rest (still meeting the time requirements),
I should still be able to scrobble the play. This change moves the scrobble point with every seek, requiring continuous playback
from any point that satisfies the time criteria.
If "fade out on stop" is enabled, the "stop after this track" feature
would stop not stop the on current track, but instead start playing
the next track and fade out on that immediately. This patch disables
fadeout when the engine is stopped by HandleStopAfter().
Stop after track would cause now playing widget, OSD, and last.fm
scrobbler to change to next track after stopping. This patch prevents
set_current_row() from firing an event which triggers the track change.