summaryrefslogtreecommitdiff
path: root/src/nautilus-main.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2006-11-03 16:34:12 +0000
committerAlexander Larsson <alexl@src.gnome.org>2006-11-03 16:34:12 +0000
commit11ad437c16fa21885b19a1ce9b9ab77ed39608da (patch)
treea5566dadc53ee0633529bd58c8add5b8bbec5508 /src/nautilus-main.c
parent01784c45de098691507a1abf7b68195bd2ebd545 (diff)
downloadnautilus-11ad437c16fa21885b19a1ce9b9ab77ed39608da.tar.gz
Always use the in-process metafile factory. We don't need it oop, since
2006-11-03 Alexander Larsson <alexl@redhat.com> * libnautilus-private/nautilus-directory-metafile.c: Always use the in-process metafile factory. We don't need it oop, since nautilus is single process these days. This fixes some strange races with bonobo-activation that caused #351713 * src/nautilus-application.[ch]: * src/nautilus-shell.h: Change the way we use bonobo-activation to get the NautilusShell so that we don't rely on bonobo-activation-server to spawn nautilus, as this could lead to some strange duplicate processes. We now directly try to register the app-wide shell object with bonobo-activation manually and activate it with Bonobo_ACTIVATION_FLAG_EXISTING_ONLY. * src/nautilus-shell.c: Handle all corba calls from the NautilusShell in an idle handler. This fixes some crashes where we reentered badly into e.g. quit when calling gconf. * src/nautilus-main.c: Since we now handle the initial open_window shell calls via an idle we need to delay until idle time to know if we can quit or not.
Diffstat (limited to 'src/nautilus-main.c')
-rw-r--r--src/nautilus-main.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/nautilus-main.c b/src/nautilus-main.c
index e9848d46a..5b0669193 100644
--- a/src/nautilus-main.c
+++ b/src/nautilus-main.c
@@ -108,6 +108,15 @@ event_loop_unregister (GtkObject *object)
}
}
+static gboolean
+initial_event_loop_needed (gpointer data)
+{
+ if (!is_event_loop_needed ()) {
+ eel_gtk_main_quit_all ();
+ }
+ return FALSE;
+}
+
void
nautilus_main_event_loop_register (GtkObject *object)
{
@@ -367,9 +376,11 @@ main (int argc, char *argv[])
remaining);
g_free (startup_id_copy);
- if (is_event_loop_needed ()) {
- gtk_main ();
- }
+ /* The application startup does things in an idle, so
+ we need to check whether the main loop is needed in an idle
+ */
+ g_idle_add (initial_event_loop_needed, NULL);
+ gtk_main ();
}
/* This has to be done before gnome_vfs_shutdown, because