yoz pushed a commit to branch master. http://git.enlightenment.org/misc/entrance.git/commit/?id=60ee7d4596a1cea9d376ea833bda5dd23881cd01
commit 60ee7d4596a1cea9d376ea833bda5dd23881cd01 Author: Michael Bouchaud <[email protected]> Date: Tue Sep 23 23:05:46 2014 +0000 wait for xserver end --- src/daemon/entrance.c | 4 ++-- src/daemon/entrance_xserver.c | 25 ++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/daemon/entrance.c b/src/daemon/entrance.c index de43162..1e924ff 100644 --- a/src/daemon/entrance.c +++ b/src/daemon/entrance.c @@ -352,6 +352,7 @@ main (int argc, char ** argv) if (entrance_user) { char *quit; + entrance_xserver_wait(); entrance_session_init(dname); entrance_session_end(entrance_user); entrance_session_shutdown(); @@ -361,8 +362,6 @@ main (int argc, char ** argv) unsetenv("ENTRANCE_QUIT"); PT("Last DE Session quit with error!\n"); } - PT("ending xserver\n"); - entrance_xserver_end(); _remove_lock(); PT("Entrance will quit, bye bye :).\n"); entrance_close_log(); @@ -466,6 +465,7 @@ main (int argc, char ** argv) PT("ending xserver\n"); kill(pid, SIGTERM); entrance_xserver_end(); + entrance_xserver_wait(); } else PT("No session to wait, exiting\n"); diff --git a/src/daemon/entrance_xserver.c b/src/daemon/entrance_xserver.c index bab3d5c..5af0f01 100644 --- a/src/daemon/entrance_xserver.c +++ b/src/daemon/entrance_xserver.c @@ -124,16 +124,35 @@ entrance_xserver_init(Entrance_X_Cb start, const char *dname) } void +entrance_xserver_wait(void) +{ + const char *xpid; + int pid; + + PT("xserver end"); + xpid = getenv("ENTRANCE_XPID"); + if (xpid) + { + pid = atoi(xpid); + while (waitpid(pid, NULL, WUNTRACED | WCONTINUED) > 0) + { + printf("."); + sleep(1); + } + unsetenv("ENTRANCE_XPID"); + } + printf("\n"); +} + +void entrance_xserver_end(void) { const char *xpid; PT("xserver end\n"); xpid = getenv("ENTRANCE_XPID"); - if (xpid) + if (xpid) kill(atoi(xpid), SIGTERM); - unsetenv("ENTRANCE_XPID"); - while (waitpid(-1, NULL, WNOHANG) > 0); } void --
