From 582f10f168b2124e8b1abfbfa2a8410e1868840d Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Thu, 10 Oct 2013 15:22:17 +0300 Subject: [PATCH] xorg-server: start via xorg-launch-helper services that depend on Xorg (such as ratpoison/xbmc) should wait with starting until Xorg is ready for X11 connections xorg-launch-helper is a simple solution. it starts and forks the Xorg server and listens for a signal from Xorg. At this point, the utility signals systemd READY through sd_notify(). At this point systemd will start units that have an explicit ordering configured to be after the xorg.service ... Oct 10 12:03:36 openelec systemd[1]: Reached target Multi-User System. Oct 10 12:03:36 openelec systemd[1]: Starting Xorg Server... Oct 10 12:03:39 openelec systemd[1]: Started Xorg Server. Oct 10 12:03:39 openelec systemd[1]: Starting Ratpoison Window Manager... Oct 10 12:03:39 openelec systemd[1]: Started Ratpoison Window Manager. Oct 10 12:03:39 openelec systemd[1]: Starting Graphical Interface. Oct 10 12:03:39 openelec systemd[1]: Reached target Graphical Interface. Oct 10 12:03:39 openelec systemd[1]: Starting XBMC user autostart script... Oct 10 12:03:39 openelec systemd[1]: Started XBMC user autostart script. Oct 10 12:03:39 openelec systemd[1]: Starting XBMC Media Center... Oct 10 12:03:39 openelec systemd[1]: Started XBMC Media Center. Oct 10 12:03:39 openelec systemd[1]: Starting XBMC Mediacenter Interface. Oct 10 12:03:39 openelec systemd[1]: Reached target XBMC Mediacenter Interface. Oct 10 12:03:39 openelec systemd[1]: Startup finished in 2.556s (kernel) + 5.194s (userspace) = 7.750s. ... --- packages/x11/xserver/xorg-server/package.mk | 2 +- packages/x11/xserver/xorg-server/system.d/xorg.service | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/x11/xserver/xorg-server/package.mk b/packages/x11/xserver/xorg-server/package.mk index 83ad1e6e6c..dad8ae8621 100644 --- a/packages/x11/xserver/xorg-server/package.mk +++ b/packages/x11/xserver/xorg-server/package.mk @@ -25,7 +25,7 @@ PKG_ARCH="any" PKG_LICENSE="OSS" PKG_SITE="http://www.X.org" PKG_URL="http://xorg.freedesktop.org/archive/individual/xserver/$PKG_NAME-$PKG_VERSION.tar.bz2" -PKG_DEPENDS="libpciaccess libX11 libXfont libdrm openssl freetype pixman systemd" +PKG_DEPENDS="libpciaccess libX11 libXfont libdrm openssl freetype pixman systemd xorg-launch-helper" PKG_BUILD_DEPENDS_TARGET="toolchain util-macros font-util fontsproto randrproto recordproto renderproto dri2proto fixesproto damageproto scrnsaverproto videoproto inputproto xf86dgaproto xf86vidmodeproto xf86driproto xf86miscproto glproto libpciaccess libX11 libXfont libxkbfile libdrm openssl freetype pixman fontsproto systemd" PKG_PRIORITY="optional" PKG_SECTION="x11/xserver" diff --git a/packages/x11/xserver/xorg-server/system.d/xorg.service b/packages/x11/xserver/xorg-server/system.d/xorg.service index bc1b45fe9b..faa5ca9b2a 100644 --- a/packages/x11/xserver/xorg-server/system.d/xorg.service +++ b/packages/x11/xserver/xorg-server/system.d/xorg.service @@ -6,9 +6,10 @@ After=multi-user.target ConditionPathExists=/run/openelec/xorg-settings.conf [Service] +Type=notify EnvironmentFile=/run/openelec/xorg-settings.conf EnvironmentFile=-/run/openelec/debug/xorg.conf -ExecStart=/usr/bin/Xorg vt01 $XORG_ARGS $XORG_DEBUG +ExecStart=/usr/bin/xorg-launch-helper vt01 $XORG_ARGS $XORG_DEBUG Restart=always RestartSec=2 StartLimitInterval=0