wsd/DocumentBroker.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-)
New commits: commit f3a90ef77a55a2a2efafeb20bb873779b4a65e1f Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sun Jan 1 12:08:12 2017 -0500 wsd: always notify threads waiting on save And check for save-failed first before finding the session, as otherwise the session is useless. Change-Id: I3eb45e54872547eb36765b2c8409e1aa51aee589 Reviewed-on: https://gerrit.libreoffice.org/32611 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index 6c42fd2..e1242b4 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -367,25 +367,26 @@ bool DocumentBroker::save(const std::string& sessionId, bool success, const std: { std::unique_lock<std::mutex> lock(_saveMutex); + // If save requested, but core didn't save because document was unmodified + // notify the waiting thread, if any. + if (!success && result == "unmodified") + { + LOG_DBG("Save skipped as document was not modified."); + _saveCV.notify_all(); + return true; + } + const auto it = _sessions.find(sessionId); if (it == _sessions.end()) { LOG_ERR("Session with sessionId [" << sessionId << "] not found while saving."); + _saveCV.notify_all(); return false; } const Poco::URI& uriPublic = it->second->getPublicUri(); const auto uri = uriPublic.toString(); - // If save requested, but core didn't save because document was unmodified - // notify the waiting thread, if any. - if (!success && result == "unmodified") - { - LOG_DBG("Save skipped as document was not modified"); - _saveCV.notify_all(); - return true; - } - // If we aren't destroying the last editable session just yet, and the file // timestamp hasn't changed, skip saving. const auto newFileModifiedTime = Poco::File(_storage->getLocalRootPath()).getLastModified(); @@ -394,6 +395,7 @@ bool DocumentBroker::save(const std::string& sessionId, bool success, const std: // Nothing to do. LOG_DBG("Skipping unnecessary saving to URI [" << uri << "]. File last modified " << _lastFileModifiedTime.elapsed() / 1000000 << " seconds ago."); + _saveCV.notify_all(); return true; } @@ -432,7 +434,6 @@ bool DocumentBroker::save(const std::string& sessionId, bool success, const std: LOG_DBG("Timestamp now: " << Poco::DateTimeFormatter::format(Poco::DateTime(_documentLastModifiedTime), Poco::DateTimeFormat::ISO8601_FORMAT)); _saveCV.notify_all(); - return true; } else if (storageSaveResult == StorageBase::SaveResult::DISKFULL) @@ -454,6 +455,7 @@ bool DocumentBroker::save(const std::string& sessionId, bool success, const std: it->second->sendTextFrame("error: cmd=storage kind=savefailed"); } + _saveCV.notify_all(); return false; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits