diff --git a/src/shell-app.c b/src/shell-app.c index b383d9ca5..335147c19 100644 --- a/src/shell-app.c +++ b/src/shell-app.c @@ -1196,6 +1196,14 @@ app_child_setup (gpointer user_data) } #endif +static void +wait_pid (GDesktopAppInfo *appinfo, + GPid pid, + gpointer user_data) +{ + g_child_watch_add (pid, (GChildWatchFunc) g_spawn_close_pid, NULL); +} + /** * shell_app_launch: * @timestamp: Event timestamp, or 0 for current event timestamp @@ -1234,13 +1242,13 @@ shell_app_launch (ShellApp *app, ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL, context, - G_SPAWN_SEARCH_PATH, + G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, #ifdef HAVE_SYSTEMD app_child_setup, (gpointer)shell_app_get_id (app), #else NULL, NULL, #endif - NULL, NULL, + wait_pid, NULL, error); g_object_unref (context);