/head: changeset 100
Updated with some more bug fixes
This commit is contained in:
parent
3e6b420c58
commit
387ab29841
@ -46,7 +46,7 @@ def threadsreset(threadlist):
|
|||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
exitcondition = Condition(Lock())
|
exitcondition = Condition(Lock())
|
||||||
exitthread = None
|
exitthreads = []
|
||||||
inited = 0
|
inited = 0
|
||||||
|
|
||||||
def initexitnotify():
|
def initexitnotify():
|
||||||
@ -55,7 +55,7 @@ def initexitnotify():
|
|||||||
This SHOULD be called before the main thread starts any other
|
This SHOULD be called before the main thread starts any other
|
||||||
ExitNotifyThreads, or else it may miss the ability to catch the exit
|
ExitNotifyThreads, or else it may miss the ability to catch the exit
|
||||||
status from them!"""
|
status from them!"""
|
||||||
exitcondition.acquire()
|
pass
|
||||||
|
|
||||||
def exitnotifymonitorloop(callback):
|
def exitnotifymonitorloop(callback):
|
||||||
"""Enter an infinite "monitoring" loop. The argument, callback,
|
"""Enter an infinite "monitoring" loop. The argument, callback,
|
||||||
@ -67,19 +67,21 @@ def exitnotifymonitorloop(callback):
|
|||||||
an ExitNotifyThread, or else an infinite loop may result. Furthermore,
|
an ExitNotifyThread, or else an infinite loop may result. Furthermore,
|
||||||
the monitor will hold the lock all the while the other thread is waiting.
|
the monitor will hold the lock all the while the other thread is waiting.
|
||||||
"""
|
"""
|
||||||
global exitcondition, exitthread
|
global exitcondition, exitthreads
|
||||||
while 1: # Loop forever.
|
while 1: # Loop forever.
|
||||||
while exitthread == None:
|
exitcondition.acquire()
|
||||||
|
while not len(exitthreads):
|
||||||
exitcondition.wait(1)
|
exitcondition.wait(1)
|
||||||
callback(exitthread)
|
|
||||||
exitthread = None
|
|
||||||
|
|
||||||
|
while len(exitthreads):
|
||||||
|
callback(exitthreads.pop())
|
||||||
|
exitcondition.release()
|
||||||
|
|
||||||
class ExitNotifyThread(Thread):
|
class ExitNotifyThread(Thread):
|
||||||
"""This class is designed to alert a "monitor" to the fact that a thread has
|
"""This class is designed to alert a "monitor" to the fact that a thread has
|
||||||
exited and to provide for the ability for it to find out why."""
|
exited and to provide for the ability for it to find out why."""
|
||||||
def run(self):
|
def run(self):
|
||||||
global exitcondition, exitthread
|
global exitcondition, exitthreads
|
||||||
self.threadid = thread.get_ident()
|
self.threadid = thread.get_ident()
|
||||||
try:
|
try:
|
||||||
Thread.run(self)
|
Thread.run(self)
|
||||||
@ -94,7 +96,7 @@ class ExitNotifyThread(Thread):
|
|||||||
if not hasattr(self, 'exitmessage'):
|
if not hasattr(self, 'exitmessage'):
|
||||||
self.setExitMessage(None)
|
self.setExitMessage(None)
|
||||||
exitcondition.acquire()
|
exitcondition.acquire()
|
||||||
exitthread = self
|
exitthreads.append(self)
|
||||||
exitcondition.notify()
|
exitcondition.notify()
|
||||||
exitcondition.release()
|
exitcondition.release()
|
||||||
|
|
||||||
|
@ -175,6 +175,9 @@ class TkUI(UIBase):
|
|||||||
s.top.destroy()
|
s.top.destroy()
|
||||||
TextOKDialog("Main Program Exception", msg)
|
TextOKDialog("Main Program Exception", msg)
|
||||||
|
|
||||||
|
def deletingmessages(s, uidlist, destlist):
|
||||||
|
ds = s.folderlist(destlist)
|
||||||
|
s._msg("Deleting %d messages in %s" % (len(uidlist), ds))
|
||||||
|
|
||||||
################################################## Copied from TTY
|
################################################## Copied from TTY
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ class UIBase:
|
|||||||
|
|
||||||
Return 0 for normal sleep, or 1 to indicate a request
|
Return 0 for normal sleep, or 1 to indicate a request
|
||||||
to sync immediately."""
|
to sync immediately."""
|
||||||
s._msg("Next refresh in %d seconds" % remainingsec)
|
s._msg("Next refresh in %d seconds" % remainingsecs)
|
||||||
if sleepsecs > 0:
|
if sleepsecs > 0:
|
||||||
time.sleep(sleepsecs)
|
time.sleep(sleepsecs)
|
||||||
return 0
|
return 0
|
||||||
|
Loading…
Reference in New Issue
Block a user