[prev in list] [next in list] [prev in thread] [next in thread]
List: freedesktop-xorg
Subject: Re: [PATCH] xserver: add udev/systemd multi-seat support
From: Lennart Poettering <lennart () poettering ! net>
Date: 2011-09-27 15:52:20
Message-ID: 20110927155217.GA24758 () tango ! 0pointer ! de
[Download RAW message or body]
On Tue, 27.09.11 16:15, Lennart Poettering (lennart@poettering.net) wrote:
> Uhm, this sucks.
>
> But the fix should be easy: the calls to
> udev_monitor_filter_add_match_tag() just need to be skipped if they are
> not available, as they are an optimization only.
>
> I'll look into prepping a patch that adds an autoconf check for the
> call, and ifdefs it out if it isn't found. I don't have RHEL around, can
> I get you guys to test this patch for me then?
Attached is a simple patch that does this. I tested it on F16 to make
sure the calls are still executed when they are available. Untested on
old udev/RHEL to see if this actually does what is needed.
Lennart
--
Lennart Poettering - Red Hat, Inc.
["0001-udev-make-use-of-udev_enumerate_add_match_tag-only-w.patch" (text/x-diff)]
From 6949da474bda77edd1ece5299f6d7b975925b060 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Tue, 27 Sep 2011 17:46:29 +0200
Subject: [PATCH] udev: make use of udev_enumerate_add_match_tag() only when
it is available
udev_enumerate_add_match_tag() and udev_monitor_filter_add_match_tag()
are mostly optimizations, hence simply skip these calls if they are not
available in the installed version of libudev.
This should fix the build on older versions of udev.
Signed-off-by: Lennart Poettering <lennart@poettering.net>
---
config/udev.c | 4 ++++
configure.ac | 9 +++++++++
include/dix-config.h.in | 6 ++++++
3 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/config/udev.c b/config/udev.c
index 1ba0d50..e2b3726 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -285,8 +285,10 @@ config_udev_init(void)
udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "input", NULL);
udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "tty", NULL); /* \
For Wacom serial devices */
+#ifdef HAVE_UDEV_MONITOR_FILTER_ADD_MATCH_TAG
if (SeatId && strcmp(SeatId, "seat0"))
udev_monitor_filter_add_match_tag(udev_monitor, SeatId);
+#endif
if (udev_monitor_enable_receiving(udev_monitor)) {
ErrorF("config/udev: failed to bind the udev monitor\n");
@@ -300,8 +302,10 @@ config_udev_init(void)
udev_enumerate_add_match_subsystem(enumerate, "input");
udev_enumerate_add_match_subsystem(enumerate, "tty");
+#ifdef HAVE_UDEV_ENUMERATE_ADD_MATCH_TAG
if (SeatId && strcmp(SeatId, "seat0"))
udev_enumerate_add_match_tag(enumerate, SeatId);
+#endif
udev_enumerate_scan_devices(enumerate);
devices = udev_enumerate_get_list_entry(enumerate);
diff --git a/configure.ac b/configure.ac
index b0d2643..30716fb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -822,6 +822,15 @@ if test "x$CONFIG_UDEV" = xyes; then
AC_MSG_ERROR([udev configuration API requested, but libudev is not installed])
fi
AC_DEFINE(CONFIG_UDEV, 1, [Use libudev for input hotplug])
+
+ SAVE_LIBS=$LIBS
+ SAVE_CFLAGS=$CFLAGS
+ CFLAGS=$UDEV_CFLAGS
+ LIBS=$UDEV_LIBS
+ AC_CHECK_FUNCS([udev_monitor_filter_add_match_tag])
+ AC_CHECK_FUNCS([udev_enumerate_add_match_tag])
+ LIBS=$SAVE_LIBS
+ CFLAGS=$SAVE_CFLAGS
fi
dnl HAVE_DBUS is true if we actually have the D-Bus library, whereas
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 5facb11..2dcaf6b 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -402,6 +402,12 @@
/* Use libudev for input hotplug */
#undef CONFIG_UDEV
+/* Use udev_monitor_filter_add_match_tag() */
+#undef HAVE_UDEV_MONITOR_FILTER_ADD_MATCH_TAG
+
+/* Use udev_enumerate_add_match_tag() */
+#undef HAVE_UDEV_ENUMERATE_ADD_MATCH_TAG
+
/* Use D-Bus for input hotplug */
#undef CONFIG_NEED_DBUS
--
1.7.6.4
_______________________________________________
xorg@lists.freedesktop.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: freedesktop-xorg@progressive-comp.com
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic