gplugin/gplugin

e57951c25e7c
Parents 1af50c6d60fd
Children ee0045c4bfeb
Emit a new "load-failed" signal when a plugin fails to load
--- a/gplugin/gplugin-manager.c Sat Feb 06 20:33:25 2016 -0600
+++ b/gplugin/gplugin-manager.c Mon Feb 29 20:25:45 2016 -0600
@@ -37,6 +37,7 @@
enum {
SIG_LOADING,
SIG_LOADED,
+ SIG_LOAD_FAILED,
SIG_UNLOADING,
SIG_UNLOADED,
N_SIGNALS,
@@ -89,6 +90,7 @@
GError **error);
void (*loaded_plugin)(GObject *manager,
GPluginPlugin *plugin);
+ void (*load_failed)(GObject *manager, GPluginPlugin *plugin);
gboolean (*unloading_plugin)(GObject *manager,
GPluginPlugin *plugin,
GError **error);
@@ -767,7 +769,10 @@
gplugin_plugin_set_state(plugin, (ret) ? GPLUGIN_PLUGIN_STATE_LOADED :
GPLUGIN_PLUGIN_STATE_LOAD_FAILED);
- g_signal_emit(manager, signals[SIG_LOADED], 0, plugin);
+ if(ret)
+ g_signal_emit(manager, signals[SIG_LOADED], 0, plugin);
+ else
+ g_signal_emit(manager, signals[SIG_LOAD_FAILED], 0, plugin);
return ret;
}
@@ -937,6 +942,25 @@
GPLUGIN_TYPE_PLUGIN);
/**
+ * GPluginManager::load-failed:
+ * @manager: The #GPluginPluginManager instance.
+ * @plugin: The #GPluginPlugin that failed to load.
+ *
+ * emitted after a plugin fails to load.
+ */
+ signals[SIG_LOAD_FAILED] =
+ g_signal_new("load-failed",
+ G_OBJECT_CLASS_TYPE(manager_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(GPluginManagerClass, load_failed),
+ NULL,
+ NULL,
+ gplugin_marshal_VOID__OBJECT,
+ G_TYPE_NONE,
+ 1,
+ GPLUGIN_TYPE_PLUGIN);
+
+ /**
* GPluginManager::unloading-plugin:
* @manager: the #gpluginpluginmanager instance. treat as a #gobject.
* @plugin: the #gpluginplugin that's about to be loaded.