summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--archivemodel.cpp12
-rw-r--r--smdirwatcher.cpp6
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){