summaryrefslogtreecommitdiff
path: root/indra/viewer_components/manager/InstallerUserMessage.py
diff options
context:
space:
mode:
authorGlenn Glazer <coyot@lindenlab.com>2016-08-15 14:48:09 -0700
committerGlenn Glazer <coyot@lindenlab.com>2016-08-15 14:48:09 -0700
commit7ed9c85a1a28e494adbd2cef85b186e45dba2dc2 (patch)
tree74efe7b74f31234ac1e82c82a7c170f2471e30bd /indra/viewer_components/manager/InstallerUserMessage.py
parent2afcff5b013c778f55af77f27932e10792986a05 (diff)
SL-323: fixes to Tkinter race condition, post --channel and --settings testing, contains debugging statements to be removed after all testing complete
Diffstat (limited to 'indra/viewer_components/manager/InstallerUserMessage.py')
-rw-r--r--indra/viewer_components/manager/InstallerUserMessage.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/indra/viewer_components/manager/InstallerUserMessage.py b/indra/viewer_components/manager/InstallerUserMessage.py
index f66af81d06..4f81aa9cd1 100644
--- a/indra/viewer_components/manager/InstallerUserMessage.py
+++ b/indra/viewer_components/manager/InstallerUserMessage.py
@@ -78,11 +78,17 @@ class InstallerUserMessage(tk.Tk):
#defines what to do when window is closed
self.protocol("WM_DELETE_WINDOW", self._delete_window)
+
+ #callback id
+ self.id = -1
def _delete_window(self):
#capture and discard all destroy events before the choice is set
if not ((self.choice == None) or (self.choice == "")):
try:
+ #initialized value. If we have an outstanding callback, kill it before killing ourselves
+ if self.id != -1:
+ self.after_cancel(self.id)
self.destroy()
except:
#tk may try to destroy the same object twice
@@ -217,8 +223,11 @@ class InstallerUserMessage(tk.Tk):
def check_scheduler(self):
if self.value < self.progress["maximum"]:
- self.check_queue()
- self.after(100, self.check_scheduler)
+ self.check_queue()
+ self.id = self.after(100, self.check_scheduler)
+ else:
+ #prevent a race condition between polling and the widget destruction
+ self.after_cancel(self.id)
def check_queue(self):
while self.queue.qsize():