Blob Blame History Raw
diff -Nur audacious-2.2-orig/src/audacious/playback.c audacious-2.2-fedora/src/audacious/playback.c
--- audacious-2.2-orig/src/audacious/playback.c	2009-11-22 23:43:47.000000000 +0100
+++ audacious-2.2-fedora/src/audacious/playback.c	2009-12-31 14:36:28.000000000 +0100
@@ -448,7 +448,7 @@
         return FALSE;
     }
 
-    if (decoder == NULL)
+    if (decoder == NULL || !decoder->enabled)
     {
         ProbeResult * pr = input_check_file (filename);
 
diff -Nur audacious-2.2-orig/src/audacious/playlist-utils.c audacious-2.2-fedora/src/audacious/playlist-utils.c
--- audacious-2.2-orig/src/audacious/playlist-utils.c	2009-11-22 23:43:47.000000000 +0100
+++ audacious-2.2-fedora/src/audacious/playlist-utils.c	2009-12-31 14:35:14.000000000 +0100
@@ -288,7 +288,7 @@
     InputPlugin * decoder = NULL;
     gchar * temp = g_strdup (filename);
     gchar * temp2;
-    GList * * index;
+    GList **list_hdr, *node;
 
     decoder = uri_get_plugin (temp);
 
@@ -308,11 +308,17 @@
     temp2 = g_ascii_strdown (temp2 + 1, -1);
     g_free (temp);
     temp = temp2;
+    list_hdr = g_hash_table_lookup (ext_hash, temp);
 
-    index = g_hash_table_lookup (ext_hash, temp);
-
-    if (index != NULL)
-        decoder = (* index)->data;
+    if (list_hdr != NULL) {
+        for (node = *list_hdr; node != NULL; node = g_list_next(node)) {
+            decoder = INPUT_PLUGIN(node->data);
+            if (decoder->enabled) {
+                break;
+            }
+            decoder = NULL;
+        }
+    }
 
 DONE:
      g_free (temp);