banshee r3444 - in trunk/banshee: . src/Core/Banshee.Core/Resources src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler



Author: gburt
Date: Thu Mar 13 17:11:39 2008
New Revision: 3444
URL: http://svn.gnome.org/viewvc/banshee?rev=3444&view=rev

Log:
2008-03-13  Gabriel Burt  <gabriel burt gmail com>

	* src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs:
	Patch from Alexander Hixon fixing the Audioscrobbler now-playing delay
	issue, properly listens for the account being updated to update
	links/actions.

	* src/Core/Banshee.Core/Resources/contributors.xml: Add Michael Monreal to
	Artists.


Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/src/Core/Banshee.Core/Resources/contributors.xml
   trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs

Modified: trunk/banshee/src/Core/Banshee.Core/Resources/contributors.xml
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Resources/contributors.xml	(original)
+++ trunk/banshee/src/Core/Banshee.Core/Resources/contributors.xml	Thu Mar 13 17:11:39 2008
@@ -51,5 +51,6 @@
   <!-- Artists have their own markup because of the GtkAboutBox design -->
   <artist>Garrett LeSage</artist>
   <artist>Jakub Steiner</artist>
+  <artist>Michael Monreal</artist>
   <artist>Ryan Collier</artist>
 </people>

Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs	(original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs	Thu Mar 13 17:11:39 2008
@@ -65,6 +65,8 @@
         private Account account;
         
         private bool queued; /* if current_track has been queued */
+        private bool now_playing_sent = false; /* self explanitory :) */
+        private int iterate_countdown = 4 * 4; /* number of times to wait for iterate event before sending now playing */
         
         private DateTime song_start_time;
         private TrackInfo last_track;
@@ -97,6 +99,11 @@
                 connection.UpdateNetworkState (args.Connected);
             };
             
+            // Update the Visit action menu item if we update our account info
+            LastfmCore.Account.Updated += delegate (object o, EventArgs args) {
+                actions["AudioscrobblerVisitAction"].Sensitive = LastfmCore.Account.UserName != null && LastfmCore.Account.CryptedPassword != null;
+            };
+            
             ServiceManager.PlayerEngine.EventChanged += OnPlayerEngineEventChanged;
             
             action_service = ServiceManager.Get<InterfaceActionService> ("InterfaceActionService");
@@ -232,14 +239,8 @@
                     song_start_time = DateTime.Now;
                     last_track = ServiceManager.PlayerEngine.CurrentTrack;
                     queued = false;
-
-                    // Queue as now playing
-                    if (last_track != null && last_track.Duration.TotalSeconds > 30 &&
-                        (actions["AudioscrobblerEnableAction"] as ToggleAction).Active) {
-                        
-                        connection.NowPlaying (last_track.ArtistName, last_track.TrackTitle,
-                            last_track.AlbumTitle, last_track.Duration.TotalSeconds, last_track.TrackNumber);
-                    }
+                    now_playing_sent = false;
+                    iterate_countdown = 4 * 4;  /* we get roughly 4 events/sec */
                     
                     break;
                 
@@ -248,11 +249,26 @@
                     break;
                 
                 case PlayerEngineEvent.Iterate:
+                    // Queue as now playing
+                    if (!now_playing_sent && iterate_countdown == 0) {
+                        if (last_track != null && last_track.Duration.TotalSeconds > 30 &&
+                            (actions["AudioscrobblerEnableAction"] as ToggleAction).Active) {
+                            
+                            connection.NowPlaying (last_track.ArtistName, last_track.TrackTitle,
+                                last_track.AlbumTitle, last_track.Duration.TotalSeconds, last_track.TrackNumber);
+                        }
+                        
+                        now_playing_sent = true;
+                    } else if (iterate_countdown > 0) {
+                        iterate_countdown --;
+                    }
+                    
                     st.IncreasePosition ();
                     break;
                 
                 case PlayerEngineEvent.EndOfStream:
                     Queue (ServiceManager.PlayerEngine.CurrentTrack);
+                    iterate_countdown = 4 * 4; 
                     break;
             }
         }



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