[gnome-builder] editor: workaround ATK bug causing crash on tab close.
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] editor: workaround ATK bug causing crash on tab close.
- Date: Thu, 25 Sep 2014 08:08:57 +0000 (UTC)
commit eb7bb6c7976277dfc0fdbf91e4d76ca8924f5173
Author: Christian Hergert <christian hergert me>
Date: Thu Sep 25 01:08:51 2014 -0700
editor: workaround ATK bug causing crash on tab close.
src/editor/gb-editor-commands.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/src/editor/gb-editor-commands.c b/src/editor/gb-editor-commands.c
index 85d7953..de336fa 100644
--- a/src/editor/gb-editor-commands.c
+++ b/src/editor/gb-editor-commands.c
@@ -231,13 +231,33 @@ gb_editor_commands_find (GbEditorWorkspace *workspace,
EXIT;
}
+static gboolean
+object_unref_timeout (gpointer data)
+{
+ GbEditorTab *tab = data;
+ g_return_val_if_fail (GB_IS_EDITOR_TAB (tab), FALSE);
+ g_object_unref (tab);
+ return G_SOURCE_REMOVE;
+}
+
void
gb_editor_commands_close_tab (GbEditorWorkspace *workspace,
GbEditorTab *tab)
{
g_return_if_fail (GB_IS_EDITOR_TAB (tab));
+ /*
+ * WORKAROUND:
+ *
+ * I seem to be seeing some issues with ATK getting a segfault if we lose
+ * our reference here. Delaying the disposal for a bit seems to fix the
+ * issue. Apparently atk exports some paths on D-Bus, and perhaps that is
+ * holding a weak pointer that has gone invalid during the focus changes.
+ */
+
+ g_object_ref (tab);
gb_tab_close (GB_TAB (tab));
+ g_timeout_add (100, object_unref_timeout, tab);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]