[banshee/gapless-ng: 192/836] [Banshee.GStreamer] Fix toggling of gapless preferences.



commit aca91d5f96c8beb9ff0bf5e96ccdea872c512a96
Author: Christopher James Halse Rogers <raof ubuntu com>
Date:   Wed Oct 7 16:12:39 2009 +1100

    [Banshee.GStreamer] Fix toggling of gapless preferences.
    
    Enable/Disable the about-to-finish callback in the GaplessEnabled property, and make everything go through the property.
    Previously if we started with gapless_enabled==False then the callback wouldn't be hooked up properly

 .../Banshee.GStreamer/PlayerEngine.cs              |   26 +++++++++++++------
 1 files changed, 18 insertions(+), 8 deletions(-)
---
diff --git a/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs b/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
index d0005d6..fdc5674 100644
--- a/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
+++ b/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
@@ -174,11 +174,7 @@ namespace Banshee.GStreamer
             
             InstallPreferences ();
             ReplayGainEnabled = ReplayGainEnabledSchema.Get ();
-            gapless_enabled = GaplessEnabledSchema.Get ();
-
-            if (gapless_enabled) {
-                bp_set_about_to_finish_callback (handle, about_to_finish_callback);
-            }
+            GaplessEnabled = GaplessEnabledSchema.Get ();
         }
         
         public override void Dispose ()
@@ -269,7 +265,7 @@ namespace Banshee.GStreamer
 
         private void OnNextTrackStarting (IntPtr player)
         {
-            if (gapless_enabled) {
+            if (GaplessEnabled) {
                 OnEventChanged (PlayerEvent.EndOfStream);
                 OnEventChanged (PlayerEvent.StartOfStream);
             }
@@ -552,6 +548,20 @@ namespace Banshee.GStreamer
             set { bp_replaygain_set_enabled (handle, value); }
         }
 
+        private bool GaplessEnabled {
+            get { return gapless_enabled; }
+            set 
+            {
+                gapless_enabled = value;
+                if (value) {
+                    bp_set_about_to_finish_callback (handle, about_to_finish_callback);
+                } else {
+                    bp_set_about_to_finish_callback (handle, null);
+                }
+            }
+        }
+
+
 #region ISupportClutter
 
         private IntPtr clutter_video_sink;
@@ -578,6 +588,7 @@ namespace Banshee.GStreamer
             }
         }
 
+
         private IntPtr OnVideoPipelineSetup (IntPtr player, IntPtr bus)
         {
             try {
@@ -602,7 +613,6 @@ namespace Banshee.GStreamer
         }
 
 #endregion
-        
 #region Preferences
 
         private PreferenceBase replaygain_preference;
@@ -623,7 +633,7 @@ namespace Banshee.GStreamer
             gapless_preference = service["general"]["misc"].Add (new SchemaPreference<bool> (GaplessEnabledSchema,
                 Catalog.GetString ("Enable _gapless playback (EXPERIMENTAL)"),
                 Catalog.GetString ("Eliminate the small playback gap on track change.  Useful for concept albums & classical music."),
-                delegate { gapless_enabled = GaplessEnabledSchema.Get (); }
+                delegate { GaplessEnabled = GaplessEnabledSchema.Get (); }
             ));                            
         }
         



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