From 9786eb1d7a796f9e180d8e9d1eed97f603abdb97 Mon Sep 17 00:00:00 2001 From: Ettore Perazzoli Date: Tue, 3 Jul 2001 12:24:29 +0000 Subject: Ref/unref the handler so the signal handlers can unref it safely. Also, if * e-shell-offline-handler.c (e_shell_offline_handler_put_components_offline): Ref/unref the handler so the signal handlers can unref it safely. Also, if `prepare_for_offline()' fails, don't say that there was an internal error, as that's confusing. Just say we couldn't put the components off-line. [Fix #3758, clicking on the online/offline button crashed Evolution.] * Evolution-Offline.idl: Don't derive OfflineProgressListener from Bonobo::Unknown. svn path=/trunk/; revision=10742 --- shell/e-shell-offline-handler.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'shell/e-shell-offline-handler.c') diff --git a/shell/e-shell-offline-handler.c b/shell/e-shell-offline-handler.c index 9b0c247025..b7680f0313 100644 --- a/shell/e-shell-offline-handler.c +++ b/shell/e-shell-offline-handler.c @@ -790,12 +790,18 @@ e_shell_offline_handler_put_components_offline (EShellOfflineHandler *offline_ha priv->procedure_in_progress = TRUE; priv->parent_shell_view = parent_shell_view; + /* Add an extra ref here as the signal handlers might want to unref + us. */ + + gtk_object_ref (GTK_OBJECT (offline_handler)); + gtk_signal_emit (GTK_OBJECT (offline_handler), signals[OFFLINE_PROCEDURE_STARTED]); if (! prepare_for_offline (offline_handler)) { /* FIXME: Maybe do something smarter here. */ - g_warning ("Couldn't put components off-line for some internal error"); + g_warning ("Couldn't put components off-line"); gtk_signal_emit (GTK_OBJECT (offline_handler), signals[OFFLINE_PROCEDURE_FINISHED], FALSE); + gtk_object_unref (GTK_OBJECT (offline_handler)); return; } @@ -803,6 +809,8 @@ e_shell_offline_handler_put_components_offline (EShellOfflineHandler *offline_ha pop_up_confirmation_dialog (offline_handler); else finalize_offline (offline_handler); + + gtk_object_unref (GTK_OBJECT (offline_handler)); } -- cgit v1.2.3