diff options
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 4b0c720..68b7e4f 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -1096,7 +1096,16 @@ void ArchiveCollector::setCancelled(bool cancel){ } void ArchiveCollector::run(){ - mAccessMx.lock(); + QMutexLocker l(&mAccessMx); + // check if db is still connected + // if not, skip this run and leave everything as is + QSqlQuery dummy(mDb); + dummy.prepare("SELECT 1"); + if(!dummy.exec()){ + mDb.close(); + mDb.open(); + return; + } delete mRootItem; mRootItem = new SmTreeItem(mNumFields); switch (mSortOrder){ @@ -1118,7 +1127,6 @@ void ArchiveCollector::run(){ default: return; } - mAccessMx.unlock(); } void ArchiveCollector::populateBySeriesName() { |