progress: make progress bar a singleton to avoid double-progress ui bugs
authorAugie Fackler <durin42@gmail.com>
Thu, 23 Jun 2011 14:55:09 -0500
changeset 14837 ec4ba216ddef
parent 14836 925cab23d7d5
child 14838 5d261fd00446
progress: make progress bar a singleton to avoid double-progress ui bugs This helps issue2698 a little, but isn't a complete fix, since generators still can produce some weird progress bar switching.
hgext/progress.py
--- a/hgext/progress.py	Thu Jun 02 14:33:01 2011 -0500
+++ b/hgext/progress.py	Thu Jun 23 14:55:09 2011 -0500
@@ -251,7 +251,10 @@
                 self.lastprint = now
                 self.show(now, topic, *self.topicstates[topic])
 
+_singleton = None
+
 def uisetup(ui):
+    global _singleton
     class progressui(ui.__class__):
         _progbar = None
 
@@ -278,7 +281,9 @@
         # we instantiate one globally shared progress bar to avoid
         # competing progress bars when multiple UI objects get created
         if not progressui._progbar:
-            progressui._progbar = progbar(ui)
+            if _singleton is None:
+                _singleton = progbar(ui)
+            progressui._progbar = _singleton
 
 def reposetup(ui, repo):
     uisetup(repo.ui)