diff options
author | Christian Kamm <mail@ckamm.de> | 2016-03-31 15:04:53 +0300 |
---|---|---|
committer | Christian Kamm <mail@ckamm.de> | 2016-03-31 16:44:42 +0300 |
commit | fa1bb309caca72333459c08808d4adf0b81d62bf (patch) | |
tree | fa1bbd1ec2b3d0f602eee55728b577b2a9448d6d /src/gui/folderwatcher_win.h | |
parent | e05819370b9e42c8e12674e532cae5f71eb7751e (diff) |
Graceful termination of folderwatcher_win #4620
Diffstat (limited to 'src/gui/folderwatcher_win.h')
-rw-r--r-- | src/gui/folderwatcher_win.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/gui/folderwatcher_win.h b/src/gui/folderwatcher_win.h index 4a72be4ca..9e5e941e3 100644 --- a/src/gui/folderwatcher_win.h +++ b/src/gui/folderwatcher_win.h @@ -15,6 +15,7 @@ #define MIRALL_FOLDERWATCHER_WIN_H #include <QThread> +#include <QAtomicInt> #include <windows.h> namespace OCC { @@ -29,21 +30,33 @@ class WatcherThread : public QThread { Q_OBJECT public: WatcherThread(const QString &path) : - QThread(), _path(path), _handle(0) {} + QThread(), + _path(path), + _directory(0), + _resultEvent(0), + _stopEvent(0), + _done(false) + {} ~WatcherThread(); + void stop(); + protected: void run(); void watchChanges(size_t fileNotifyBufferSize, bool* increaseBufferSize); + void closeHandle(); signals: void changed(const QString &path); private: QString _path; - HANDLE _handle; + HANDLE _directory; + HANDLE _resultEvent; + HANDLE _stopEvent; + QAtomicInt _done; }; /** |