From abc63da30ecc4304f8e7daf96ec7d51307959b5b Mon Sep 17 00:00:00 2001
From: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
Date: Wed, 17 Dec 2014 11:45:59 -0500
Subject: [PATCH] gnome: prevent presence window segfault

Refs #59907

Change-Id: I48d9d500c17cb84acdbce7041e1d17a50a544697
---
 gnome/src/presencewindow.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/gnome/src/presencewindow.c b/gnome/src/presencewindow.c
index 08b9fee066..9311f039f2 100644
--- a/gnome/src/presencewindow.c
+++ b/gnome/src/presencewindow.c
@@ -1037,6 +1037,12 @@ create_presence_statusbar()
     return bar;
 }
 
+static void
+toggle_presence_window_state_false()
+{
+    g_action_change_state(G_ACTION(toggle_action), g_variant_new_boolean(FALSE));
+}
+
 
 /*************************** Menu bar callback *******************************/
 
@@ -1098,7 +1104,7 @@ create_presence_menubar()
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
     menu_item = gtk_menu_item_new_with_label("Close");
     g_signal_connect(G_OBJECT(menu_item), "activate",
-            G_CALLBACK(destroy_presence_window), NULL);
+            G_CALLBACK(toggle_presence_window_state_false), NULL);
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
 
 
@@ -1133,7 +1139,6 @@ destroy_presence_window()
     buddy_list_tree_view = NULL;
     presence_status_bar = NULL;
     gtk_widget_destroy(presence_window);
-    g_action_change_state(G_ACTION(toggle_action), g_variant_new_boolean(FALSE));
 }
 
 void
@@ -1193,7 +1198,7 @@ create_presence_window(SFLPhoneClient *client, GSimpleAction *action)
     g_signal_connect(G_OBJECT(presence_window), "button-press-event",
             G_CALLBACK(presence_view_onButtonPressed), NULL);
     g_signal_connect_after(presence_window, "destroy",
-            G_CALLBACK(destroy_presence_window), NULL);
+            G_CALLBACK(toggle_presence_window_state_false), NULL);
 
     /*------------------------- Load presence -------------------------*/
     presence_buddy_list_init(presence_client);
-- 
GitLab