diff options
-rw-r--r-- | archivemodel.cpp | 12 | ||||
-rw-r--r-- | smdirwatcher.cpp | 6 |
2 files changed, 15 insertions, 3 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() { diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp index 3fec952..46ec905 100644 --- a/smdirwatcher.cpp +++ b/smdirwatcher.cpp @@ -98,7 +98,11 @@ int SmDirWatcher::presenceData(QString &md5){ QSqlQuery present1Q(mDb); present1Q.prepare("SELECT COUNT(*) FROM files WHERE cmd5sum = :md5"); present1Q.bindValue(":md5", md5); - present1Q.exec(); + if(!present1Q.exec()){ + mDb.close(); + mDb.open(); + return SmDirModel::InNone; + } while(present1Q.next()){ int c = present1Q.value(0).toInt(); if(c > 0){ |