Index: trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc	(revision 8678)
+++ trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc	(revision 8680)
@@ -602,7 +602,9 @@
 // is assumed to be (0,1)
 //
-void MStatusDisplay::SetProgressBarPosition(Float_t p)
+void MStatusDisplay::SetProgressBarPosition(Float_t p, Bool_t upd)
 {
     fBar->SetPosition(p);
+    if (upd)
+        gClient->ProcessEventsFor(fBar);
 }
 
@@ -685,4 +687,8 @@
     // p==NULL means: Take gClient->GetRoot() if not in batch mode
     // see TGWindow::TGWindow()
+
+    // Make sure that the display is removed via RecursiveRemove
+    // from whereever possible.
+    SetBit(kMustCleanup);
 
     //
Index: trunk/MagicSoft/Mars/mbase/MStatusDisplay.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusDisplay.h	(revision 8678)
+++ trunk/MagicSoft/Mars/mbase/MStatusDisplay.h	(revision 8680)
@@ -168,5 +168,5 @@
      void SetUpdateTime(Long_t t);
 
-     void SetProgressBarPosition(Float_t p);
+     void SetProgressBarPosition(Float_t p, Bool_t upd=kFALSE);
      TGProgressBar *GetBar() const { return (TGProgressBar*)fBar; }
 
