gplugin/gplugin

98178efd03b1
flow: Merged '0.26' to ('default').
--- 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 @@
project(gplugin C)
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 @@
+0.26.0: 2016/03/03
+ * Added a load-failed signal which is emitted when a plugin fails to load
+ * Removed pre glib 2.32.0 code
+
0.25.0: 2016/02/06
* 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/Debian.md Sat Feb 06 20:30:48 2016 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-Installing from Packages
-========================
-
-There are packages available (more to come) via our debian mirror. You can
-access it with the following commands.
-
- sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 75FE259AA8AC8032
- echo "deb http://gplug.in/debian jessie main" | sudo tee /etc/apt/sources.list.d/gplugin.list
- sudo apt-get update
- sudo apt-get install libgplugin0 libgplugin-loaders
-
-You can use `apt-cache search gplugin` to see the other packages that are available
-
-
--- 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 @@
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);
@@ -149,7 +151,7 @@
*****************************************************************************/
static void
gplugin_manager_real_append_path(GPluginManager *manager,
- const gchar *path)
+ const gchar *path)
{
GList *l = NULL;
@@ -165,7 +167,7 @@
static void
gplugin_manager_real_prepend_path(GPluginManager *manager,
- const gchar *path)
+ const gchar *path)
{
GList *l = NULL;
@@ -181,7 +183,7 @@
static void
gplugin_manager_real_remove_path(GPluginManager *manager,
- const gchar *path)
+ const gchar *path)
{
GList *l = NULL, *link = NULL;
@@ -209,7 +211,7 @@
static void
gplugin_manager_real_register_loader(GPluginManager *manager,
- GType type)
+ GType type)
{
GPluginLoader *loader = NULL;
GPluginLoaderClass *lo_class = NULL;
@@ -273,7 +275,7 @@
static void
gplugin_manager_real_unregister_loader(GPluginManager *manager,
- GType type)
+ GType type)
{
GPluginLoaderClass *klass = NULL;
GSList *exts = NULL;
@@ -550,7 +552,7 @@
static GSList *
gplugin_manager_real_find_plugins(GPluginManager *manager,
- const gchar *id)
+ const gchar *id)
{
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);
+ if(ret)
+ g_signal_emit(manager, signals[SIG_LOADED], 0, plugin);
+ else
+ g_signal_emit(manager, signals[SIG_LOAD_FAILED], 0, plugin);
return ret;
}
static gboolean
gplugin_manager_real_unload_plugin(GPluginManager *manager,
- GPluginPlugin *plugin,
- GError **error)
+ GPluginPlugin *plugin,
+ GError **error)
{
GPluginLoader *loader = NULL;
gboolean ret = TRUE;
@@ -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);
-#else
- GList *iter = NULL;
- GSList *l = NULL;
-
- for(iter = manager->paths->head; iter; iter = iter->next)
- g_free(iter->data);
- 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 @@
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.
- * @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 @@
gboolean loaded;
gboolean unloading;
gboolean unloaded;
+ gboolean load_failed;
} TestGPluginManagerSignalsData;
/******************************************************************************
@@ -105,6 +106,16 @@
return FALSE;
}
+static void
+test_gplugin_manager_signals_load_failed(GPLUGIN_UNUSED GObject *manager,
+ GPLUGIN_UNUSED GPluginPlugin *plugin,
+ gpointer d)
+{
+ TestGPluginManagerSignalsData *data = (TestGPluginManagerSignalsData *)d;
+
+ data->load_failed = TRUE;
+}
+
/******************************************************************************
* Tests
*****************************************************************************/
@@ -113,7 +124,7 @@
GPluginPlugin *plugin = NULL;
GObject *manager = gplugin_manager_get_instance();
GError *error = NULL;
- TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE };
+ TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE, FALSE };
gulong signals[] = { 0, 0, 0, 0};
signals[0] =
@@ -158,7 +169,7 @@
GPluginPlugin *plugin = NULL;
GObject *manager = gplugin_manager_get_instance();
GError *error = NULL;
- TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE };
+ TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE, FALSE };
gulong signals[] = { 0, 0, 0, 0};
signals[0] =
@@ -200,7 +211,7 @@
GPluginPlugin *plugin = NULL;
GObject *manager = gplugin_manager_get_instance();
GError *error = NULL;
- TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE };
+ TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE, FALSE };
gulong signals[] = { 0, 0, 0, 0};
signals[0] =
@@ -240,6 +251,36 @@
g_signal_handler_disconnect(manager, signals[3]);
}
+static void
+test_gplugin_manager_signals_load_failure(void) {
+ GPluginPlugin *plugin = NULL;
+ GObject *manager = gplugin_manager_get_instance();
+ GError *error = NULL;
+ TestGPluginManagerSignalsData data = { FALSE, FALSE, FALSE, FALSE, FALSE };
+ gulong signals[] = { 0, 0, 0, 0, 0};
+
+ signals[0] =
+ g_signal_connect(manager, "loading-plugin",
+ G_CALLBACK(test_gplugin_manager_signals_normal_loading),
+ &data);
+ signals[1] =
+ g_signal_connect(manager, "load-failed",
+ G_CALLBACK(test_gplugin_manager_signals_load_failed),
+ &data);
+
+ 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]);
+}
+
/******************************************************************************
* Main
*****************************************************************************/
@@ -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);
return g_test_run();
}
--- 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