[gnome-builder] workbench: handle GInitiallyUnowned addins properly
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] workbench: handle GInitiallyUnowned addins properly
- Date: Tue, 26 Sep 2017 06:50:19 +0000 (UTC)
commit 51987b1be018b3af10d01bc545c70c0f615b21d2
Author: Christian Hergert <chergert redhat com>
Date: Mon Sep 25 23:48:21 2017 -0700
workbench: handle GInitiallyUnowned addins properly
If we have a plugin that is also a widget, we could get into a
position where we lose the object reference. So ensure that we
sink the reference automatically.
src/libide/workbench/ide-workbench.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
---
diff --git a/src/libide/workbench/ide-workbench.c b/src/libide/workbench/ide-workbench.c
index fb3fe17..2d9ce0b 100644
--- a/src/libide/workbench/ide-workbench.c
+++ b/src/libide/workbench/ide-workbench.c
@@ -518,15 +518,20 @@ ide_workbench_addin_added (PeasExtensionSet *set,
gpointer user_data)
{
IdeWorkbench *self = user_data;
+ IdeWorkbenchAddin *addin = (IdeWorkbenchAddin *)extension;
g_assert (PEAS_IS_EXTENSION_SET (set));
g_assert (plugin_info != NULL);
- g_assert (IDE_IS_WORKBENCH_ADDIN (extension));
+ g_assert (IDE_IS_WORKBENCH_ADDIN (addin));
g_assert (IDE_IS_WORKBENCH (self));
IDE_TRACE_MSG ("Loading workbench addin for %s",
peas_plugin_info_get_module_name (plugin_info));
+ /* Handle extensions that are widgets */
+ if (g_object_is_floating (G_OBJECT (addin)))
+ g_object_ref_sink (addin);
+
ide_workbench_addin_load (IDE_WORKBENCH_ADDIN (extension), self);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]