diff options
Diffstat (limited to 'src/db/update/Walk.hxx')
-rw-r--r-- | src/db/update/Walk.hxx | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/db/update/Walk.hxx b/src/db/update/Walk.hxx index bf3eb8ae4..353f6f3ed 100644 --- a/src/db/update/Walk.hxx +++ b/src/db/update/Walk.hxx @@ -48,6 +48,13 @@ class UpdateWalk final { bool walk_discard; bool modified; + /** + * Set to true by the main thread when the update thread shall + * cancel as quickly as possible. Access to this flag is + * unprotected. + */ + volatile bool cancel; + Storage &storage; DatabaseEditor editor; @@ -57,6 +64,22 @@ public: Storage &_storage); /** + * Cancel the current update and quit the Walk() method as + * soon as possible. + */ + void Cancel() { + cancel = true; + } + + /** + * Call from the main thread before starting the update + * thread. + */ + void Prepare() { + cancel = false; + } + + /** * Returns true if the database was modified. */ bool Walk(Directory &root, const char *path, bool discard); |