meta_quit: ignore repeated calls after it's already quitting

meta_run() calls meta_finalize() after the main loop exits, which ends
up calling meta_display_close(), which calls
meta_quit(META_EXIT_SUCCESS), meaning that any exit status passed to
the original meta_quit() call is lost.

Fix this by ignoring meta_quit() calls after the main loop is no
longer running.

https://bugzilla.gnome.org/show_bug.cgi?id=652010
This commit is contained in:
Dan Winship 2011-06-06 16:18:09 -04:00
parent 9804841adb
commit c70087db0c

View File

@ -571,11 +571,12 @@ meta_run (void)
void void
meta_quit (MetaExitCode code) meta_quit (MetaExitCode code)
{ {
meta_exit_code = code;
if (g_main_loop_is_running (meta_main_loop)) if (g_main_loop_is_running (meta_main_loop))
{
meta_exit_code = code;
g_main_loop_quit (meta_main_loop); g_main_loop_quit (meta_main_loop);
} }
}
/** /**
* Called on pref changes. (One of several functions of its kind and purpose.) * Called on pref changes. (One of several functions of its kind and purpose.)