From a86bcdd036ea915f23e3532748ca726de039d584 Mon Sep 17 00:00:00 2001 From: Jon Trowbridge Date: Fri, 7 Dec 2001 00:17:04 +0000 Subject: Explicitly destroy the EMeetingModel. This is a hack to work around 2001-12-06 Jon Trowbridge * gui/dialogs/event-editor.c (event_editor_destroy): Explicitly destroy the EMeetingModel. This is a hack to work around problems with the reference counting; we are still leaking the EMeetingModels. * gui/e-meeting-time-sel.c (e_meeting_time_selector_construct): Ref our EMeetingModel. (e_meeting_time_selector_destroy): Unref the model. * gui/e-meeting-model.c (destroy): Properly destroy corba_select_names with a call to bonobo_object_release_unref. (Fixes 14002) svn path=/trunk/; revision=14919 --- calendar/ChangeLog | 15 +++++++++++++++ calendar/gui/dialogs/event-editor.c | 1 + calendar/gui/e-meeting-model.c | 7 +++++++ calendar/gui/e-meeting-time-sel.c | 5 +++++ 4 files changed, 28 insertions(+) diff --git a/calendar/ChangeLog b/calendar/ChangeLog index c86c6ba881..d0ac50d40f 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,18 @@ +2001-12-06 Jon Trowbridge + + * gui/dialogs/event-editor.c (event_editor_destroy): Explicitly + destroy the EMeetingModel. This is a hack to work around problems + with the reference counting; we are still leaking the + EMeetingModels. + + * gui/e-meeting-time-sel.c + (e_meeting_time_selector_construct): Ref our EMeetingModel. + (e_meeting_time_selector_destroy): Unref the model. + + * gui/e-meeting-model.c (destroy): Properly destroy + corba_select_names with a call to bonobo_object_release_unref. + (Fixes 14002) + 2001-12-05 Rodrigo Moya * gui/dialogs/event-page.glade: added entry for the LOCATION field diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c index 7fa48546cc..1c70b36858 100644 --- a/calendar/gui/dialogs/event-editor.c +++ b/calendar/gui/dialogs/event-editor.c @@ -328,6 +328,7 @@ event_editor_destroy (GtkObject *object) gtk_object_unref (GTK_OBJECT (priv->meet_page)); gtk_object_unref (GTK_OBJECT (priv->sched_page)); + gtk_object_destroy (GTK_OBJECT (priv->model)); gtk_object_unref (GTK_OBJECT (priv->model)); if (GTK_OBJECT_CLASS (parent_class)->destroy) diff --git a/calendar/gui/e-meeting-model.c b/calendar/gui/e-meeting-model.c index d80c95fb41..f9a692f3b7 100644 --- a/calendar/gui/e-meeting-model.c +++ b/calendar/gui/e-meeting-model.c @@ -688,6 +688,13 @@ destroy (GtkObject *obj) if (priv->ebook != NULL) gtk_object_unref (GTK_OBJECT (priv->ebook)); + + if (priv->corba_select_names != CORBA_OBJECT_NIL) { + CORBA_Environment ev; + CORBA_exception_init (&ev); + bonobo_object_release_unref (priv->corba_select_names, &ev); + CORBA_exception_free (&ev); + } g_free (priv); } diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c index 0decccb9ef..4456ccafed 100644 --- a/calendar/gui/e-meeting-time-sel.c +++ b/calendar/gui/e-meeting-time-sel.c @@ -347,6 +347,8 @@ e_meeting_time_selector_construct (EMeetingTimeSelector * mts, EMeetingModel *em /* build the etable */ filename = g_strdup_printf ("%s/config/et-header-meeting-time-sel", evolution_dir); mts->model = emm; + if (mts->model) + gtk_object_ref (GTK_OBJECT (mts->model)); gtk_signal_connect (GTK_OBJECT (mts->model), "model_rows_inserted", GTK_SIGNAL_FUNC (row_count_changed_cb), mts); @@ -855,6 +857,9 @@ e_meeting_time_selector_destroy (GtkObject *object) gdk_color_context_free (mts->color_context); gdk_bitmap_unref (mts->stipple); + + if (mts->model) + gtk_object_unref (GTK_OBJECT (mts->model)); if (GTK_OBJECT_CLASS (parent_class)->destroy) (*GTK_OBJECT_CLASS (parent_class)->destroy)(object); -- cgit