[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