aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ChangeLog17
-rw-r--r--shell/e-component-registry.c4
-rw-r--r--shell/e-shell.c23
-rw-r--r--shell/e-storage-set.c2
-rw-r--r--shell/main.c3
5 files changed, 28 insertions, 21 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 559e99f055..eec1daee99 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,5 +1,22 @@
2001-06-25 Ettore Perazzoli <ettore@ximian.com>
+ * e-storage-set.c (destroy): Use
+ `name_to_named_storage_foreach_destroy()' as the function argument
+ to `g_hash_table_foreach()', not `named_storage_destroy()', which
+ is just plainly wrong.
+
+ * e-shell.c (setup_corba_storages): Don't ref the
+ corba_storage_registry here.
+ (destroy): Don't unref here.
+ (setup_activity_interface): Don't ref the activity_handler either.
+ (destroy): Don't unref it here.
+
+ * e-component-registry.c (e_component_registry_construct): Don't
+ ref the shell here.
+ (destroy): Don't unref it here.
+
+2001-06-25 Ettore Perazzoli <ettore@ximian.com>
+
* main.c (no_views_left_cb): Don't call `e_shell_quit()' anymore.
* e-shell-view-menu.c (command_quit): Call
diff --git a/shell/e-component-registry.c b/shell/e-component-registry.c
index 693b7bf812..aa76ff0656 100644
--- a/shell/e-component-registry.c
+++ b/shell/e-component-registry.c
@@ -227,8 +227,6 @@ destroy (GtkObject *object)
component_registry = E_COMPONENT_REGISTRY (object);
priv = component_registry->priv;
- bonobo_object_unref (BONOBO_OBJECT (priv->shell));
-
g_hash_table_foreach (priv->component_id_to_component, component_id_foreach_free, NULL);
g_hash_table_destroy (priv->component_id_to_component);
@@ -273,8 +271,6 @@ e_component_registry_construct (EComponentRegistry *component_registry,
g_return_if_fail (E_IS_SHELL (shell));
priv = component_registry->priv;
-
- bonobo_object_ref (BONOBO_OBJECT (shell));
priv->shell = shell;
}
diff --git a/shell/e-shell.c b/shell/e-shell.c
index c642d991c6..595be5d55c 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -77,10 +77,10 @@ struct _EShellPrivate {
EComponentRegistry *component_registry;
- ECorbaStorageRegistry *corba_storage_registry;
+ ECorbaStorageRegistry *corba_storage_registry; /* <aggregate> */
/* ::Activity interface handler. */
- EActivityHandler *activity_handler;
+ EActivityHandler *activity_handler; /* <aggregate> */
/* This object handles going off-line. If the pointer is not NULL, it
means we have a going-off-line process in progress. */
@@ -326,8 +326,6 @@ setup_activity_interface (EShell *shell)
bonobo_object_add_interface (BONOBO_OBJECT (shell),
BONOBO_OBJECT (activity_handler));
-
- bonobo_object_ref (BONOBO_OBJECT (activity_handler));
priv->activity_handler = activity_handler;
}
@@ -351,10 +349,6 @@ setup_corba_storages (EShell *shell)
bonobo_object_add_interface (BONOBO_OBJECT (shell),
BONOBO_OBJECT (corba_storage_registry));
- /* Notice that `bonobo_object_add_interface()' aggregates the two object's
- reference counts, so we need an extra ref here if we want to keep a separate
- pointer to the storage interface. */
- bonobo_object_ref (BONOBO_OBJECT (corba_storage_registry));
priv->corba_storage_registry = corba_storage_registry;
return TRUE;
@@ -548,10 +542,9 @@ view_destroy_cb (GtkObject *object,
shell->priv->views = g_list_remove (shell->priv->views, object);
if (shell->priv->views == NULL) {
- /* FIXME: This looks like a Bonobo bug to me. */
- bonobo_object_ref (BONOBO_OBJECT (shell));
+ /* bonobo_object_ref (BONOBO_OBJECT (shell)); */
gtk_signal_emit (GTK_OBJECT (shell), signals [NO_VIEWS_LEFT]);
- bonobo_object_unref (BONOBO_OBJECT (shell));
+ /* bonobo_object_unref (BONOBO_OBJECT (shell)); */
}
}
@@ -605,11 +598,9 @@ destroy (GtkObject *object)
g_list_free (priv->views);
- if (priv->corba_storage_registry != NULL)
- bonobo_object_unref (BONOBO_OBJECT (priv->corba_storage_registry));
-
- if (priv->activity_handler != NULL)
- bonobo_object_unref (BONOBO_OBJECT (priv->activity_handler));
+ /* No unreffing for these as they are aggregate. */
+ /* bonobo_object_unref (BONOBO_OBJECT (priv->corba_storage_registry)); */
+ /* bonobo_object_unref (BONOBO_OBJECT (priv->activity_handler)); */
/* FIXME. Maybe we should do something special here. */
if (priv->offline_handler != NULL)
diff --git a/shell/e-storage-set.c b/shell/e-storage-set.c
index 07b4e66378..e5715dde11 100644
--- a/shell/e-storage-set.c
+++ b/shell/e-storage-set.c
@@ -258,7 +258,7 @@ destroy (GtkObject *object)
gtk_object_unref (GTK_OBJECT (priv->folder_type_registry));
g_hash_table_foreach (priv->name_to_named_storage,
- (GHFunc) named_storage_destroy, NULL);
+ (GHFunc) name_to_named_storage_foreach_destroy, NULL);
g_hash_table_destroy (priv->name_to_named_storage);
g_free (priv);
diff --git a/shell/main.c b/shell/main.c
index 57e3d6cea0..40e6d0aaad 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -59,6 +59,9 @@ no_views_left_cb (EShell *shell, gpointer data)
/* FIXME: This is wrong. We should exit only when the shell is
destroyed. But refcounting is broken at present, so this is a
reasonable workaround for now. */
+
+ bonobo_object_unref (BONOBO_OBJECT (shell));
+
gtk_main_quit ();
}