[Pkg-owncloud-commits] [owncloud-client] 439/470: Fix the sync status push for parent directories #4682
Sandro Knauß
hefee-guest at moszumanska.debian.org
Thu May 12 16:25:40 UTC 2016
This is an automated email from the git hooks/post-receive script.
hefee-guest pushed a commit to branch master
in repository owncloud-client.
commit a5df44c757b8797fd1c60d2694fab88679df4572
Author: Jocelyn Turcotte <jturcotte at woboq.com>
Date: Thu Apr 28 14:38:46 2016 +0200
Fix the sync status push for parent directories #4682
As before, we rely on metadata-update SyncFileItem entries for parent
directories to notify us that a directory contains files to propagate,
and to know when all children were propagated through its itemCompleted
signal.
Those metadata SyncFileItems however have a None direction and we need
to add a explicit directory check to show them as Sync.
This fix also handles new files as well as existing ones, so no need
to keep a separate logic for new files.
---
src/libsync/syncfilestatustracker.cpp | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/src/libsync/syncfilestatustracker.cpp b/src/libsync/syncfilestatustracker.cpp
index 7867b14..6776db5 100644
--- a/src/libsync/syncfilestatustracker.cpp
+++ b/src/libsync/syncfilestatustracker.cpp
@@ -68,12 +68,6 @@ static inline bool showWarningInSocketApi(const SyncFileItem& item)
|| status == SyncFileItem::Restoration;
}
-static inline bool showSyncInSocketApi( const SyncFileItem& item)
-{
- const auto inst = item._instruction;
- return inst == CSYNC_INSTRUCTION_NEW;
-}
-
SyncFileStatusTracker::SyncFileStatusTracker(SyncEngine *syncEngine)
: _syncEngine(syncEngine)
{
@@ -185,8 +179,6 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
_syncProblems[item->_file] = SyncFileStatus::StatusError;
} else if (showWarningInSocketApi(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusWarning;
- } else if( showSyncInSocketApi(*item)) {
- _syncProblems[item->_file] = SyncFileStatus::StatusSync;
}
emit fileStatusChanged(getSystemDestination(*item), fileStatus(*item));
}
@@ -213,9 +205,6 @@ void SyncFileStatusTracker::slotItemCompleted(const SyncFileItem &item)
invalidateParentPaths(item.destination());
} else if (showWarningInSocketApi(item)) {
_syncProblems[item._file] = SyncFileStatus::StatusWarning;
- } else if (showSyncInSocketApi(item)) {
- // new items that were in state sync can now be erased
- _syncProblems.erase(item._file);
} else {
// There is currently no situation where an error status set during discovery/update is fixed by propagation.
Q_ASSERT(_syncProblems.find(item._file) == _syncProblems.end());
@@ -234,8 +223,10 @@ void SyncFileStatusTracker::slotClearDirtyPaths()
SyncFileStatus SyncFileStatusTracker::fileStatus(const SyncFileItem& item)
{
// Hack to know if the item was taken from the sync engine (Sync), or from the database (UpToDate)
- bool waitingForPropagation = item._direction != SyncFileItem::None && item._status == SyncFileItem::NoStatus;
-
+ // Mark any directory in the SyncEngine's items as syncing, this is currently how we mark parent directories
+ // of currently syncing items since the PropagateDirectory job will mark the directorie's SyncFileItem::_status as Success
+ // once all child jobs have been completed.
+ bool waitingForPropagation = (item._isDirectory || item._direction != SyncFileItem::None) && item._status == SyncFileItem::NoStatus;
SyncFileStatus status(SyncFileStatus::StatusUpToDate);
if (waitingForPropagation) {
status.set(SyncFileStatus::StatusSync);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git
More information about the Pkg-owncloud-commits
mailing list