banshee r4636 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.Base src/Dap/Banshee.Dap/Banshee.Dap src/Dap/Banshee.Dap/Banshee.Dap.Gui



Author: gburt
Date: Tue Sep 30 19:58:20 2008
New Revision: 4636
URL: http://svn.gnome.org/viewvc/banshee?rev=4636&view=rev

Log:
2008-09-30  Gabriel Burt  <gabriel burt gmail com>

	* src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs: Ensure that the Sync happens
	not on the main thread.  If you changed the Automatic Sync option, it
	woudl trigger a sync immediately, but that sync was happening on the GUI
	thread.

	* src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapActions.cs: DapSync takes care of
	threading now, remove SpawnFromMain call here.

	* src/Core/Banshee.Services/Banshee.Base/ThreadAssist.cs: Add helper
	method AssertNotInMainThread useful for debugging.



Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/src/Core/Banshee.Services/Banshee.Base/ThreadAssist.cs
   trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapActions.cs
   trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Base/ThreadAssist.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Base/ThreadAssist.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Base/ThreadAssist.cs	Tue Sep 30 19:58:20 2008
@@ -49,6 +49,13 @@
                 return main_thread.Equals (Thread.CurrentThread); 
             }
         }
+
+        public static void AssertNotInMainThread ()
+        {
+            if (ApplicationContext.Debugging && Banshee.Base.ThreadAssist.InMainThread) {
+                Hyena.Log.Warning ("In GUI thread, will probably block it", System.Environment.StackTrace);
+            }
+        }
         
         public static void AssertInMainThread ()
         {

Modified: trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapActions.cs
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapActions.cs	(original)
+++ trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapActions.cs	Tue Sep 30 19:58:20 2008
@@ -92,9 +92,7 @@
         {
             DapSource dap = Dap;
             if (dap != null) {
-                Banshee.Base.ThreadAssist.SpawnFromMain (delegate {
-                    dap.Sync.Sync ();
-                });
+                dap.Sync.Sync ();
             }
         }
     }

Modified: trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs	(original)
+++ trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs	Tue Sep 30 19:58:20 2008
@@ -273,7 +273,13 @@
 
         public void Sync ()
         {
-            sync_limiter.Execute ();
+            if (Banshee.Base.ThreadAssist.InMainThread) {
+                Banshee.Base.ThreadAssist.SpawnFromMain (delegate {
+                    sync_limiter.Execute ();
+                });
+            } else {
+                sync_limiter.Execute ();
+            }
         }
 
         private void RateLimitedSync ()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]