1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-06 06:07:37 +02:00

TWK-722: Fix quitting right after startup by ensuring chart data loaders are deleted before database

This commit is contained in:
Leo Franchi
2012-03-06 18:46:48 -05:00
parent 3caeb4642a
commit 34672c7bed
3 changed files with 11 additions and 0 deletions

View File

@@ -126,6 +126,10 @@ ViewManager::ViewManager( QObject* parent )
ViewManager::~ViewManager() ViewManager::~ViewManager()
{ {
saveCurrentPlaylistSettings(); saveCurrentPlaylistSettings();
delete m_whatsHotWidget;
delete m_welcomeWidget;
delete m_topLovedWidget;
delete m_contextWidget;
delete m_widget; delete m_widget;
} }

View File

@@ -108,6 +108,8 @@ WhatsHotWidget::WhatsHotWidget( QWidget* parent )
WhatsHotWidget::~WhatsHotWidget() WhatsHotWidget::~WhatsHotWidget()
{ {
qDeleteAll( m_workers );
m_workers.clear();
m_workerThread->exit(0); m_workerThread->exit(0);
m_playlistInterface.clear(); m_playlistInterface.clear();
delete ui; delete ui;
@@ -485,6 +487,7 @@ WhatsHotWidget::chartArtistsLoaded( ChartDataLoader* loader, const QList< artist
} }
} }
m_workers.remove( loader );
loader->deleteLater(); loader->deleteLater();
} }
@@ -502,6 +505,7 @@ WhatsHotWidget::chartTracksLoaded( ChartDataLoader* loader, const QList< query_p
m_trackModels[ chartId ]->append( tracks ); m_trackModels[ chartId ]->append( tracks );
} }
m_workers.remove( loader );
loader->deleteLater(); loader->deleteLater();
} }
@@ -515,5 +519,6 @@ WhatsHotWidget::chartAlbumsLoaded( ChartDataLoader* loader, const QList< album_p
if ( m_albumModels.contains( chartId ) ) if ( m_albumModels.contains( chartId ) )
m_albumModels[ chartId ]->addAlbums( albums ); m_albumModels[ chartId ]->addAlbums( albums );
m_workers.remove( loader );
loader->deleteLater(); loader->deleteLater();
} }

View File

@@ -49,6 +49,7 @@ namespace Tomahawk
{ {
class ChartDataLoader; class ChartDataLoader;
class ChartsPlaylistInterface; class ChartsPlaylistInterface;
class ChartDataLoader;
} }
/** /**
@@ -110,6 +111,7 @@ private:
// {Artist,Album,Track}::get() calls are all synchronous db calls // {Artist,Album,Track}::get() calls are all synchronous db calls
// and we don't want to lock up out UI in case the db is busy (e.g. on startup) // and we don't want to lock up out UI in case the db is busy (e.g. on startup)
QThread* m_workerThread; QThread* m_workerThread;
QSet< Tomahawk::ChartDataLoader* > m_workers;
// Cache our model data // Cache our model data
QHash< QString, AlbumModel* > m_albumModels; QHash< QString, AlbumModel* > m_albumModels;