loolwsd/DocumentBroker.cpp | 16 ++++++++++------ loolwsd/LOOLWSD.cpp | 5 +---- 2 files changed, 11 insertions(+), 10 deletions(-)
New commits: commit b06a07f6bc7149ffd497af5634e835f604d97d5f Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Mon May 9 01:11:09 2016 -0400 loolwsd: auto-save checks modified state and logs decision Change-Id: I69d32e8c5ceabd46b635aa6c5bb30ade21101fd0 Reviewed-on: https://gerrit.libreoffice.org/24785 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/DocumentBroker.cpp b/loolwsd/DocumentBroker.cpp index f0e6173..b51f872 100644 --- a/loolwsd/DocumentBroker.cpp +++ b/loolwsd/DocumentBroker.cpp @@ -219,19 +219,23 @@ bool DocumentBroker::save() bool DocumentBroker::autoSave(const bool force, const size_t waitTimeoutMs) { - Log::trace("Autosaving [" + _docKey + "]."); - std::unique_lock<std::mutex> lock(_mutex); - if (_sessions.empty() || _storage == nullptr || !_isLoaded) + if (_sessions.empty() || _storage == nullptr || !_isLoaded || + (!_isModified && !force)) { // Nothing to do. Log::trace("Nothing to autosave [" + _docKey + "]."); return true; } + // Remeber the last save time, since this is the predicate. + const auto lastSaveTime = _lastSaveTime; + Log::trace("Autosaving [" + _docKey + "]."); + bool sent = false; if (force) { + Log::trace("Sending forced save command for [" + _docKey + "]."); sent = sendUnoSave(); } else if (_isModified) @@ -251,17 +255,17 @@ bool DocumentBroker::autoSave(const bool force, const size_t waitTimeoutMs) if (inactivityTimeMs >= IdleSaveDurationMs || timeSinceLastSaveMs >= AutoSaveDurationMs) { + Log::trace("Sending timed save command for [" + _docKey + "]."); sent = sendUnoSave(); } } if (sent && waitTimeoutMs > 0) { - // Remeber the last save time, since this is the predicate. - const auto lastSaveTime = _lastSaveTime; - + Log::trace("Waiting for save event for [" + _docKey + "]."); if (_saveCV.wait_for(lock, std::chrono::milliseconds(waitTimeoutMs)) == std::cv_status::no_timeout) { + Log::debug("Successfully persisted document [" + _docKey + "]."); return true; } diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp index 25a3801..48b8d05 100644 --- a/loolwsd/LOOLWSD.cpp +++ b/loolwsd/LOOLWSD.cpp @@ -1641,10 +1641,7 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/) std::unique_lock<std::mutex> docBrokersLock(docBrokersMutex); for (auto& brokerIt : docBrokers) { - if (brokerIt.second->isModified()) - { - brokerIt.second->autoSave(false, 0); - } + brokerIt.second->autoSave(false, 0); } } catch (const std::exception& exc) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits