X-Git-Url: https://code.delx.au/offlineimap/blobdiff_plain/a8a2a87e1e75136bc1a657048bb83968977ca8ab..HEAD:/offlineimap/accounts.py diff --git a/offlineimap/accounts.py b/offlineimap/accounts.py index 7a20c37..a493396 100644 --- a/offlineimap/accounts.py +++ b/offlineimap/accounts.py @@ -37,9 +37,9 @@ class SigListener(Queue): # folders haven't yet been added, or this account is once-only; drop signal return elif self.folders: - for folder in self.folders: + for foldernr in range(len(self.folders)): # requeue folder - self.folders[folder] = True + self.folders[foldernr][1] = True self.quick = False return # else folders have already been cleared, put signal... @@ -49,22 +49,22 @@ class SigListener(Queue): def addfolders(self, remotefolders, autorefreshes, quick): self.folderlock.acquire() try: - self.folders = {} + self.folders = [] self.quick = quick self.autorefreshes = autorefreshes for folder in remotefolders: # new folders are queued - self.folders[folder] = True + self.folders.append([folder, True]) finally: self.folderlock.release() def clearfolders(self): self.folderlock.acquire() try: - for folder in self.folders: - if self.folders[folder]: + for folder, queued in self.folders: + if queued: # some folders still in queue return False - self.folders.clear() + self.folders[:] = [] return True finally: self.folderlock.release() @@ -74,10 +74,10 @@ class SigListener(Queue): dirty = True while dirty: dirty = False - for folder in self.folders: - if self.folders[folder]: + for foldernr, (folder, queued) in enumerate(self.folders): + if queued: # mark folder as no longer queued - self.folders[folder] = False + self.folders[foldernr][1] = False dirty = True quick = self.quick self.folderlock.release() @@ -109,6 +109,7 @@ class Account(CustomConfig.ConfigHelperMixin): self.localeval = config.getlocaleval() self.ui = UIBase.getglobalui() self.refreshperiod = self.getconffloat('autorefresh', 0.0) + self.quickrefreshcount = self.getconfint('quick', 0) self.quicknum = 0 if self.refreshperiod == 0.0: self.refreshperiod = None @@ -144,8 +145,11 @@ class Account(CustomConfig.ConfigHelperMixin): for item in kaobjs: item.startkeepalive() - - refreshperiod = int(self.refreshperiod * 60) + + sleeptime = int(self.refreshperiod * 60) + if (self.quickrefreshcount > 0): + sleeptime = int(sleeptime / self.quickrefreshcount) + # try: # sleepresult = siglistener.get_nowait() # # retrieved signal before sleep started @@ -153,8 +157,8 @@ class Account(CustomConfig.ConfigHelperMixin): # # catching signal 1 here means folders were cleared before signal was posted # pass # except Empty: -# sleepresult = self.ui.sleep(refreshperiod, siglistener) - sleepresult = self.ui.sleep(refreshperiod, siglistener) +# sleepresult = self.ui.sleep(sleeptime, siglistener) + sleepresult = self.ui.sleep(sleeptime, siglistener) if sleepresult == 1: self.quicknum = 0