diff options
author | Arno <am@disconnect.de> | 2013-08-10 13:29:19 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-08-10 13:29:19 +0200 |
commit | 857ed61ef2bac025e15ab6345e2fec96bf2cbe79 (patch) | |
tree | 5c7e297f62cef0fe7471f77f9d3af8f9a74b1244 | |
parent | 6e4a72a3442af9e6c4010cccc2329035008df167 (diff) | |
download | SheMov-857ed61ef2bac025e15ab6345e2fec96bf2cbe79.tar.gz SheMov-857ed61ef2bac025e15ab6345e2fec96bf2cbe79.tar.bz2 SheMov-857ed61ef2bac025e15ab6345e2fec96bf2cbe79.zip |
Bugfix SmDirWatcher
Don't enqueue anything if the INOTIFY_MASK doesn't match. Could be the
reason for random crashes...
-rw-r--r-- | archivemodel.cpp | 1 | ||||
-rw-r--r-- | smdirwatcher.cpp | 12 |
2 files changed, 7 insertions, 6 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 58bfc24..3fb8188 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -1042,7 +1042,6 @@ void ArchiveCollector::fetchSeries(const QVariant &id, SmTreeItem *parent){ parent->setData(ArchiveModel::Count, parent->childCount()); } - void ArchiveCollector::fetchParts(const QVariant &id, SmTreeItem *parent){ QSqlQuery partsQuery(mDb); if(mSortOrder == ArchiveModel::SeriesName){ diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp index 371e7cf..64ab330 100644 --- a/smdirwatcher.cpp +++ b/smdirwatcher.cpp @@ -70,17 +70,19 @@ void SmDirWatcher::run(){ quint32 mask = e->mask; QString name = QString("%1/%2").arg(mCurrent).arg(e->name); DWEvent curEvent = None; + QPair<QString, DWEvent> c; if(mask & IN_CREATE || mask & IN_MOVED_TO){ curEvent = Added; - } - if(mask & IN_DELETE || mask & IN_MOVED_FROM){ + }else if(mask & IN_DELETE || mask & IN_MOVED_FROM){ curEvent = Deleted; - } - if(mask & IN_CLOSE_WRITE || e->mask & IN_MODIFY){ + }else if(mask & IN_CLOSE_WRITE || e->mask & IN_MODIFY){ curEvent = Modified; + }else{ + goto out; } - QPair<QString, DWEvent> c = qMakePair(name, curEvent); + c = qMakePair(name, curEvent); mDataQueue->enqueue(c); + out: mSemUsed->release(); i += sizeof(inotify_event) + e->len; } |