diff options
Diffstat (limited to 'extra/slim/restart.patch')
-rw-r--r-- | extra/slim/restart.patch | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/extra/slim/restart.patch b/extra/slim/restart.patch deleted file mode 100644 index 4e5049000..000000000 --- a/extra/slim/restart.patch +++ /dev/null @@ -1,144 +0,0 @@ -http://developer.berlios.de/patch/?func=detailpatch&patch_id=2378&group_id=2663 - - -diff -aur slim-1.3.2.b/app.cpp slim-1.3.2.c/app.cpp ---- slim-1.3.2.b/app.cpp 2010-08-21 15:10:48.579631179 +0200 -+++ slim-1.3.2.c/app.cpp 2010-08-21 15:11:03.946389843 +0200 -@@ -104,6 +104,11 @@ - - extern App* LoginApp; - -+int xioerror(Display *disp) { -+ LoginApp->RestartServer(); -+ return 0; -+} -+ - void CatchSignal(int sig) { - cerr << APPNAME << ": unexpected signal " << sig << endl; - -@@ -114,19 +119,6 @@ - exit(ERR_EXIT); - } - -- --void AlarmSignal(int sig) { -- int pid = LoginApp->GetServerPID(); -- if(waitpid(pid, NULL, WNOHANG) == pid) { -- LoginApp->StopServer(); -- LoginApp->RemoveLock(); -- exit(OK_EXIT); -- } -- signal(sig, AlarmSignal); -- alarm(2); --} -- -- - void User1Signal(int sig) { - signal(sig, User1Signal); - } -@@ -277,7 +269,6 @@ - signal(SIGHUP, CatchSignal); - signal(SIGPIPE, CatchSignal); - signal(SIGUSR1, User1Signal); -- signal(SIGALRM, AlarmSignal); - - #ifndef XNEST_DEBUG - if (!force_nodaemon && cfg->getOption("daemon") == "yes") { -@@ -298,7 +289,6 @@ - - CreateServerAuth(); - StartServer(); -- alarm(2); - #endif - - } -@@ -614,6 +604,8 @@ - int status; - while (wpid != pid) { - wpid = wait(&status); -+ if (wpid == ServerPID) -+ xioerror(Dpy); // Server died, simulate IO error - } - if (WIFEXITED(status) && WEXITSTATUS(status)) { - LoginPanel->Message("Failed to execute login command"); -@@ -659,9 +651,6 @@ - - - void App::Reboot() { -- // Stop alarm clock -- alarm(0); -- - #ifdef USE_PAM - try{ - pam.end(); -@@ -684,9 +673,6 @@ - - - void App::Halt() { -- // Stop alarm clock -- alarm(0); -- - #ifdef USE_PAM - try{ - pam.end(); -@@ -772,6 +758,7 @@ - - StopServer(); - RemoveLock(); -+ while (waitpid(-1, NULL, WNOHANG) > 0); // Collects all dead childrens - Run(); - } - -@@ -842,6 +829,7 @@ - - for(cycles = 0; cycles < ncycles; cycles++) { - if((Dpy = XOpenDisplay(DisplayName))) { -+ XSetIOErrorHandler(xioerror); - return 1; - } else { - if(!ServerTimeout(1, (char *) "X server to begin accepting connections")) -@@ -926,9 +914,6 @@ - ServerPID = -1; - break; - } -- alarm(15); -- pause(); -- alarm(0); - - // Wait for server to start up - if(WaitForServer() == 0) { -@@ -963,15 +948,12 @@ - - - void App::StopServer() { -- // Stop alars clock and ignore signals -- alarm(0); - signal(SIGQUIT, SIG_IGN); - signal(SIGINT, SIG_IGN); - signal(SIGHUP, SIG_IGN); - signal(SIGPIPE, SIG_IGN); - signal(SIGTERM, SIG_DFL); - signal(SIGKILL, SIG_DFL); -- signal(SIGALRM, SIG_DFL); - - // Catch X error - XSetIOErrorHandler(IgnoreXIO); -diff -aur slim-1.3.2.b/app.h slim-1.3.2.c/app.h ---- slim-1.3.2.b/app.h 2010-08-21 15:10:40.499582804 +0200 -+++ slim-1.3.2.c/app.h 2010-08-21 15:11:03.946389843 +0200 -@@ -34,6 +34,7 @@ - ~App(); - void Run(); - int GetServerPID(); -+ void RestartServer(); - void StopServer(); - - bool serverStarted; -@@ -49,7 +50,6 @@ - void Console(); - void Exit(); - void KillAllClients(Bool top); -- void RestartServer(); - void ReadConfig(); - void OpenLog(); - void CloseLog(); |