? banshee_ipod_cover_art_v1.diff
? banshee_ipod_cover_art_v2.diff
? banshee_source_flags_v1.diff
? banshee_unclog_main_loop_v1.diff
? dap_changes.diff
? foobar
? data/images/ass
? data/images/foo
? src/Banshee.Dap/Ipod/IpodDap.cs.new
? src/Banshee.Dap/Ipod/foo
? src/Banshee.MediaEngine/Vlc/Makefile
? src/Banshee.MediaEngine/Vlc/Makefile.in
? src/Banshee.MediaEngine/Vlc/vlc-player.dll.config
? src/Banshee.Plugins/FileSystemMonitor/FileSystemMonitor.dll
? src/Banshee.Plugins/FileSystemMonitor/FileSystemMonitor.dll.config
? src/Banshee.Plugins/FileSystemMonitor/FileSystemMonitor.dll.mdb
? src/Banshee.Plugins/FileSystemMonitor/Makefile
? src/Banshee.Plugins/FileSystemMonitor/Makefile.in
? src/Banshee.Plugins/FileSystemMonitor/filesystemmonitor.schemas
Index: src/Banshee.Base/Dap/Dap.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/Banshee.Base/Dap/Dap.cs,v
retrieving revision 1.18
diff -u -r1.18 Dap.cs
--- src/Banshee.Base/Dap/Dap.cs	2 Jul 2006 19:12:37 -0000	1.18
+++ src/Banshee.Base/Dap/Dap.cs	8 Jul 2006 00:29:20 -0000
@@ -348,9 +348,7 @@
         
         protected void UpdateSaveProgress(string header, string message, double progress)
         {
-            save_report_event.Header = header;
-            save_report_event.Message = message;
-            save_report_event.Progress = progress;
+            save_report_event.Update (null, message, header, progress);
         }
         
         protected void FinishSave()
Index: src/Banshee.Dap/Ipod/IpodDap.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/Banshee.Dap/Ipod/IpodDap.cs,v
retrieving revision 1.15
diff -u -r1.15 IpodDap.cs
--- src/Banshee.Dap/Ipod/IpodDap.cs	6 Jul 2006 19:32:35 -0000	1.15
+++ src/Banshee.Dap/Ipod/IpodDap.cs	8 Jul 2006 00:29:20 -0000
@@ -185,7 +185,7 @@
                 string message = args.CurrentTrack == null 
                     ? Catalog.GetString("Flushing to Disk (may take time)")
                     : args.CurrentTrack.Artist + " - " + args.CurrentTrack.Title;
-                    
+
                 UpdateSaveProgress(Catalog.GetString("Synchronizing iPod"), message, progress);
             };
 
Index: src/Banshee.Widgets/ActiveUserEvent.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/Banshee.Widgets/ActiveUserEvent.cs,v
retrieving revision 1.8
diff -u -r1.8 ActiveUserEvent.cs
--- src/Banshee.Widgets/ActiveUserEvent.cs	12 Jun 2006 21:28:13 -0000	1.8
+++ src/Banshee.Widgets/ActiveUserEvent.cs	8 Jul 2006 00:29:20 -0000
@@ -193,7 +193,45 @@
                 string tip = name + ": " + message;
                 tips.SetTip(message_label, tip, tip);
                 tips.SetTip(icon, tip, tip);
+
+                progress_bar.Fraction = progress;
+                progress_bar.Text = String.Format("{0}%", (int)(progress * 100.0));
             });
+        }
+
+        public void Update (string name, string message, string header, double progress) {
+            bool updateNeeded = false;
+            
+            if (name != null && name != this.name) {
+                this.name = name;
+                updateNeeded = true;
+            }
+
+            if (message != null && message != this.message) {
+                this.message = message;
+                updateNeeded = true;
+            }
+
+            if (header != null && header != this.header) {
+                this.header = header;
+                updateNeeded = true;
+            }
+
+            if (progress != this.progress && (progress < 0.0 || Math.Abs (progress - this.progress) >= 0.01)) {
+                
+                if(progress <= 0.0 && !disposed && timeout_id == 0) {
+                    timeout_id = GLib.Timeout.Add(100, OnTimeout);
+                } else if(timeout_id > 0) {
+                    GLib.Source.Remove(timeout_id);
+                    timeout_id = 0;
+                }
+                
+                this.progress = progress;
+                updateNeeded = true;
+            }
+
+            if (updateNeeded)
+                UpdateLabel ();
         }
 
         public string Name {
