--- a/CMakeLists.txt Sat Feb 06 20:30:48 2016 -0600
+++ b/CMakeLists.txt Thu Mar 03 22:12:01 2016 -0600
@@ -25,7 +25,7 @@
set(GPLUGIN_MAJOR_VERSION 0)
-set(GPLUGIN_MINOR_VERSION 25)
+set(GPLUGIN_MINOR_VERSION 26) set(GPLUGIN_MICRO_VERSION 0)
set(GPLUGIN_EXTRA_VERSION)
--- a/ChangeLog Sat Feb 06 20:30:48 2016 -0600
+++ b/ChangeLog Thu Mar 03 22:12:01 2016 -0600
@@ -1,3 +1,7 @@
+ * Added a load-failed signal which is emitted when a plugin fails to load + * Removed pre glib 2.32.0 code * Fix a regression where the GIR file did not have a predictable name.
* Fix the glib requirement. It was set at 2.20, but we require 2.32.
--- a/gplugin/gplugin-manager.c Sat Feb 06 20:30:48 2016 -0600
+++ b/gplugin/gplugin-manager.c Thu Mar 03 22:12:01 2016 -0600
@@ -37,6 +37,7 @@
@@ -89,6 +90,7 @@
void (*loaded_plugin)(GObject *manager,
+ void (*load_failed)(GObject *manager, GPluginPlugin *plugin); gboolean (*unloading_plugin)(GObject *manager,
@@ -149,7 +151,7 @@
*****************************************************************************/
gplugin_manager_real_append_path(GPluginManager *manager,
@@ -165,7 +167,7 @@
gplugin_manager_real_prepend_path(GPluginManager *manager,
@@ -181,7 +183,7 @@
gplugin_manager_real_remove_path(GPluginManager *manager,
GList *l = NULL, *link = NULL;
@@ -209,7 +211,7 @@
gplugin_manager_real_register_loader(GPluginManager *manager,
GPluginLoader *loader = NULL;
GPluginLoaderClass *lo_class = NULL;
@@ -273,7 +275,7 @@
gplugin_manager_real_unregister_loader(GPluginManager *manager,
GPluginLoaderClass *klass = NULL;
@@ -550,7 +552,7 @@
gplugin_manager_real_find_plugins(GPluginManager *manager,
GSList *plugins_list = NULL, *l;
@@ -767,15 +769,18 @@
gplugin_plugin_set_state(plugin, (ret) ? GPLUGIN_PLUGIN_STATE_LOADED :
GPLUGIN_PLUGIN_STATE_LOAD_FAILED);
- g_signal_emit(manager, signals[SIG_LOADED], 0, plugin);
+ g_signal_emit(manager, signals[SIG_LOADED], 0, plugin); + g_signal_emit(manager, signals[SIG_LOAD_FAILED], 0, plugin); gplugin_manager_real_unload_plugin(GPluginManager *manager,
GPluginLoader *loader = NULL;
@@ -832,16 +837,7 @@
gplugin_manager_finalize(GObject *obj) {
GPluginManager *manager = GPLUGIN_MANAGER(obj);
-#if GLIB_CHECK_VERSION(2,32,0)
g_queue_free_full(manager->paths, g_free);
- for(iter = manager->paths->head; iter; iter = iter->next)
- g_queue_free(manager->paths);
-#endif /* GLIB_CHECK_VERSION(2,32,0) */
/* free all the data in the plugins hash table and destroy it */
g_hash_table_foreach_remove(manager->plugins,
@@ -937,10 +933,28 @@
+ * 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_STRUCT_OFFSET(GPluginManagerClass, load_failed), + gplugin_marshal_VOID__OBJECT, * GPluginManager::unloading-plugin:
- * @manager: the #gpluginpluginmanager instance. treat as a #gobject.
- * @plugin: the #gpluginplugin that's about to be loaded.
- * @error: return address for a #gerror.
+ * @manager: the #GPluginPluginManager instance. treat as a #GObject. + * @plugin: the #GPluginPlugin that's about to be loaded. * emitted before a plugin is unloaded.
--- a/gplugin/tests/test-signals.c Sat Feb 06 20:30:48 2016 -0600
+++ b/gplugin/tests/test-signals.c Thu Mar 03 22:12:01 2016 -0600
@@ -24,6 +24,7 @@
} TestGPluginManagerSignalsData;
/******************************************************************************
@@ -105,6 +106,16 @@
+test_gplugin_manager_signals_load_failed(GPLUGIN_UNUSED GObject *manager, + GPLUGIN_UNUSED GPluginPlugin *plugin, + TestGPluginManagerSignalsData *data = (TestGPluginManagerSignalsData *)d; + data->load_failed = TRUE; /******************************************************************************
*****************************************************************************/
@@ -113,7 +124,7 @@
GPluginPlugin *plugin = NULL;
GObject *manager = gplugin_manager_get_instance();
- TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE };
+ TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE, FALSE }; gulong signals[] = { 0, 0, 0, 0};
@@ -158,7 +169,7 @@
GPluginPlugin *plugin = NULL;
GObject *manager = gplugin_manager_get_instance();
- TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE };
+ TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE, FALSE }; gulong signals[] = { 0, 0, 0, 0};
@@ -200,7 +211,7 @@
GPluginPlugin *plugin = NULL;
GObject *manager = gplugin_manager_get_instance();
- TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE };
+ TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE, FALSE }; gulong signals[] = { 0, 0, 0, 0};
@@ -240,6 +251,36 @@
g_signal_handler_disconnect(manager, signals[3]);
+test_gplugin_manager_signals_load_failure(void) { + GPluginPlugin *plugin = NULL; + GObject *manager = gplugin_manager_get_instance(); + TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE, FALSE }; + gulong signals[] = { 0, 0, 0, 0, 0}; + g_signal_connect(manager, "loading-plugin", + G_CALLBACK(test_gplugin_manager_signals_normal_loading), + g_signal_connect(manager, "load-failed", + G_CALLBACK(test_gplugin_manager_signals_load_failed), + gplugin_manager_append_path(TEST_DIR); + gplugin_manager_refresh(); + plugin = gplugin_manager_find_plugin("gplugin/native-load-failed"); + gplugin_manager_load_plugin(plugin, &error); + g_assert_error(error, GPLUGIN_DOMAIN, 0); + g_assert(data.loading); + g_assert(data.load_failed); + g_signal_handler_disconnect(manager, signals[0]); + g_signal_handler_disconnect(manager, signals[1]); /******************************************************************************
*****************************************************************************/
@@ -256,6 +297,8 @@
test_gplugin_manager_signals_loading_stopped);
g_test_add_func("/manager/signals/unloading-stopped",
test_gplugin_manager_signals_unloading_stopped);
+ g_test_add_func("/manager/signals/load-failed", + test_gplugin_manager_signals_load_failure); --- a/packaging/debian/changelog Sat Feb 06 20:30:48 2016 -0600
+++ b/packaging/debian/changelog Thu Mar 03 22:12:01 2016 -0600
@@ -1,3 +1,9 @@
+gplugin (0.26) unstable; urgency=medium + * New upstream release, see official changelog + -- Gary Kramlich <grim@reaperworld.com> Thu, 03 Mar 2016 22:09:12 -0600 gplugin (0.25) unstable; urgency=medium
* New upstream release, see official changelog