cedric pushed a commit to branch master.
commit cd28bc814552bf52bb670e108343b23d48fa839e
Author: Cedric Bail <[email protected]>
Date: Thu Mar 28 23:53:24 2013 +0900
e: add support for systemd user session.
---
ChangeLog | 4 ++++
NEWS | 1 +
configure.ac | 7 +++++++
data/Makefile.am | 4 +++-
data/units/Makefile.am | 9 +++++++++
data/units/e18.service | 27 +++++++++++++++++++++++++
m4/pkg_var.m4 | 14 +++++++++++++
src/bin/e_main.c | 55 ++++++++++++++++++++++++++------------------------
8 files changed, 94 insertions(+), 27 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b040cf5..2b19cb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-03-28 Cedric Bail
+
+ * added support for systemd user session.
+
2013-03-11 Mike Blumenkrantz
* menus are now drawn directly on the compositor canvas
diff --git a/NEWS b/NEWS
index d8cf3ac..c5d08c7 100644
--- a/NEWS
+++ b/NEWS
@@ -45,6 +45,7 @@ Additions:
* new option for disabling all pointer warps
* added option for preventing all keyboard layout changes
* added option for remembering filemanager windows globally
+ * Added support for systemd user session
Changes:
Modules:
diff --git a/configure.ac b/configure.ac
index ef09d46..34e68dd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -205,6 +205,12 @@ if test "x${have_bluetooth}" = "xyes"; then
AC_DEFINE_UNQUOTED([HAVE_BLUETOOTH], [1], [Bluetooth is there])
fi
+# Detect systemd user session directory properly
+EFL_PKG_CHECK_VAR([USER_SESSION_DIR], [systemd], [systemduserunitdir],
+ [have_systemd_user_session="yes"], [have_systemd_user_session="no"])
+AM_CONDITIONAL([HAVE_SYSTEMD_USER_SESSION], [test
"x${have_systemd_user_session}" = "xyes"])
+AC_SUBST([USER_SESSION_DIR])
+
execinfo_libs=""
AC_CHECK_HEADERS([execinfo.h], [have_execinfo="yes"], [have_execinfo="no"])
if test "x${have_execinfo}" = "xyes" ; then
@@ -1009,6 +1015,7 @@ data/etc/Makefile
data/etc/sysactions.conf
data/icons/Makefile
data/backgrounds/Makefile
+data/units/Makefile
doc/Makefile
doc/Doxyfile
doc/e.dox
diff --git a/data/Makefile.am b/data/Makefile.am
index f320e9d..dbd5a42 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -10,4 +10,6 @@ icons \
backgrounds \
flags \
favorites \
-desktop
+desktop \
+units
+
diff --git a/data/units/Makefile.am b/data/units/Makefile.am
new file mode 100644
index 0000000..04ed87f
--- /dev/null
+++ b/data/units/Makefile.am
@@ -0,0 +1,9 @@
+AUTOMAKE_OPTIONS = 1.4 foreign
+MAINTAINERCLEANFILES = Makefile.in
+
+if HAVE_SYSTEMD_USER_SESSION
+unitsdir = $(USER_SESSION_DIR)
+units_DATA = e18.service
+endif
+
+EXTRA_DIST = $(units_DATA)
diff --git a/data/units/e18.service b/data/units/e18.service
new file mode 100644
index 0000000..79feb40
--- /dev/null
+++ b/data/units/e18.service
@@ -0,0 +1,27 @@
+[Unit]
+Description=Enlightenment 17 service
+Before=end.target
+After=xorg.target
+Requires=xorg.target
+Requires=dbus.socket
+Requires=pulseaudio.service
+Requires=ssh-agent.service
+AllowIsolate=true
+
+[Service]
+Type=notify
+#Environment=PATH=uncomment:to:override:your:PATH
+Environment=E_START=enlightenment
+ExecStart=/usr/bin/enlightenment
+Restart=always
+RestartPreventExitStatus=0
+RestartSec=2
+StartLimitInterval=30
+StartLimitBurst=7
+KillMode=process
+WatchdogSec=1
+TimeoutSec=1
+NotifyAccess=all
+
+[Install]
+WantedBy=wm.target
diff --git a/m4/pkg_var.m4 b/m4/pkg_var.m4
new file mode 100644
index 0000000..3d0a309
--- /dev/null
+++ b/m4/pkg_var.m4
@@ -0,0 +1,14 @@
+# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# -------------------------------------------
+# Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([EFL_PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])# PKG_CHECK_VAR
+
diff --git a/src/bin/e_main.c b/src/bin/e_main.c
index 2df3d96..a6cc382 100644
--- a/src/bin/e_main.c
+++ b/src/bin/e_main.c
@@ -187,32 +187,35 @@ main(int argc, char **argv)
/* trap deadly bug signals and allow some form of sane recovery */
/* or ability to gdb attach and debug at this point - better than your */
/* wm/desktop vanishing and not knowing what happened */
- TS("Signal Trap");
- action.sa_sigaction = e_sigseg_act;
- action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
- sigemptyset(&action.sa_mask);
- sigaction(SIGSEGV, &action, NULL);
-
- action.sa_sigaction = e_sigill_act;
- action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
- sigemptyset(&action.sa_mask);
- sigaction(SIGILL, &action, NULL);
-
- action.sa_sigaction = e_sigfpe_act;
- action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
- sigemptyset(&action.sa_mask);
- sigaction(SIGFPE, &action, NULL);
-
- action.sa_sigaction = e_sigbus_act;
- action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
- sigemptyset(&action.sa_mask);
- sigaction(SIGBUS, &action, NULL);
-
- action.sa_sigaction = e_sigabrt_act;
- action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
- sigemptyset(&action.sa_mask);
- sigaction(SIGABRT, &action, NULL);
- TS("Signal Trap Done");
+ if (!getenv("NOTIFY_SOCKET"))
+ {
+ TS("Signal Trap");
+ action.sa_sigaction = e_sigseg_act;
+ action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
+ sigemptyset(&action.sa_mask);
+ sigaction(SIGSEGV, &action, NULL);
+
+ action.sa_sigaction = e_sigill_act;
+ action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
+ sigemptyset(&action.sa_mask);
+ sigaction(SIGILL, &action, NULL);
+
+ action.sa_sigaction = e_sigfpe_act;
+ action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
+ sigemptyset(&action.sa_mask);
+ sigaction(SIGFPE, &action, NULL);
+
+ action.sa_sigaction = e_sigbus_act;
+ action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
+ sigemptyset(&action.sa_mask);
+ sigaction(SIGBUS, &action, NULL);
+
+ action.sa_sigaction = e_sigabrt_act;
+ action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
+ sigemptyset(&action.sa_mask);
+ sigaction(SIGABRT, &action, NULL);
+ TS("Signal Trap Done");
+ }
t = ecore_time_unix_get();
s = getenv("E_START_TIME");
--
------------------------------------------------------------------------------
Own the Future-Intel(R) Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest. Compete
for recognition, cash, and the chance to get your game on Steam.
$5K grand prize plus 10 genre and skill prizes. Submit your demo
by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2