aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog15
-rw-r--r--calendar/gui/dialogs/event-editor.c1
-rw-r--r--calendar/gui/e-meeting-model.c7
-rw-r--r--calendar/gui/e-meeting-time-sel.c5
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);