[Xfce4-commits] <xfburn:master> Disconnect from the volume change signal of the device box

David Mohr noreply at xfce.org
Tue Oct 13 05:38:01 CEST 2009


Updating branch refs/heads/master
         to 0dffd44e19b60ab395e5353497de53d0dedf3c3b (commit)
       from 9415787601c953ae9db39365cc01185aaa72a5c5 (commit)

commit 0dffd44e19b60ab395e5353497de53d0dedf3c3b
Author: David Mohr <squisher at xfce.org>
Date:   Mon Oct 12 21:36:53 2009 -0600

    Disconnect from the volume change signal of the device box

 xfburn/xfburn-burn-image-dialog.c |   19 ++++++++++++++++++-
 xfburn/xfburn-main-window.c       |    2 ++
 2 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/xfburn/xfburn-burn-image-dialog.c b/xfburn/xfburn-burn-image-dialog.c
index 6e5bdf1..a89eca9 100644
--- a/xfburn/xfburn-burn-image-dialog.c
+++ b/xfburn/xfburn-burn-image-dialog.c
@@ -65,12 +65,15 @@ typedef struct
 
   GtkWidget *burn_button;
 
+  gulong handler_volchange;
+
   ThreadBurnIsoParams *params;
 } XfburnBurnImageDialogPrivate;
 
 /* prototypes */
 static void xfburn_burn_image_dialog_class_init (XfburnBurnImageDialogClass * klass);
 static void xfburn_burn_image_dialog_init (XfburnBurnImageDialog * sp);
+static void xfburn_burn_image_dialog_finalize (GObject *object);
 
 void burn_image_dialog_error (XfburnBurnImageDialog * dialog, const gchar * msg_error);
 static void cb_volume_change_end (XfburnDeviceList *devlist, gboolean device_changed, XfburnDevice *device, XfburnBurnImageDialog * dialog);
@@ -114,8 +117,13 @@ xfburn_burn_image_dialog_get_type ()
 static void
 xfburn_burn_image_dialog_class_init (XfburnBurnImageDialogClass * klass)
 {
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
   g_type_class_add_private (klass, sizeof (XfburnBurnImageDialogPrivate));
+
   parent_class = g_type_class_peek_parent (klass);
+
+  object_class->finalize     = xfburn_burn_image_dialog_finalize;
 }
 
 static void
@@ -209,7 +217,7 @@ xfburn_burn_image_dialog_init (XfburnBurnImageDialog * obj)
 
   devlist = xfburn_device_list_new ();
 
-  g_signal_connect (G_OBJECT (devlist), "volume-change-end", G_CALLBACK (cb_volume_change_end), obj);
+  priv->handler_volchange = g_signal_connect (G_OBJECT (devlist), "volume-change-end", G_CALLBACK (cb_volume_change_end), obj);
   g_signal_connect (G_OBJECT (obj), "response", G_CALLBACK (cb_dialog_response), obj);
   device = xfburn_device_list_get_current_device (devlist);
 
@@ -222,6 +230,15 @@ xfburn_burn_image_dialog_init (XfburnBurnImageDialog * obj)
 
 }
 
+static void
+xfburn_burn_image_dialog_finalize (GObject *object)
+{
+  XfburnBurnImageDialog *dialog = XFBURN_BURN_IMAGE_DIALOG (object);
+  XfburnBurnImageDialogPrivate *priv = XFBURN_BURN_IMAGE_DIALOG_GET_PRIVATE (dialog);
+
+  g_signal_handler_disconnect (dialog, priv->handler_volchange);
+}
+
 /*************/
 /* internals */
 /*************/
diff --git a/xfburn/xfburn-main-window.c b/xfburn/xfburn-main-window.c
index 5cc9ecd..76f6b00 100644
--- a/xfburn/xfburn-main-window.c
+++ b/xfburn/xfburn-main-window.c
@@ -399,7 +399,9 @@ action_burn_image (GtkAction * action, XfburnMainWindow * window)
 
   dialog = xfburn_burn_image_dialog_new ();
   gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
+  DBG ("Running burn image dialog");
   gtk_dialog_run (GTK_DIALOG (dialog));
+  DBG ("Destroying burn image dialog");
   gtk_widget_destroy (dialog);
 }
 



More information about the Xfce4-commits mailing list