don't push new URL into engine in the CurrentMetadataChanged slot - send it the beginning and end markers only

this means that Clementine still skips broken songs while at the same time fixes issue #1565
This commit is contained in:
Paweł Bara 2011-03-12 20:20:13 +00:00
parent 7f48c13dc9
commit c8c394d200
2 changed files with 8 additions and 2 deletions

View File

@ -277,8 +277,7 @@ void Player::PlayAt(int index, Engine::TrackChangeType change, bool reshuffle) {
void Player::CurrentMetadataChanged(const Song& metadata) {
// those things might have changed (especially when a previously invalid
// song was reloaded) so we push the latest version into Engine
engine_->Load(metadata.url(), Engine::Auto,
metadata.beginning_nanosec(), metadata.end_nanosec());
engine_->RefreshMarkers(metadata.beginning_nanosec(), metadata.end_nanosec());
#ifdef HAVE_LIBLASTFM
lastfm_->NowPlaying(metadata);

View File

@ -64,6 +64,13 @@ class Base : public QObject, boost::noncopyable {
// in miliseconds.
virtual bool Load(const QUrl& url, TrackChangeType change,
quint64 beginning_nanosec, qint64 end_nanosec);
// Sets new values for the beginning and end markers of the currently playing
// song.
// This doesn't change the state of engine or the stream's current position.
virtual void RefreshMarkers(quint64 beginning_nanosec, qint64 end_nanosec) {
beginning_nanosec_ = beginning_nanosec;
end_nanosec_ = end_nanosec;
}
// Plays a media stream represented with the URL 'u' from the given 'beginning'
// to the given 'end' (usually from 0 to a song's length). Both markers