diff --git a/src/mirall/folder.cpp b/src/mirall/folder.cpp index 7e7ebdfd84..aa2a07bdc5 100644 --- a/src/mirall/folder.cpp +++ b/src/mirall/folder.cpp @@ -604,6 +604,8 @@ void Folder::startSync(const QStringList &pathList) SLOT(slotAboutToRemoveAllFiles(SyncFileItem::Direction,bool*))); connect(_engine.data(), SIGNAL(transmissionProgress(Progress::Info)), this, SLOT(slotTransmissionProgress(Progress::Info))); + setDirtyNetworkLimits(); + QMetaObject::invokeMethod(_engine.data(), "startSync", Qt::QueuedConnection); // disable events until syncing is done @@ -615,7 +617,21 @@ void Folder::startSync(const QStringList &pathList) void Folder::setDirtyNetworkLimits() { if (_engine) { - _engine->setNetworkLimits(); + + MirallConfigFile cfg; + int downloadLimit = 0; + if (cfg.useDownloadLimit()) { + downloadLimit = cfg.downloadLimit() * 1000; + } + int uploadLimit = -75; // 75% + int useUpLimit = cfg.useUploadLimit(); + if ( useUpLimit >= 1) { + uploadLimit = cfg.uploadLimit() * 1000; + } else if (useUpLimit == 0) { + uploadLimit = 0; + } + + _engine->setNetworkLimits(uploadLimit, downloadLimit); } } diff --git a/src/mirall/syncengine.cpp b/src/mirall/syncengine.cpp index d3b55fa590..b505a7b76f 100644 --- a/src/mirall/syncengine.cpp +++ b/src/mirall/syncengine.cpp @@ -15,7 +15,6 @@ #include "mirall/syncengine.h" #include "mirall/account.h" -#include "mirall/mirallconfigfile.h" #include "mirall/theme.h" #include "mirall/logger.h" #include "owncloudpropagator.h" @@ -55,6 +54,7 @@ void csyncLogCatcher(int /*verbosity*/, bool SyncEngine::_syncRunning = false; SyncEngine::SyncEngine(CSYNC *ctx, const QString& localPath, const QString& remoteURL, const QString& remotePath, Mirall::SyncJournalDb* journal) + : _uploadLimit(0), _downloadLimit(0) { _localPath = localPath; _remotePath = remotePath; @@ -586,31 +586,21 @@ void SyncEngine::slotUpdateFinished(int updateResult) connect(_propagator.data(), SIGNAL(adjustTotalTransmissionSize(qint64)), this, SLOT(slotAdjustTotalTransmissionSize(qint64))); connect(_propagator.data(), SIGNAL(finished()), this, SLOT(slotFinished()), Qt::QueuedConnection); - setNetworkLimits(); + // apply the network limits to the propagator + setNetworkLimits(_uploadLimit, _downloadLimit); _propagator->start(_syncedItems); } -void SyncEngine::setNetworkLimits() +void SyncEngine::setNetworkLimits(int upload, int download) { - MirallConfigFile cfg; + _uploadLimit = upload; + _downloadLimit = download; if( !_propagator ) return; - int downloadLimit = 0; - if (cfg.useDownloadLimit()) { - downloadLimit = cfg.downloadLimit() * 1000; - } - _propagator->_downloadLimit = downloadLimit; - - int uploadLimit = -75; // 75% - int useUpLimit = cfg.useUploadLimit(); - if ( useUpLimit >= 1) { - uploadLimit = cfg.uploadLimit() * 1000; - } else if (useUpLimit == 0) { - uploadLimit = 0; - } - _propagator->_uploadLimit = uploadLimit; + _propagator->_uploadLimit = upload; + _propagator->_downloadLimit = download; int propDownloadLimit = _propagator->_downloadLimit #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) diff --git a/src/mirall/syncengine.h b/src/mirall/syncengine.h index 5f9c6e1dd3..5d11d348c6 100644 --- a/src/mirall/syncengine.h +++ b/src/mirall/syncengine.h @@ -54,7 +54,7 @@ public: static QString csyncErrorToString( CSYNC_STATUS); Q_INVOKABLE void startSync(); - Q_INVOKABLE void setNetworkLimits(); + void setNetworkLimits(int upload, int download); /* Abort the sync. Called from the main thread */ void abort();