banshee r3851 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.Database src/Core/Banshee.Services/Banshee.ServiceStack
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3851 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.Database src/Core/Banshee.Services/Banshee.ServiceStack
- Date: Wed, 30 Apr 2008 18:48:04 +0100 (BST)
Author: gburt
Date: Wed Apr 30 17:48:03 2008
New Revision: 3851
URL: http://svn.gnome.org/viewvc/banshee?rev=3851&view=rev
Log:
2008-04-30 Gabriel Burt <gabriel burt gmail com>
* src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Add a
ClientStarted event, which is raised for clients that are already started
and for new ones.
* src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs: Add a
IsStarted property, and change the Started event to use a Action<> handler.
* src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs:
* src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Use
new Application.ClientStarted event, and handle in method, not anonymous
delegate.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs Wed Apr 30 17:48:03 2008
@@ -328,7 +328,7 @@
Execute ("ALTER TABLE CoreSmartPlaylists ADD COLUMN CachedCount INTEGER");
// This once, we need to reload all the sources at start up. Then never again, woo!
- Application.ActiveClient.Started += ReloadAllSources;
+ Application.ClientStarted += ReloadAllSources;
return true;
}
@@ -688,15 +688,12 @@
ServiceManager.SourceManager.MusicLibrary.NotifyTracksChanged ();
}
- private static bool refreshed = false;
- private void ReloadAllSources (object o, EventArgs args)
+ private void ReloadAllSources (Client client)
{
- if (!refreshed) {
- refreshed = true;
- foreach (Source source in ServiceManager.SourceManager.Sources) {
- if (source is ITrackModelSource) {
- ((ITrackModelSource)source).Reload ();
- }
+ Application.ClientStarted -= ReloadAllSources;
+ foreach (Source source in ServiceManager.SourceManager.Sources) {
+ if (source is ITrackModelSource) {
+ ((ITrackModelSource)source).Reload ();
}
}
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs Wed Apr 30 17:48:03 2008
@@ -53,6 +53,21 @@
public static event ShutdownRequestHandler ShutdownRequested;
public static event Action<Client> ClientAdded;
+ private static event Action<Client> client_started;
+ public static event Action<Client> ClientStarted {
+ add {
+ lock (running_clients) {
+ foreach (Client client in running_clients) {
+ if (client.IsStarted) {
+ OnClientStarted (client);
+ }
+ }
+ }
+ client_started += value;
+ }
+ remove { client_started -= value; }
+ }
+
private static Stack<Client> running_clients = new Stack<Client> ();
private static bool shutting_down;
@@ -99,6 +114,7 @@
{
lock (running_clients) {
running_clients.Push (client);
+ client.Started += OnClientStarted;
}
Action<Client> handler = ClientAdded;
@@ -117,6 +133,15 @@
public static Client ActiveClient {
get { lock (running_clients) { return running_clients.Peek (); } }
}
+
+ private static void OnClientStarted (Client client)
+ {
+ client.Started -= OnClientStarted;
+ Action<Client> handler = client_started;
+ if (handler != null) {
+ handler (client);
+ }
+ }
private static bool OnShutdownRequested ()
{
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs Wed Apr 30 17:48:03 2008
@@ -32,7 +32,7 @@
{
public abstract class Client : IDisposable
{
- public event EventHandler Started;
+ public event Action<Client> Started;
public Client ()
{
@@ -46,12 +46,18 @@
get;
}
+ private bool is_started;
+ public bool IsStarted {
+ get { return is_started; }
+ }
+
protected void OnStarted ()
{
+ is_started = true;
Hyena.Log.InformationFormat ("{0} Client Started", ClientId);
- EventHandler handler = Started;
+ Action<Client> handler = Started;
if (handler != null) {
- handler (this, EventArgs.Empty);
+ handler (this);
}
}
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs Wed Apr 30 17:48:03 2008
@@ -90,11 +90,12 @@
Banshee.Configuration.ConfigurationClient.Initialize ();
extension_nodes = AddinManager.GetExtensionNodes ("/Banshee/ServiceManager/Service");
- Application.ClientAdded += delegate (Client client) {
- client.Started += delegate {
- DelayedInitialize ();
- };
- };
+ Application.ClientStarted += OnClientStarted;
+ }
+
+ private static void OnClientStarted (Client client)
+ {
+ DelayedInitialize ();
}
public static void Run()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]