diff options
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 208bed8..14757af 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -36,6 +36,16 @@ ArchiveModel::ArchiveModel(const QStringList &headers, QObject *parent) : SmTree refresh(); } +ArchiveModel::~ArchiveModel(){ + /* We need this, otherwise there are random + * crashes when we exit and a collector is + * still runnning */ + foreach(ArchiveCollector *c, mCollectors){ + c->cancel(); + c->wait(); + } +} + const QStringList ArchiveModel::availableOrders() const { QStringList retval = mAvailableOrders.keys(); qSort(retval); @@ -220,7 +230,6 @@ void ArchiveModel::setOrder(int order) { SmTreeItem *rootItem = readCache(mOrder); if(rootItem){ setRoot(rootItem); - emit collectorDone(); } } @@ -245,9 +254,7 @@ void ArchiveModel::collectorFinished(QObject *thread){ SmTreeItem *rootCopy = t->rootItem(); int sortOrder = t->sortOrder(); if(sortOrder == mOrder){ - emit collectorAboutToBeDone(); setRoot(rootCopy); - emit collectorDone(); } writeCache(sortOrder, rootCopy); QString sortOrderName = mAvailableOrders.key(sortOrder); |