diff options
author | JP Rosevear <jpr@ximian.com> | 2003-05-15 02:45:55 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2003-05-15 02:45:55 +0800 |
commit | 352d3c7d3b080850f4fc81b502a0f0b0d3c2369d (patch) | |
tree | bcf141b2a6e60c5382ab04c1fd439c9319556ad0 /calendar/gui/gnome-cal.c | |
parent | 0203f5de7608f34c6510948b36f522c4c3a87fef (diff) | |
download | gsoc2013-evolution-352d3c7d3b080850f4fc81b502a0f0b0d3c2369d.tar.gz gsoc2013-evolution-352d3c7d3b080850f4fc81b502a0f0b0d3c2369d.tar.zst gsoc2013-evolution-352d3c7d3b080850f4fc81b502a0f0b0d3c2369d.zip |
guard against multiple destroys
2003-05-14 JP Rosevear <jpr@ximian.com>
* gui/e-tasks.c (e_tasks_destroy): guard against multiple destroys
* cal-client/cal-client.c (cal_client_finalize): unref the
bonobo listener
* gui/gnome-cal.c (gnome_calendar_destroy): guard against multiple
destroy calls
* gui/e-week-view.c (e_week_view_init): connect after destroy
(invisible_destroyed): don't unref, its already destroyed
* gui/e-day-view.c (e_day_view_init): connect after destroy
(invisible_destroyed): don't unref, its already destroyed
* gui/e-calendar-table.c (e_calendar_table_class_init): make sure
we set the parent class
(e_calendar_table_init): connect after the destroy handler runs
(e_calendar_table_destroy): guard against multiple destroys
(invisible_destroyed): don't unref the invisible, its already
being destroyed
* gui/calendar-offline-handler.c (backend_cal_set_mode): unref the
client, we are done with it now
(backend_cal_opened_online): ditto
(impl_dispose): unref our main client
* gui/calendar-commands.c (control_util_set_folder_bar_label):
release/unref the shell view once we are done with it
(control_util_show_settings): ditto
svn path=/trunk/; revision=21180
Diffstat (limited to 'calendar/gui/gnome-cal.c')
-rw-r--r-- | calendar/gui/gnome-cal.c | 86 |
1 files changed, 44 insertions, 42 deletions
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c index bd480381a8..6dc44e5e78 100644 --- a/calendar/gui/gnome-cal.c +++ b/calendar/gui/gnome-cal.c @@ -916,56 +916,58 @@ gnome_calendar_destroy (GtkObject *object) gcal = GNOME_CALENDAR (object); priv = gcal->priv; - free_categories (priv->cal_categories); - priv->cal_categories = NULL; - - free_categories (priv->tasks_categories); - priv->tasks_categories = NULL; + if (priv) { + free_categories (priv->cal_categories); + priv->cal_categories = NULL; - /* Save the TaskPad layout. */ - filename = g_strdup_printf ("%s/config/TaskPad", evolution_dir); - e_calendar_table_save_state (E_CALENDAR_TABLE (priv->todo), filename); - g_free (filename); + free_categories (priv->tasks_categories); + priv->tasks_categories = NULL; + + /* Save the TaskPad layout. */ + filename = g_strdup_printf ("%s/config/TaskPad", evolution_dir); + e_calendar_table_save_state (E_CALENDAR_TABLE (priv->todo), filename); + g_free (filename); + + if (priv->dn_query) { + g_signal_handlers_disconnect_matched (priv->dn_query, G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, gcal); + g_object_unref (priv->dn_query); + priv->dn_query = NULL; + } - if (priv->dn_query) { - g_signal_handlers_disconnect_matched (priv->dn_query, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, gcal); - g_object_unref (priv->dn_query); - priv->dn_query = NULL; - } + if (priv->sexp) { + g_free (priv->sexp); + priv->sexp = NULL; + } - if (priv->sexp) { - g_free (priv->sexp); - priv->sexp = NULL; - } + if (priv->client) { + g_signal_handlers_disconnect_matched (priv->client, G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, gcal); + g_object_unref (priv->client); + priv->client = NULL; + } - if (priv->client) { - g_signal_handlers_disconnect_matched (priv->client, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, gcal); - g_object_unref (priv->client); - priv->client = NULL; - } + if (priv->task_pad_client) { + g_signal_handlers_disconnect_matched (priv->task_pad_client, G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, gcal); + g_object_unref (priv->task_pad_client); + priv->task_pad_client = NULL; + } - if (priv->task_pad_client) { - g_signal_handlers_disconnect_matched (priv->task_pad_client, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, gcal); - g_object_unref (priv->task_pad_client); - priv->task_pad_client = NULL; - } + if (priv->view_instance) { + g_object_unref (priv->view_instance); + priv->view_instance = NULL; + } - if (priv->view_instance) { - g_object_unref (priv->view_instance); - priv->view_instance = NULL; - } + if (priv->view_menus) { + g_object_unref (priv->view_menus); + priv->view_menus = NULL; + } - if (priv->view_menus) { - g_object_unref (priv->view_menus); - priv->view_menus = NULL; + g_free (priv); + gcal->priv = NULL; } - - g_free (priv); - gcal->priv = NULL; - + if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } |