diff --git a/lib/index/mu-indexer.cc b/lib/index/mu-indexer.cc index 2dfa17d5..9790ff36 100644 --- a/lib/index/mu-indexer.cc +++ b/lib/index/mu-indexer.cc @@ -284,7 +284,7 @@ Indexer::Private::cleanup() void Indexer::Private::scan_worker() { - progress_ = {}; + progress_.reset(); if (conf_.scan) { g_debug("starting scanner"); @@ -410,7 +410,7 @@ Indexer::is_running() const return priv_->state_ != IndexState::Idle; } -Indexer::Progress +const Indexer::Progress& Indexer::progress() const { priv_->progress_.running = priv_->state_ == IndexState::Idle ? false : true; diff --git a/lib/index/mu-indexer.hh b/lib/index/mu-indexer.hh index 2df7f1c6..bf318b02 100644 --- a/lib/index/mu-indexer.hh +++ b/lib/index/mu-indexer.hh @@ -1,5 +1,5 @@ /* -** Copyright (C) 2021 Dirk-Jan C. Binnema +** Copyright (C) 2022 Dirk-Jan C. Binnema ** ** This program is free software; you can redistribute it and/or modify it ** under the terms of the GNU General Public License as published by the @@ -20,6 +20,7 @@ #ifndef MU_INDEXER_HH__ #define MU_INDEXER_HH__ +#include #include #include @@ -88,20 +89,26 @@ public: // Object describing current progress struct Progress { - bool running{}; /**< Is an index operation in progress? */ - size_t checked{}; /**< Number of messages checked for changes */ - size_t updated{}; /**< Number of messages (re)parsed & added/updated to store */ - size_t removed{}; /**< Number of message removed from store */ + void reset() + { + running = false; + checked = updated = removed = 0; + } + + std::atomic running{}; /**< Is an index operation in progress? */ + std::atomic checked{}; /**< Number of messages checked for changes */ + std::atomic updated{}; /**< Number of messages (re)parsed/added/updated */ + std::atomic removed{}; /**< Number of message removed from store */ }; /** * Get an object describing the current progress. The progress object - * describes the most recent indexing job, and is reset up a fresh + * describes the most recent indexing job, and is reset upon a fresh * start(). * * @return a progress object. */ - Progress progress() const; + const Progress& progress() const; private: struct Private;