diff options
-rw-r--r-- | calendar/ChangeLog | 15 | ||||
-rw-r--r-- | calendar/gui/dialogs/event-editor.c | 1 | ||||
-rw-r--r-- | calendar/gui/e-meeting-model.c | 7 | ||||
-rw-r--r-- | calendar/gui/e-meeting-time-sel.c | 5 |
4 files changed, 28 insertions, 0 deletions
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 <trow@ximian.com> + + * 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 <rodrigo@ximian.com> * 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); |