[banshee] [PlayQueueSource] add disposal-aware Clear ()



commit 6a6a3c1aab1ee85e91d7e08a1528b4620f1684df
Author: Aaron Bockover <abockover novell com>
Date:   Tue Feb 16 20:52:29 2010 -0500

    [PlayQueueSource] add disposal-aware Clear ()
    
    Crash is possible on shutdown when disposing since some services may
    have already been disposed. If we are disposing, we don't need to be
    as thorough when cleaning up - that is, only Clear persistent state.

 .../Banshee.PlayQueue/PlayQueueSource.cs           |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
index 5877a3a..2f3aadb 100644
--- a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
+++ b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
@@ -339,6 +339,11 @@ namespace Banshee.PlayQueue
 
         public void Clear ()
         {
+            Clear (false);
+        }
+
+        private void Clear (bool disposing)
+        {
             ServiceManager.DbConnection.Execute (@"
                 DELETE FROM CorePlaylistEntries
                 WHERE PlaylistID = ?", DbId
@@ -346,6 +351,10 @@ namespace Banshee.PlayQueue
             offset = 0;
             SetCurrentTrack (null);
 
+            if (disposing) {
+                return;
+            }
+
             if (this == ServiceManager.PlaybackController.Source && ServiceManager.PlayerEngine.IsPlaying ()) {
                 ServiceManager.PlayerEngine.Close();
             }
@@ -375,7 +384,7 @@ namespace Banshee.PlayQueue
             }
 
             if (!Populate && ClearOnQuitSchema.Get ()) {
-                Clear ();
+                Clear (true);
             }
         }
 



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