Index: src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenControls.cs
===================================================================
--- src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenControls.cs	(revision 4449)
+++ src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenControls.cs	(working copy)
@@ -73,6 +73,7 @@
         public override void Destroy ()
         {
             slider.Disconnect ();
+            volume_button.Disconnect ();
             base.Destroy ();
         }
         
Index: src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs
===================================================================
--- src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs	(revision 4449)
+++ src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs	(working copy)
@@ -140,6 +140,7 @@
         protected override void OnUnrealized ()
         {
             base.OnUnrealized ();
+            DestroyControls ();
             Screen.SizeChanged -= OnScreenSizeChanged;
         }
         
@@ -165,7 +166,6 @@
         protected override void OnHidden ()
         {
             base.OnHidden ();
-            DestroyControls ();
             parent.RemoveNotification ("is-active", ParentActiveNotification);
         }
         
Index: src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs
===================================================================
--- src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs	(revision 4449)
+++ src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs	(working copy)
@@ -48,6 +48,12 @@
             Classic = classic;
         }
         
+        public void Disconnect ()
+        {
+            ServiceManager.PlayerEngine.DisconnectEvent (OnPlayerEvent);
+            base.Dispose ();
+        }
+        
         private void OnPlayerEvent (PlayerEventArgs args)
         {
             emit_lock = true;
