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

Reply via email to