X-Git-Url: https://code.delx.au/offlineimap/blobdiff_plain/6949a311647932f2968e181cd78f23c9f7493106..f58ebe390d281e6fe526e70451e2377b77f68183:/offlineimap/syncmaster.py diff --git a/offlineimap/syncmaster.py b/offlineimap/syncmaster.py index 64f2380..22e126f 100644 --- a/offlineimap/syncmaster.py +++ b/offlineimap/syncmaster.py @@ -26,8 +26,8 @@ import re, os, os.path, offlineimap, sys from ConfigParser import ConfigParser from threading import * -def syncaccount(threads, config, accountname): - account = SyncableAccount(config, accountname) +def syncaccount(threads, config, accountname, folderhash, folderhashlock): + account = SyncableAccount(config, accountname, folderhash, folderhashlock) thread = InstanceLimitedThread(instancename = 'ACCOUNTLIMIT', target = account.syncrunner, name = "Account sync %s" % accountname) @@ -36,11 +36,26 @@ def syncaccount(threads, config, accountname): threads.add(thread) def syncitall(accounts, config): + folderhash = {'___sem': Semaphore(0)} + folderhashlock = Lock() currentThread().setExitMessage('SYNC_WITH_TIMER_TERMINATE') ui = UIBase.getglobalui() threads = threadutil.threadlist() mbnames.init(config, accounts) + + accountcout = 0 + for accountname in accounts: + syncaccount(threads, config, accountname, folderhash, folderhashlock) + accountcount += 1 + + # Gather up folder info + for i in range(0, accountcount): + folderhash['___sem'].acquire() + + # Now we can tally. + srcnames = for accountname in accounts: - syncaccount(threads, config, accountname) + + # Wait for the threads to finish. threads.reset()