summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--consistencycheck.cpp4
-rw-r--r--consistencycheck.h1
-rw-r--r--smdirmodel.cpp1
-rw-r--r--smdirwatcher.cpp10
4 files changed, 16 insertions, 0 deletions
diff --git a/consistencycheck.cpp b/consistencycheck.cpp
index 7e463a2..1583093 100644
--- a/consistencycheck.cpp
+++ b/consistencycheck.cpp
@@ -101,6 +101,10 @@ ConsistencyCheck::ConsistencyCheck(QWidget *parent, Qt::WindowFlags f) : SmDialo
setMinimumWidth(600);
}
+ConsistencyCheck::~ConsistencyCheck(){
+ mChecker->deleteLater();
+}
+
void ConsistencyCheck::setProgressBarMax(int max){
mProgress->reset();
mProgress->setMaximum(max);
diff --git a/consistencycheck.h b/consistencycheck.h
index ca078f1..6f54dcb 100644
--- a/consistencycheck.h
+++ b/consistencycheck.h
@@ -30,6 +30,7 @@ class ConsistencyCheck : public SmDialog {
public:
enum Mode { DbCheck, FsCheck };
explicit ConsistencyCheck(QWidget *parent = 0, Qt::WindowFlags f = 0);
+ ~ConsistencyCheck();
public slots:
void setProgressBarMax(int max);
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index 8a403d1..2b1e7dc 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -38,6 +38,7 @@ SmDirModel::~SmDirModel(){
if(mWatch->isRunning()){
mWatch->stop();
}
+ mWatch->deleteLater();
}
QVariant SmDirModel::data(const QModelIndex &index, int role) const{
diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp
index 038c4cf..5b4f42a 100644
--- a/smdirwatcher.cpp
+++ b/smdirwatcher.cpp
@@ -11,6 +11,7 @@
#include <sys/inotify.h>
#include <unistd.h>
+#include <poll.h>
#include "smdirmodel.h"
#include "smdirwatcher.h"
@@ -116,6 +117,14 @@ QList<QVariant> SmDirWatcher::generalData(const QString &path){
}
void SmDirWatcher::run(){
+ struct pollfd pfd[1];
+ pfd[0].fd = mFd;
+ pfd[0].events = POLLIN;
+ pfd[0].revents = 0;
+ int pr = poll(pfd, 1, 0);
+ if(pr <= 0){
+ return;
+ }
int r = read(mFd, mINdata, mBufLen);
if(r <= 0){
return;
@@ -145,6 +154,7 @@ void SmDirWatcher::run(){
void SmDirWatcher::stop(){
quit();
+ wait();
}
AsyncTask::AsyncTask(const QString &path) : mSkip(false), mPath(path) {}