[gnome-builder] plugins: handle G_TYPE_INVALID more gracefully
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] plugins: handle G_TYPE_INVALID more gracefully
- Date: Sat, 20 Jan 2018 08:49:01 +0000 (UTC)
commit 7c72c5dc993a0d4aa5d5c32f1a855ed51496f05e
Author: Christian Hergert <chergert redhat com>
Date: Fri Jan 19 22:31:25 2018 -0800
plugins: handle G_TYPE_INVALID more gracefully
src/libide/plugins/ide-extension-adapter.c | 6 ++++--
src/libide/plugins/ide-extension-set-adapter.c | 14 +++++++++-----
2 files changed, 13 insertions(+), 7 deletions(-)
---
diff --git a/src/libide/plugins/ide-extension-adapter.c b/src/libide/plugins/ide-extension-adapter.c
index 1d92ca957..851f32cee 100644
--- a/src/libide/plugins/ide-extension-adapter.c
+++ b/src/libide/plugins/ide-extension-adapter.c
@@ -120,8 +120,9 @@ ide_extension_adapter_reload (IdeExtensionAdapter *self)
g_assert (IDE_IS_MAIN_THREAD ());
g_assert (IDE_IS_EXTENSION_ADAPTER (self));
+ g_assert (self->interface_type != G_TYPE_INVALID);
- if (!self->engine || !self->key || !self->value || self->interface_type == G_TYPE_INVALID)
+ if (!self->engine || !self->key || !self->value)
{
ide_extension_adapter_set_extension (self, NULL, NULL);
return;
@@ -515,7 +516,8 @@ ide_extension_adapter_set_value (IdeExtensionAdapter *self,
{
g_free (self->value);
self->value = g_strdup (value);
- ide_extension_adapter_reload (self);
+ if (self->interface_type != G_TYPE_INVALID)
+ ide_extension_adapter_reload (self);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_VALUE]);
}
}
diff --git a/src/libide/plugins/ide-extension-set-adapter.c b/src/libide/plugins/ide-extension-set-adapter.c
index efab423dc..fc53e4cd1 100644
--- a/src/libide/plugins/ide-extension-set-adapter.c
+++ b/src/libide/plugins/ide-extension-set-adapter.c
@@ -175,6 +175,9 @@ ide_extension_set_adapter_reload (IdeExtensionSetAdapter *self)
PeasPluginInfo *plugin_info = plugins->data;
gint priority;
+ if (!peas_plugin_info_is_loaded (plugin_info))
+ continue;
+
if (peas_engine_provides_extension (self->engine, plugin_info, self->interface_type))
watch_extension (self, plugin_info, self->interface_type);
@@ -185,7 +188,7 @@ ide_extension_set_adapter_reload (IdeExtensionSetAdapter *self)
self->value,
&priority))
{
- if (!g_hash_table_lookup (self->extensions, plugin_info))
+ if (!g_hash_table_contains (self->extensions, plugin_info))
{
PeasExtension *exten;
@@ -221,6 +224,7 @@ ide_extension_set_adapter_reload (IdeExtensionSetAdapter *self)
remove_extension (self, plugin_info, exten);
}
}
+
g_signal_emit (self, signals [EXTENSIONS_LOADED], 0);
}
@@ -248,10 +252,10 @@ ide_extension_set_adapter_queue_reload (IdeExtensionSetAdapter *self)
dzl_clear_source (&self->reload_handler);
- if (self->interface_type == G_TYPE_INVALID)
- return;
-
- self->reload_handler = g_timeout_add (0, ide_extension_set_adapter_do_reload, self);
+ self->reload_handler = g_idle_add_full (G_PRIORITY_HIGH,
+ ide_extension_set_adapter_do_reload,
+ self,
+ NULL);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]