[banshee] [Banshee.IO] Set GIO backend as the default
- From: Gabriel Burt <gburt src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [banshee] [Banshee.IO] Set GIO backend as the default
- Date: Sat, 16 Jan 2010 00:25:20 +0000 (UTC)
commit 491a544cbef95476e68ade8fd4f079c0e5b88622
Author: Gabriel Burt <gabriel burt gmail com>
Date: Fri Jan 15 16:20:14 2010 -0800
[Banshee.IO] Set GIO backend as the default
Specify the preference order of the backends to gconf pref, GIO, Unix,
and then System.
src/Backends/Banshee.Gio/Banshee.Gio.addin.xml | 2 +-
src/Core/Banshee.Core/Banshee.IO/Provider.cs | 31 ++++++++++++++++++++----
2 files changed, 27 insertions(+), 6 deletions(-)
---
diff --git a/src/Backends/Banshee.Gio/Banshee.Gio.addin.xml b/src/Backends/Banshee.Gio/Banshee.Gio.addin.xml
index 56fd7a8..8faf806 100644
--- a/src/Backends/Banshee.Gio/Banshee.Gio.addin.xml
+++ b/src/Backends/Banshee.Gio/Banshee.Gio.addin.xml
@@ -6,7 +6,7 @@
copyright="© 2009 Novell Inc. Licensed under the MIT X11 license."
category="required:Backends"
description="GIO IO backend"
- defaultEnabled="false">
+ defaultEnabled="true">
<Dependencies>
<Addin id="Banshee.Core" version="1.0"/>
diff --git a/src/Core/Banshee.Core/Banshee.IO/Provider.cs b/src/Core/Banshee.Core/Banshee.IO/Provider.cs
index b1ba734..6e79e00 100644
--- a/src/Core/Banshee.Core/Banshee.IO/Provider.cs
+++ b/src/Core/Banshee.Core/Banshee.IO/Provider.cs
@@ -48,11 +48,27 @@ namespace Banshee.IO
return;
}
+ TypeExtensionNode best_node = null;
+ int best_index = Int32.MaxValue;
+
foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes ("/Banshee/Platform/IOProvider")) {
- try {
- if (node.HasId && node.Id == ProviderSchema.Get ()) {
- provider = (IProvider)node.CreateInstance (typeof (IProvider));
+ if (node.HasId) {
+ if (node.Id == ProviderSchema.Get ()) {
+ best_node = node;
+ best_index = -1;
+ } else {
+ int idx = Array.IndexOf (builtin_backend_preference, node.Id);
+ if (idx != -1 && idx < best_index) {
+ best_index = idx;
+ best_node = node;
+ }
}
+ }
+ }
+
+ if (best_node != null) {
+ try {
+ provider = (IProvider)best_node.CreateInstance (typeof (IProvider));
} catch (Exception e) {
Log.Warning ("IO provider extension failed to load", e.Message);
}
@@ -91,14 +107,19 @@ namespace Banshee.IO
return (IDemuxVfs)Activator.CreateInstance (provider.DemuxVfsProvider, new object [] { file });
}
+ private static string [] builtin_backend_preference = new string [] {
+ "Banshee.IO.Gio.Provider",
+ "Banshee.IO.Unix.Provider",
+ "Banshee.IO.SystemIO.Provider"
+ };
+
internal static readonly SchemaEntry<string> ProviderSchema = new SchemaEntry<string> (
"core", "io_provider",
- "Banshee.IO.Unix.Provider",
+ "Banshee.IO.Gio.Provider",
"Set the IO provider backend in Banshee",
"Can be either \"Banshee.IO.SystemIO.Provider\" (.NET System.IO), " +
"\"Banshee.IO.Gio.Provider\" (GIO), or " +
"\"Banshee.IO.Unix.Provider\" (Native Unix/POSIX), or " +
- "\"Banshee.IO.GnomeVfs.Provider\" (GNOME VFS); " +
"takes effect on Banshee start (restart necessary)"
);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]