diff options
author | Alexander Larsson <alexl@redhat.com> | 2006-11-03 16:34:12 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2006-11-03 16:34:12 +0000 |
commit | 11ad437c16fa21885b19a1ce9b9ab77ed39608da (patch) | |
tree | a5566dadc53ee0633529bd58c8add5b8bbec5508 /src/nautilus-main.c | |
parent | 01784c45de098691507a1abf7b68195bd2ebd545 (diff) | |
download | nautilus-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.c | 17 |
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 |