ekiga r7344 - trunk/lib/engine/gui/gtk-frontend



Author: jpuydt
Date: Fri Nov 14 19:43:56 2008
New Revision: 7344
URL: http://svn.gnome.org/viewvc/ekiga?rev=7344&view=rev

Log:
Moved disconnecting callbacks from finalize to dispose to avoid crashes

Modified:
   trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp

Modified: trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp
==============================================================================
--- trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp	(original)
+++ trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp	Fri Nov 14 19:43:56 2008
@@ -875,7 +875,7 @@
 		  gpointer data)
 {
   cluster->visit_heaps (sigc::bind (sigc::ptr_fun (visit_heaps),
-				    &*cluster, data));
+				    cluster, data));
 }
 
 static bool
@@ -1260,6 +1260,12 @@
 
   view = ROSTER_VIEW_GTK (obj);
 
+  for (std::vector<sigc::connection>::iterator iter
+	 = view->priv->connections.begin ();
+       iter != view->priv->connections.end ();
+       iter++)
+    iter->disconnect ();
+
   if (view->priv->tree_view) {
 
     g_signal_handlers_disconnect_matched (gtk_tree_view_get_selection (view->priv->tree_view),
@@ -1290,12 +1296,6 @@
 
   view = (RosterViewGtk *)obj;
 
-  for (std::vector<sigc::connection>::iterator iter
-	 = view->priv->connections.begin ();
-       iter != view->priv->connections.end ();
-       iter++)
-    iter->disconnect ();
-
   delete view->priv;
 
   parent_class->finalize (obj);
@@ -1525,26 +1525,26 @@
 
   /* Relay signals */
   conn = core.cluster_added.connect (sigc::bind (sigc::ptr_fun (on_cluster_added),
-						 (gpointer) self));
+ 						 (gpointer) self));
   self->priv->connections.push_back (conn);
   conn = core.heap_added.connect (sigc::bind (sigc::ptr_fun (on_heap_added),
-					      (gpointer) self));
+ 					      (gpointer) self));
   self->priv->connections.push_back (conn);
   conn = core.heap_updated.connect (sigc::bind (sigc::ptr_fun (on_heap_updated),
-						(gpointer) self));
+ 						(gpointer) self));
   self->priv->connections.push_back (conn);
   conn = core.heap_removed.connect (sigc::bind (sigc::ptr_fun (on_heap_removed),
-						(gpointer) self));
+ 						(gpointer) self));
 
   self->priv->connections.push_back (conn);
   conn = core.presentity_added.connect (sigc::bind (sigc::ptr_fun (on_presentity_added),
-						    (gpointer) self));
+ 						    (gpointer) self));
   self->priv->connections.push_back (conn);
   conn = core.presentity_updated.connect (sigc::bind (sigc::ptr_fun (on_presentity_updated),
-						      self));
+ 						      self));
   self->priv->connections.push_back (conn);
   conn = core.presentity_removed.connect (sigc::bind (sigc::ptr_fun (on_presentity_removed),
-						      (gpointer) self));
+ 						      (gpointer) self));
   self->priv->connections.push_back (conn);
   conn = core.questions.add_handler (sigc::bind (sigc::ptr_fun (on_handle_questions), (gpointer) self));
   self->priv->connections.push_back (conn);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]