summaryrefslogtreecommitdiffstats
path: root/smdirwatcher.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'smdirwatcher.cpp')
-rw-r--r--smdirwatcher.cpp10
1 files changed, 10 insertions, 0 deletions
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) {}