Index: Slim/Control/Commands.pm =================================================================== --- Slim/Control/Commands.pm (revision 6229) +++ Slim/Control/Commands.pm (working copy) @@ -988,7 +988,9 @@ if ($playlistObj && ref($playlistObj) && $playlistObj->content_type =~ /^(?:ssp|m3u)$/) { - $jumpToIndex = Slim::Formats::Parse::readCurTrackForM3U( $client->currentPlaylist->path ); + unless (Slim::Player::Playlist::shuffle($client)) { + $jumpToIndex = Slim::Formats::Parse::readCurTrackForM3U( $client->currentPlaylist->path ); + } # And set a callback so that we can # update CURTRACK when the song changes. Index: Slim/Player/Source.pm =================================================================== --- Slim/Player/Source.pm (revision 6229) +++ Slim/Player/Source.pm (working copy) @@ -806,7 +806,7 @@ dropStreamingConnection($client); $client->update(); - + return 0; } else { @@ -939,7 +939,6 @@ return defined($song) ? $song->{duration} : 0; } - sub resetSongQueue { my $client = Slim::Player::Sync::masterOrSelf(shift); my $queue = $client->currentsongqueue(); @@ -950,6 +949,12 @@ $#{$queue} = -1; push @$queue, $playingsong; $::d_source && msg("Song queue is now " . join(',', map { $_->{index} } @$queue) . "\n"); + + # update CURTRACK of a known playlist back to start + my $request = Slim::Control::Request->new( + (blessed($client) ? $client->id() : undef)); + $request->addParam('reset',1); + Slim::Player::Playlist::newSongPlaylistCallback($request); } sub markStreamingTrackAsPlayed { Index: Slim/Player/Playlist.pm =================================================================== --- Slim/Player/Playlist.pm (revision 6229) +++ Slim/Player/Playlist.pm (working copy) @@ -633,13 +633,13 @@ $playlist = $client->currentPlaylist; } - return if Slim::Music::Info::isRemoteURL($playlist); + return if Slim::Music::Info::isRemoteURL($playlist) || Slim::Player::Playlist::shuffle($client); $::d_playlist && msg("Playlist: newSongPlaylistCallback() writeCurTrackForM3U()\n"); Slim::Formats::Parse::writeCurTrackForM3U( $playlist, - Slim::Player::Source::playingSongIndex($client) + $request->getParam('reset') ? 0 : Slim::Player::Source::playingSongIndex($client) ); }