diff --git a/src/libtomahawk/database/databasecollection.cpp b/src/libtomahawk/database/databasecollection.cpp index 918fe5c87..55858c383 100644 --- a/src/libtomahawk/database/databasecollection.cpp +++ b/src/libtomahawk/database/databasecollection.cpp @@ -11,6 +11,7 @@ using namespace Tomahawk; DatabaseCollection::DatabaseCollection( const source_ptr& src, QObject* parent ) : Collection( src, QString( "dbcollection:%1" ).arg( src->userName() ), parent ) + , m_loadedTracks( false ) { } @@ -45,6 +46,8 @@ void DatabaseCollection::loadTracks() { qDebug() << Q_FUNC_INFO << source()->userName(); + + m_loadedTracks = true; DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( source()->collection() ); connect( cmd, SIGNAL( tracks( QList, Tomahawk::collection_ptr ) ), @@ -107,7 +110,7 @@ DatabaseCollection::tracks() { qDebug() << Q_FUNC_INFO; - if ( Collection::tracks().isEmpty() ) + if ( !m_loadedTracks ) { loadTracks(); } diff --git a/src/libtomahawk/database/databasecollection.h b/src/libtomahawk/database/databasecollection.h index 441ce937e..62b82eac6 100644 --- a/src/libtomahawk/database/databasecollection.h +++ b/src/libtomahawk/database/databasecollection.h @@ -32,6 +32,9 @@ public slots: private slots: void dynamicPlaylistCreated( const Tomahawk::source_ptr& source, const QVariantList& data ); + +private: + bool m_loadedTracks; }; #endif // DATABASECOLLECTION_H diff --git a/src/libtomahawk/network/controlconnection.cpp b/src/libtomahawk/network/controlconnection.cpp index bb5d46489..d1b8c8ee0 100644 --- a/src/libtomahawk/network/controlconnection.cpp +++ b/src/libtomahawk/network/controlconnection.cpp @@ -134,10 +134,10 @@ ControlConnection::setupDbSyncConnection( bool ondemand ) if ( m_dbsyncconn ) { connect( m_dbsyncconn, SIGNAL( finished() ), - m_dbsyncconn, SLOT( deleteLater() ) ); + m_dbsyncconn, SLOT( deleteLater() ) ); connect( m_dbsyncconn, SIGNAL( destroyed( QObject* ) ), - SLOT( dbSyncConnFinished( QObject* ) ), Qt::DirectConnection ); + SLOT( dbSyncConnFinished( QObject* ) ), Qt::DirectConnection ); } } @@ -151,6 +151,8 @@ ControlConnection::dbSyncConnFinished( QObject* c ) //qDebug() << "Setting m_dbsyncconn to NULL"; m_dbsyncconn = NULL; } + else + qDebug() << "Old DbSyncConn destroyed?!"; } @@ -158,8 +160,11 @@ DBSyncConnection* ControlConnection::dbSyncConnection() { qDebug() << Q_FUNC_INFO; - if( m_dbsyncconn == NULL ) + if ( !m_dbsyncconn ) + { setupDbSyncConnection( true ); + Q_ASSERT( m_dbsyncconn ); + } return m_dbsyncconn; } diff --git a/src/libtomahawk/network/servent.cpp b/src/libtomahawk/network/servent.cpp index 1c3fae85f..44525742b 100644 --- a/src/libtomahawk/network/servent.cpp +++ b/src/libtomahawk/network/servent.cpp @@ -711,7 +711,7 @@ Servent::triggerDBSync() if ( src.isNull() || src->isLocal() ) continue; - if ( src->controlConnection() && src->controlConnection()->dbSyncConnection() ) // source online? + if ( src->controlConnection() ) // source online? src->controlConnection()->dbSyncConnection()->trigger(); } }