Updating branch refs/heads/master to 0dffd44e19b60ab395e5353497de53d0dedf3c3b (commit) from 9415787601c953ae9db39365cc01185aaa72a5c5 (commit)
commit 0dffd44e19b60ab395e5353497de53d0dedf3c3b Author: David Mohr <squis...@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); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits