diff --git a/src/libtomahawk/audio/audioengine.cpp b/src/libtomahawk/audio/audioengine.cpp index 6fce7bf11..8fb8febe1 100644 --- a/src/libtomahawk/audio/audioengine.cpp +++ b/src/libtomahawk/audio/audioengine.cpp @@ -145,6 +145,9 @@ AudioEngine::stop() m_mediaObject->stop(); m_retryTimer.stop(); + + if ( m_playlist ) + m_playlist->reset(); setCurrentTrack( Tomahawk::result_ptr() ); emit stopped(); @@ -380,6 +383,9 @@ AudioEngine::playItem( Tomahawk::PlaylistInterface* playlist, const Tomahawk::re { qDebug() << Q_FUNC_INFO; + if ( m_playlist ) + m_playlist->reset(); + setPlaylist( playlist ); m_currentTrackPlaylist = playlist; @@ -452,6 +458,8 @@ AudioEngine::timerTriggered( qint64 time ) void AudioEngine::setPlaylist( PlaylistInterface* playlist ) { + if ( m_playlist ) + m_playlist->reset(); m_playlist = playlist; emit playlistChanged( playlist ); } diff --git a/src/libtomahawk/playlistinterface.h b/src/libtomahawk/playlistinterface.h index 2679aa09f..ad93a8a03 100644 --- a/src/libtomahawk/playlistinterface.h +++ b/src/libtomahawk/playlistinterface.h @@ -65,6 +65,8 @@ public: virtual QString filter() const { return m_filter; } virtual void setFilter( const QString& pattern ) { m_filter = pattern; } + virtual void reset() {} + QObject* object() const { return m_object; } public slots: diff --git a/src/sourcetree/sourcetreeview.cpp b/src/sourcetree/sourcetreeview.cpp index 43253b355..695633a29 100644 --- a/src/sourcetree/sourcetreeview.cpp +++ b/src/sourcetree/sourcetreeview.cpp @@ -375,13 +375,6 @@ SourceTreeView::latchOff() if( type != SourcesModel::Collection ) return; - PlaylistInterface* pi = AudioEngine::instance()->playlist(); - if ( pi && dynamic_cast< SourcePlaylistInterface* >( pi ) ) - { - SourcePlaylistInterface* sourcepi = dynamic_cast< SourcePlaylistInterface* >( pi ); - sourcepi->reset(); - } - AudioEngine::instance()->stop(); AudioEngine::instance()->setPlaylist( 0 ); }