diff options
Diffstat (limited to 'smdirwatcher.cpp')
-rw-r--r-- | smdirwatcher.cpp | 10 |
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) {} |