summaryrefslogtreecommitdiff
path: root/extra/slim/slim-1.3.6-systemd-session.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/slim/slim-1.3.6-systemd-session.patch')
-rw-r--r--extra/slim/slim-1.3.6-systemd-session.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/extra/slim/slim-1.3.6-systemd-session.patch b/extra/slim/slim-1.3.6-systemd-session.patch
new file mode 100644
index 000000000..be5f52982
--- /dev/null
+++ b/extra/slim/slim-1.3.6-systemd-session.patch
@@ -0,0 +1,29 @@
+--- a/app.cpp 2013-10-23 16:19:57.074100282 -0400
++++ b/app.cpp 2013-10-23 16:33:13.302122574 -0400
+@@ -829,8 +829,13 @@
+
+ StopServer();
+ RemoveLock();
+- while (waitpid(-1, NULL, WNOHANG) > 0); /* Collects all dead childrens */
+- Run();
++ if (force_nodaemon) {
++ delete LoginPanel;
++ exit(ERR_EXIT); /* use ERR_EXIT so that systemd's RESTART=on-failure works */
++ } else {
++ while (waitpid(-1, NULL, WNOHANG) > 0); /* Collects all dead childrens */
++ Run();
++ }
+ }
+
+ void App::KillAllClients(Bool top) {
+--- a/slim.service 2013-10-23 16:19:57.074100282 -0400
++++ b/slim.service 2013-10-23 16:45:14.901142776 -0400
+@@ -4,6 +4,7 @@
+
+ [Service]
+ ExecStart=/usr/bin/slim -nodaemon
++Restart=on-failure
+
+ [Install]
+ Alias=display-manager.service
+Common subdirectories: slim-1.3.6/themes and slim-1.3.6.new/themes