[banshee] [Banshee.IO] Set GIO backend as the default



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]