[Pkg-owncloud-commits] [owncloud-client] 46/121: Performance: Don't redundantly add the same exclude files #4967 (#4988)

Sandro Knauß hefee-guest at moszumanska.debian.org
Thu Jul 28 15:31:56 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 43a2aec92be2a4a966112938ec39f51ffe1a7b23
Author: ckamm <mail at ckamm.de>
Date:   Mon Jun 20 15:14:13 2016 +0200

    Performance: Don't redundantly add the same exclude files #4967 (#4988)
    
    Excludes: Don't redundantly add the same exclude files #4967, Never accept duplicate exclude patterns #4967
---
 csync/src/csync_exclude.c     | 12 ++++++++++++
 src/gui/folder.cpp            |  4 ++++
 src/libsync/excludedfiles.cpp |  2 +-
 src/libsync/excludedfiles.h   |  5 +++--
 4 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/csync/src/csync_exclude.c b/csync/src/csync_exclude.c
index fe999ed..bad25f8 100644
--- a/csync/src/csync_exclude.c
+++ b/csync/src/csync_exclude.c
@@ -44,6 +44,18 @@
 static
 #endif
 int _csync_exclude_add(c_strlist_t **inList, const char *string) {
+    size_t i = 0;
+
+    // We never want duplicates, so check whether the string is already
+    // in the list first.
+    if (*inList) {
+        for (i = 0; i < (*inList)->count; ++i) {
+            char *pattern = (*inList)->vector[i];
+            if (c_streq(pattern, string)) {
+                return 0;
+            }
+        }
+    }
     return c_strlist_add_grow(inList, string);
 }
 
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 0a88c68..66bc258 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -695,6 +695,10 @@ void Folder::wipe()
 
 bool Folder::setIgnoredFiles()
 {
+    // Note: Doing this on each sync run and on Folder construction is
+    // unnecessary, because _engine->excludedFiles() persists between
+    // sync runs. This is not a big problem because ExcludedFiles maintains
+    // a QSet of files to load.
     ConfigFile cfg;
     QString systemList = cfg.excludeFile(ConfigFile::SystemScope);
     if( QFile::exists(systemList) ) {
diff --git a/src/libsync/excludedfiles.cpp b/src/libsync/excludedfiles.cpp
index d4eed06..b2839d0 100644
--- a/src/libsync/excludedfiles.cpp
+++ b/src/libsync/excludedfiles.cpp
@@ -42,7 +42,7 @@ ExcludedFiles& ExcludedFiles::instance()
 
 void ExcludedFiles::addExcludeFilePath(const QString& path)
 {
-    _excludeFiles.append(path);
+    _excludeFiles.insert(path);
 }
 
 bool ExcludedFiles::reloadExcludes()
diff --git a/src/libsync/excludedfiles.h b/src/libsync/excludedfiles.h
index 5e47f7c..75895a3 100644
--- a/src/libsync/excludedfiles.h
+++ b/src/libsync/excludedfiles.h
@@ -16,7 +16,8 @@
 #include "owncloudlib.h"
 
 #include <QObject>
-#include <QStringList>
+#include <QSet>
+#include <QString>
 
 extern "C" {
 #include "std/c_string.h"
@@ -66,7 +67,7 @@ private:
     // This is a pointer to the csync exclude list, its is owned by this class
     // but the pointer can be in a csync_context so that it can itself also query the list.
     c_strlist_t** _excludesPtr;
-    QStringList _excludeFiles;
+    QSet<QString> _excludeFiles;
 };
 
 } // namespace OCC

-- 
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