Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=xorgtesting.git;a=commitdiff;h=7e8e2d9c6f0530e6fd94d8e346713daa7d23e9e4

commit 7e8e2d9c6f0530e6fd94d8e346713daa7d23e9e4
Author: bouleetbil <bouleet...@frogdev.info>
Date:   Mon Aug 22 15:57:19 2011 +0200

xorg-server-1.10.4-2-x86_64
*Add support for multi-seat-aware input device hotplugging

diff --git a/source/x11/xorg-server/FrugalBuild 
b/source/x11/xorg-server/FrugalBuild
index d9bae4b..8ebd09b 100644
--- a/source/x11/xorg-server/FrugalBuild
+++ b/source/x11/xorg-server/FrugalBuild
@@ -9,7 +9,7 @@ USE_SERVERDMX=${USE_SERVERDMX:-"y"}

pkgname=xorg-server
pkgver=1.10.4
-pkgrel=1
+pkgrel=2
pkgdesc="Modular X.Org X Server"
groups=('x11' 'xorg-core')
archs=('i686' 'x86_64' 'ppc' 'arm')
@@ -49,13 +49,15 @@ source=("${source[@]}" \
xorg-server-1.9-nouveau-default.patch \
desktop \
10-evdev.conf \
-       20-synaptics.conf)
+       20-synaptics.conf \
+       config-add-udev-systemd.diff)

sha1sums=("${sha1sums[@]}" \
'bda6f333b53fcc2e1d823364a1e12e2061a66700' \
'905cc57547421ff3ca77ec1c8e6898a7a414346f' \
'3fa8d717bce03296e6b097279a410d9672000b08' \
-         '6c0156d129ddd2fb5277b76af1738298c2d09d4d')
+         '6c0156d129ddd2fb5277b76af1738298c2d09d4d' \
+          '38788f456e839416b64d5cf179a14cc1d2328ae7')

Fconfopts="${Fconfopts[@]}
--disable-static \
diff --git a/source/x11/xorg-server/config-add-udev-systemd.diff 
b/source/x11/xorg-server/config-add-udev-systemd.diff
new file mode 100644
index 0000000..480621b
--- /dev/null
+++ b/source/x11/xorg-server/config-add-udev-systemd.diff
@@ -0,0 +1,224 @@
+From 8d9371f9035654cbb694ad51cf384a78b044bb9f Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lenn...@poettering.net>
+Date: Mon, 18 Jul 2011 21:19:23 +0200
+Subject: [PATCH] config: add udev/systemd multi-seat support
+
+Add support for multi-seat-aware input device hotplugging. This
+implements the multi-seat scheme explained here:
+
+http://www.freedesktop.org/wiki/Software/systemd/multiseat
+
+This introduces a new X server switch "-seat" which allows configuration
+of the seat to enumerate hotplugging devices on. If specified the value
+of this parameter will also be exported as root window property
+Xorg_Seat.
+
+To properly support input hotplugging devices need to be tagged in udev
+according to the seat they are on. Untagged devices are assumed to be on
+the default seat "seat0". If no "-seat" parameter is passed only devices
+on "seat0" are used. This means that the new scheme is perfectly
+compatible with existing setups which have no tagged input devices.
+
+Note that the -seat switch takes a completely generic identifier, and
+that it has no effect on non-Linux systems. In fact, on other OSes a
+completely different identifier scheme for seats could be used but still
+be exposed with the Xorg_Seat and -seat.
+
+I tried to follow the coding style of the surrounding code blocks if
+there was any one could follow.
+
+Signed-off-by: Lennart Poettering <lenn...@poettering.net>
+Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
+
+Conflicts:
+
+       config/udev.c
+
+Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
+---
+ config/udev.c                |   19 +++++++++++++++++++
+ doc/man/Xserver.man          |    6 ++++++
+ hw/xfree86/common/xf86Init.c |   19 +++++++++++++++++++
+ include/globals.h            |    2 +-
+ include/xserver-properties.h |    3 +++
+ os/utils.c                   |   10 ++++++++++
+ 6 files changed, 58 insertions(+), 1 deletions(-)
+
+diff --git a/config/udev.c b/config/udev.c
+index 9ac34ee..ca978b0 100644
+--- a/config/udev.c
++++ b/config/udev.c
+@@ -35,6 +35,7 @@
+ #include "hotplug.h"
+ #include "config-backends.h"
+ #include "os.h"
++#include "globals.h"
+
+ #define UDEV_XKB_PROP_KEY "xkb"
+
+@@ -65,6 +66,7 @@ device_added(struct udev_device *udev_device)
+     struct udev_list_entry *set, *entry;
+     struct udev_device *parent;
+     int rc;
++    const char *dev_seat;
+
+     path = udev_device_get_devnode(udev_device);
+
+@@ -73,6 +75,16 @@ device_added(struct udev_device *udev_device)
+     if (!path || !syspath)
+         return;
+
++    dev_seat = udev_device_get_property_value(udev_device, "ID_SEAT");
++    if (!dev_seat)
++        dev_seat = "seat0";
++
++    if (SeatId && strcmp(dev_seat, SeatId))
++        return;
++
++    if (!SeatId && strcmp(dev_seat, "seat0"))
++        return;
++
+     if (!udev_device_get_property_value(udev_device, "ID_INPUT")) {
+         LogMessageVerb(X_INFO, 10,
+                        "config/udev: ignoring device %s without "
+@@ -283,6 +295,9 @@ config_udev_init(void)
+     if (!udev_monitor)
+         return 0;
+
++    if (SeatId && strcmp(SeatId, "seat0"))
++        udev_monitor_filter_add_match_tag(udev_monitor, SeatId);
++
+     if (udev_monitor_enable_receiving(udev_monitor)) {
+         ErrorF("config/udev: failed to bind the udev monitor\n");
+         return 0;
+@@ -291,6 +306,10 @@ config_udev_init(void)
+     enumerate = udev_enumerate_new(udev);
+     if (!enumerate)
+         return 0;
++
++    if (SeatId && strcmp(SeatId, "seat0"))
++        udev_enumerate_add_match_tag(enumerate, SeatId);
++
+     udev_enumerate_scan_devices(enumerate);
+     devices = udev_enumerate_get_list_entry(enumerate);
+     udev_list_entry_foreach(device, devices) {
+diff --git a/doc/man/Xserver.man b/doc/man/Xserver.man
+index b725949..8d23894 100644
+--- a/doc/man/Xserver.man
++++ b/doc/man/Xserver.man
+@@ -220,6 +220,12 @@ sets screen-saver timeout time in minutes.
+ .B \-su
+ disables save under support on all screens.
+ .TP 8
++.B \-seat \fIseat\fP
++seat to run on. Takes a string identifying a seat in a platform
++specific syntax. On platforms which support this feature this may be
++used to limit the server to expose only a specific subset of devices
++connected to the system.
++.TP 8
+ .B \-t \fInumber\fP
+ sets pointer acceleration threshold in pixels (i.e. after how many pixels
+ pointer acceleration should take effect).
+diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
+index 0b36163..6dbbd77 100644
+--- a/hw/xfree86/common/xf86Init.c
++++ b/hw/xfree86/common/xf86Init.c
+@@ -80,6 +80,7 @@
+ #include "xf86Bus.h"
+ #include "xf86VGAarbiter.h"
+ #include "globals.h"
++#include "xserver-properties.h"
+
+ #ifdef DPMSExtension
+ #include <X11/extensions/dpmsconst.h>
+@@ -654,6 +655,24 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
+       }
+     }
+
++    if (SeatId) {
++        Atom SeatAtom;
++
++        SeatAtom = MakeAtom(SEAT_ATOM_NAME, sizeof(SEAT_ATOM_NAME) - 1, TRUE);
++
++        for (i = 0; i < xf86NumScreens; i++) {
++            int ret;
++
++            ret = xf86RegisterRootWindowProperty(xf86Screens[i]->scrnIndex,
++                                                 SeatAtom, XA_STRING, 8,
++                                                 strlen(SeatId)+1, SeatId );
++            if (ret != Success) {
++                xf86DrvMsg(xf86Screens[i]->scrnIndex, X_WARNING,
++                           "Failed to register seat property\n");
++            }
++        }
++    }
++
+     /* If a screen uses depth 24, show what the pixmap format is */
+     for (i = 0; i < xf86NumScreens; i++) {
+       if (xf86Screens[i]->depth == 24) {
+diff --git a/include/globals.h b/include/globals.h
+index 8b80a65..17bca82 100644
+--- a/include/globals.h
++++ b/include/globals.h
+@@ -21,7 +21,7 @@ extern _X_EXPORT int defaultColorVisualClass;
+
+ extern _X_EXPORT int GrabInProgress;
+ extern _X_EXPORT Bool noTestExtensions;
+-
++extern _X_EXPORT char *SeatId;
+ extern _X_EXPORT char *ConnectionInfo;
+
+ #ifdef DPMSExtension
+diff --git a/include/xserver-properties.h b/include/xserver-properties.h
+index c6259ae..a0936a5 100644
+--- a/include/xserver-properties.h
++++ b/include/xserver-properties.h
+@@ -30,6 +30,9 @@
+  * byte-ordering. */
+ #define XATOM_FLOAT "FLOAT"
+
++/* STRING. Seat name of this display */
++#define SEAT_ATOM_NAME "Xorg_Seat"
++
+ /* BOOL. 0 - device disabled, 1 - device enabled */
+ #define XI_PROP_ENABLED      "Device Enabled"
+ /* BOOL. If present, device is a virtual XTEST device */
+diff --git a/os/utils.c b/os/utils.c
+index 36cb46f..e8ecb71 100644
+--- a/os/utils.c
++++ b/os/utils.c
+@@ -201,6 +201,8 @@ Bool PanoramiXExtensionDisabledHack = FALSE;
+
+ int auditTrailLevel = 1;
+
++char *SeatId = NULL;
++
+ #if defined(SVR4) || defined(__linux__) || defined(CSRG_BASED)
+ #define HAS_SAVED_IDS_AND_SETEUID
+ #endif
+@@ -511,6 +513,7 @@ void UseMsg(void)
+     ErrorF("-render [default|mono|gray|color] set render color alloc 
policy\n");
+     ErrorF("-retro                 start with classic stipple and cursor\n");
+     ErrorF("-s #                   screen-saver timeout (minutes)\n");
++    ErrorF("-seat string           seat to run on\n");
+     ErrorF("-t #                   default pointer threshold (pixels/t)\n");
+     ErrorF("-terminate             terminate at server reset\n");
+     ErrorF("-to #                  connection time out\n");
+@@ -802,6 +805,13 @@ ProcessCommandLine(int argc, char *argv[])
+           else
+               UseMsg();
+       }
++      else if ( strcmp( argv[i], "-seat") == 0)
++      {
++          if(++i < argc)
++              SeatId = argv[i];
++          else
++              UseMsg();
++      }
+       else if ( strcmp( argv[i], "-t") == 0)
+       {
+           if(++i < argc)
+--
+1.7.6
+
+
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to