the MetaStream class should disconnect from engineController in finishedPlaying...not sure if it already does, but that should assure that only one MetaStream class is listening to new metadata On Tue, May 6, 2008 at 5:30 PM, Mark Kretschmann wrote: > SVN commit 804606 by markey: > > Only apply new metadata to MetaStreams with the correct URL. Not sure if it was meant to work this way, but meh. > > > M +2 -0 EngineController.cpp > M +10 -8 meta/stream/Stream_p.h > > > --- trunk/extragear/multimedia/amarok/src/EngineController.cpp #804605:804606 > @@ -541,6 +541,8 @@ > > QHash meta; > > + meta.insert( Meta::valUrl, m_media->currentSource().url() ); > + > QStringList artist = m_media->metaData( "ARTIST" ); > debug() << "Artist : " << artist; > if( !artist.isEmpty() ) > --- trunk/extragear/multimedia/amarok/src/meta/stream/Stream_p.h #804605:804606 > @@ -48,15 +48,17 @@ > void engineNewMetaData( const QHash &metaData, bool trackChanged ) > { > Q_UNUSED( trackChanged ) > - DEBUG_BLOCK > > - if( metaData.contains( Meta::valArtist ) ) > - artist = metaData.value( Meta::valArtist ); > - if( metaData.contains( Meta::valTitle ) ) > - title = metaData.value( Meta::valTitle ); > - if( metaData.contains( Meta::valAlbum ) ) > - album = metaData.value( Meta::valAlbum ); > - notify(); > + if( metaData.value( Meta::valUrl ) == url.url() ) { > + debug() << "Applying new Metadata."; > + if( metaData.contains( Meta::valArtist ) ) > + artist = metaData.value( Meta::valArtist ); > + if( metaData.contains( Meta::valTitle ) ) > + title = metaData.value( Meta::valTitle ); > + if( metaData.contains( Meta::valAlbum ) ) > + album = metaData.value( Meta::valAlbum ); > + notify(); > + } > } > > public: >