[brasero: 7/8] Allows plugin which return a G_TYPE_NONE (that is those which had a problem loading) to be displayed



commit 834baaaf4d8f2b746b0a8cc35a17b75c663d29f1
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Thu Aug 6 16:11:19 2009 +0200

    Allows plugin which return a G_TYPE_NONE (that is those which had a problem loading) to be displayed in plugin dialog

 libbrasero-burn/burn-plugin-manager.c |   37 +++++++++++++++++++++-----------
 1 files changed, 24 insertions(+), 13 deletions(-)
---
diff --git a/libbrasero-burn/burn-plugin-manager.c b/libbrasero-burn/burn-plugin-manager.c
index 43eda6a..89fdb19 100644
--- a/libbrasero-burn/burn-plugin-manager.c
+++ b/libbrasero-burn/burn-plugin-manager.c
@@ -175,6 +175,11 @@ brasero_plugin_manager_set_plugins_state (BraseroPluginManager *self)
 			BraseroPlugin *plugin;
 
 			plugin = iter->data;
+
+			/* Skip plugins with a problem */
+			if (brasero_plugin_get_gtype (plugin) == G_TYPE_NONE)
+				continue;
+
 			brasero_plugin_set_active (plugin, TRUE);
 		}
 
@@ -187,6 +192,10 @@ brasero_plugin_manager_set_plugins_state (BraseroPluginManager *self)
 
 		plugin = iter->data;
 
+		/* Skip plugins with a problem */
+		if (brasero_plugin_get_gtype (plugin) == G_TYPE_NONE)
+			continue;
+
 		if (brasero_plugin_get_compulsory (plugin)) {
 			brasero_plugin_set_active (plugin, TRUE);
 			BRASERO_BURN_LOG ("Setting plugin %s %s",
@@ -261,6 +270,10 @@ brasero_plugin_manager_plugin_state_changed (BraseroPlugin *plugin,
 		const gchar *name;
 
 		plugin = iter->data;
+
+		if (brasero_plugin_get_gtype (plugin) == G_TYPE_NONE)
+			continue;
+
 		if (!brasero_plugin_get_active (plugin))
 			continue;
 
@@ -397,15 +410,15 @@ brasero_plugin_manager_init (BraseroPluginManager *self)
 			continue;
 		}
 
-		g_signal_connect (plugin,
-				  "activated",
-				  G_CALLBACK (brasero_plugin_manager_plugin_state_changed),
-				  self);
-
 		if (brasero_plugin_get_gtype (plugin) == G_TYPE_NONE) {
 			BRASERO_BURN_LOG ("Load failure, no GType was returned %s",
 					  brasero_plugin_get_error (plugin));
 		}
+		else
+			g_signal_connect (plugin,
+					  "activated",
+					  G_CALLBACK (brasero_plugin_manager_plugin_state_changed),
+					  self);
 
 		priv->plugins = g_slist_prepend (priv->plugins, plugin);
 	}
@@ -478,16 +491,14 @@ brasero_plugin_manager_init (BraseroPluginManager *self)
 		if (brasero_plugin_get_gtype (plugin) == G_TYPE_NONE) {
 			BRASERO_BURN_LOG ("Load failure, no GType was returned %s",
 					  brasero_plugin_get_error (plugin));
-			g_object_unref (plugin);
-			continue;
 		}
+		else
+			g_signal_connect (plugin,
+					  "activated",
+					  G_CALLBACK (brasero_plugin_manager_plugin_state_changed),
+					  self);
 
-		g_signal_connect (plugin,
-				  "activated",
-				  G_CALLBACK (brasero_plugin_manager_plugin_state_changed),
-				  self);
-
-		g_assert (brasero_plugin_get_name(plugin));
+		g_assert (brasero_plugin_get_name (plugin));
 		priv->plugins = g_slist_prepend (priv->plugins, plugin);
 	}
 	g_dir_close (directory);



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