summaryrefslogtreecommitdiffstats
path: root/archivemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r--archivemodel.cpp13
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);