diff --git a/src/libtomahawk/AlbumPlaylistInterface.cpp b/src/libtomahawk/AlbumPlaylistInterface.cpp index 1d5d84fd7..8597dadbf 100644 --- a/src/libtomahawk/AlbumPlaylistInterface.cpp +++ b/src/libtomahawk/AlbumPlaylistInterface.cpp @@ -149,7 +149,7 @@ AlbumPlaylistInterface::tracks() const Tomahawk::TracksRequest* cmd = m_collection->requestTracks( ap ); connect( dynamic_cast< QObject* >( cmd ), SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), - this, SLOT( onTracksLoaded( QList<Tomahawk::query_ptr> ) ) ); + this, SLOT( onTracksLoaded( QList<Tomahawk::query_ptr> ) ), Qt::UniqueConnection ); cmd->enqueue(); } @@ -246,7 +246,7 @@ AlbumPlaylistInterface::infoSystemFinished( const QString& infoId ) Tomahawk::TracksRequest* cmd = m_collection->requestTracks( ap ); connect( dynamic_cast< QObject* >( cmd ), SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), - this, SLOT( onTracksLoaded( QList<Tomahawk::query_ptr> ) ) ); + this, SLOT( onTracksLoaded( QList<Tomahawk::query_ptr> ) ), Qt::UniqueConnection ); cmd->enqueue(); } @@ -262,6 +262,9 @@ AlbumPlaylistInterface::infoSystemFinished( const QString& infoId ) void AlbumPlaylistInterface::onTracksLoaded( const QList< query_ptr >& tracks ) { +// disconnect( m_collection.data(), SIGNAL( tracksResult( QList< Tomahawk::query_ptr > ) ), +// this, SLOT( onTracksLoaded( QList< Tomahawk::query_ptr > ) ) ); + if ( m_collection.isNull() ) { m_databaseLoaded = true; diff --git a/src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp b/src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp index 9a4ee43fb..480fa1065 100644 --- a/src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp +++ b/src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp @@ -73,6 +73,8 @@ ScriptCommand_AllTracks::reportFailure() { emit tracks( QList< Tomahawk::query_ptr >() ); emit done(); + disconnect(); + sender()->disconnect( this ); } @@ -81,4 +83,7 @@ ScriptCommand_AllTracks::onResolverDone( const QList< Tomahawk::query_ptr >& q ) { emit tracks( q ); emit done(); + disconnect(); + sender()->disconnect( this ); + //FIXME: find a way to delete this object when its job is done }