[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'ubuntu'



 ChangeLog                               |  338 +++++++++++++++++++
 Xext/sync.c                             |    7 
 Xi/exevents.c                           |   22 +
 Xi/xichangehierarchy.c                  |    4 
 Xi/xipassivegrab.c                      |    6 
 config/hal.c                            |   16 
 config/udev.c                           |   15 
 configure.ac                            |    6 
 debian/changelog                        |   22 +
 debian/control                          |    4 
 debian/patches/02_kbsd-input-devd.diff  |  551 ++++++++++++++++++++++++++++++++
 debian/patches/series                   |    1 
 debian/rules                            |   10 
 dix/devices.c                           |    1 
 dix/dixfonts.c                          |    9 
 dix/getevents.c                         |    2 
 dix/inpututils.c                        |    3 
 hw/xfree86/common/xf86Helper.c          |    7 
 hw/xquartz/GL/indirect.c                |    4 
 hw/xquartz/X11Application.m             |   13 
 hw/xquartz/X11Controller.m              |    2 
 hw/xquartz/applewm.c                    |   16 
 hw/xquartz/darwinfb.h                   |    2 
 hw/xquartz/mach-startup/stub.c          |    4 
 hw/xquartz/quartz.c                     |    3 
 hw/xquartz/xpr/appledri.c               |   10 
 hw/xquartz/xpr/x-hook.c                 |   27 -
 os/utils.c                              |   27 +
 test/xi2/protocol-xipassivegrabdevice.c |    9 
 29 files changed, 1080 insertions(+), 61 deletions(-)

New commits:
commit ba11fa8a18828b5fda0b75fa63e616b5e89eda5c
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Wed Apr 9 15:36:09 2014 +0200

    Merge rc1 from released debian unstable.

diff --git a/debian/changelog b/debian/changelog
index ab7ac06..e4fcd31 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xorg-server (2:1.15.0.901-1ubuntu1) UNRELEASED; urgency=low
+
+  * Merge rc1 from released debian unstable.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 09 Apr 2014 15:31:23 +0200
+
 xorg-server (2:1.15.0.901-1) unstable; urgency=medium
 
   [ Robert Millan ]

commit 97e46f6721051789d490859a30f77c3c562e3af3
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Mar 31 12:21:00 2014 +0200

    Upload to unstable

diff --git a/debian/changelog b/debian/changelog
index 84b4a26..95966e2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.15.0.901-1) UNRELEASED; urgency=medium
+xorg-server (2:1.15.0.901-1) unstable; urgency=medium
 
   [ Robert Millan ]
   * Add devd input backend for kFreeBSD, and use it instead of hal (closes:
@@ -7,7 +7,7 @@ xorg-server (2:1.15.0.901-1) UNRELEASED; urgency=medium
   [ Julien Cristau ]
   * New upstream release
 
- -- Julien Cristau <jcristau@debian.org>  Mon, 31 Mar 2014 12:12:51 +0200
+ -- Julien Cristau <jcristau@debian.org>  Mon, 31 Mar 2014 12:19:57 +0200
 
 xorg-server (2:1.15.0-2) unstable; urgency=medium
 

commit b1e1771a10240d14c92ae61542a3032e6bd2b817
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Mar 31 12:16:31 2014 +0200

    Bump changelogs to 1.15.0.901

diff --git a/ChangeLog b/ChangeLog
index 109ce8c..1ff4f4e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,341 @@
+commit 300458fb8ad0a7957e941cd65f47d204c7886e22
+Author: Matt Dew <marcoz@osource.org>
+Date:   Fri Mar 21 23:49:41 2014 -0600
+
+    Bump bersion to 1.15.0.901
+
+commit c971864565eb114e4b34f17b0d2244e8e6e1e005
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Wed Feb 26 07:54:56 2014 +1000
+
+    config: search for PnPID on all parents (#75513)
+    
+    The PnPID for a device may not be on the immediate parent, so search up the
+    device tree until we find one.
+    
+    X.Org Bug 75513 <http://bugs.freedesktop.org/show_bug.cgi?id=75513>
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Tested-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
+    (cherry picked from commit 795066477ee81b5b82e490eac8bed6b656d01f17)
+
+commit 2cbbe80efc485d2d05b06efe1e2e01f81f3e06f6
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Thu Feb 20 13:18:05 2014 +1000
+
+    Xi: check for invalid modifiers for XI2 passive grabs
+    
+    The other values are checked correctly, but if a modifier was outside the
+    allowed range, it would go unnoticed and cause a out-of-bounds read error for
+    any mask equal or larger than 256. The DetailRec where we store the grab masks
+    is only sized to 8 * sizeof(Mask).
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+    (cherry picked from commit 0f10cfd4b903d4db293ec47c8a9a0d8b33965803)
+
+commit b3656c0b52d57333c64f932676a237d0f3a97f36
+Author: Mark Kettenis <kettenis@openbsd.org>
+Date:   Sun Dec 15 14:31:10 2013 +0100
+
+    sync: Avoid ridiculously long timeouts
+    
+    On OpenBSD, passing a timeout longer than 100000000 seconds to select(2) will
+    make it fail with EINVAL.  As this is original 4.4BSD behaviour it is not
+    inconceivable that other systems suffer from the same problem.  And Linux,
+    though not suffering from any 4.4BSD heritage, briefly did something similar:
+    
+    <https://lkml.org/lkml/2012/8/31/263>
+    
+    So avoid calling AdjustWaitForDelay() instead of setting the timeout to
+    (effectively) ULONG_MAX milliseconds.
+    
+    Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
+    Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>
+    (cherry picked from commit ddeca927498c9df3b5e62c7bf05e31e2a3aeaa52)
+
+commit b332cd20ee14049606e3656490d13a8efa6b23ee
+Merge: f41ab8c 5e0432f
+Author: Matt Dew <marcoz@osource.org>
+Date:   Thu Mar 6 22:03:03 2014 -0700
+
+    Merge branch 'server-1.15-branch' of git://people.freedesktop.org/~jeremyhu/xserver into server-1.15-branch
+
+commit f41ab8c60780ea8f87354e536e5b73cb23878eb7
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Fri Jan 24 18:32:54 2014 +1000
+
+    dix: prevent a driver from initializing or submitting buttons > MAX_BUTTONS
+    
+    The server internally relies on arrays with a MAX_BUTTONS maximum size (which
+    is the max the core protocol can transport). Make sure a driver adheres to
+    that.
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Daniel Stone <daniel@fooishbar.org>
+    (cherry picked from commit 87ca80a7196949597113225405f3e4ee03bbee13)
+
+commit 4447d71b9a74afe91aaf4cc01eae12a44ef09306
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Tue Jan 28 20:27:51 2014 -0800
+
+    xf86DeleteScreen: move check for NULL pScrn before first dereference
+    
+    Flagged by cppcheck 1.62:
+    [hw/xfree86/common/xf86Helper.c:220] -> [hw/xfree86/common/xf86Helper.c:231]:
+     (warning) Possible null pointer dereference: pScrn - otherwise it is
+     redundant to check it against null.
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit c1ac89c793614797e08d3d8e7fc9ba55be899130)
+
+commit 2ac840a14958fe74170518ee2c3a6b2dd88b20bd
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Tue Jan 28 20:27:50 2014 -0800
+
+    On realloc failure, free font_path_string instead of leaking it
+    
+    Flagged by cppcheck 1.62:
+    [dix/dixfonts.c:1792]: (error) Common realloc mistake:
+     'font_path_string' nulled but not freed upon failure
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit e6733ae91b7be52930f22a87de15fa05819ef948)
+
+commit 157cc02fc13c998bba70e1652907972015e15e8e
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Fri Jan 24 23:42:49 2014 -0800
+
+    Check for calloc() failure in add_master()
+    
+    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit 9fc19168e7ca6308275bf8769d1ccb982f88465b)
+
+commit f11c5938d732af717aeebbbf3b356138f3411bb7
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Fri Jan 24 16:51:02 2014 +1000
+
+    Xi: fix modifier offset in XIPassiveGrab swapping function
+    
+    The request is followed by mask_len 4-byte units, then followed by the actual
+    modifiers.
+    
+    Also fix up the swapping test, which had the same issue.
+    
+    Reported-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+    (cherry picked from commit 76b3be75b62657e346731444736f7e4d200beb5b)
+    
+    Conflicts:
+    	test/xi2/protocol-xipassivegrabdevice.c
+
+commit 345b7ead1dd262020e10b4aeb71044d46d16e134
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Mon Jan 13 17:00:23 2014 +1000
+
+    os: restrict display names to digits
+    
+    We call atoi() on the server's display to get the socket but otherwise use the
+    unmodified display for log file name, xkb paths, etc. This results in
+    Xorg :banana being the equivalent of Xorg :0, except for the log files being
+    in /var/log/Xorg.banana.log. I'm not sure there's a good use-case for this
+    behaviour.
+    
+    Check the display for something that looks reasonable, i.e. digits only, but
+    do allow for :0.0 (i.e. digits, followed by a period, followed by one or two
+    digits).
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit 71baa466b1f6b02fe503f9a3089b7b9d61aa0f80)
+
+commit 940d6a8e9d3544696654d5e68c615ab887f81945
+Author: Carlos Garnacho <carlosg@gnome.org>
+Date:   Thu Jan 2 21:33:30 2014 +0100
+
+    Xi: Ensure DeviceChanged is emitted after grabs are deactivated
+    
+    When a grab on a slave device is deactivated, the master device must
+    be checked, just in case there were events from other devices while
+    the slave device was stolen away by the passive grab. This may
+    introduce misbehaviors on mismatching valuators and device features
+    later on UpdateDeviceState().
+    
+    Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit b2d5ee2e3684951b611fd2068d57cc65fd8305a3)
+
+commit 47da6e3f47a55aeeef2c849067dd2d09fc2fe481
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Fri Jan 24 18:16:54 2014 +1000
+
+    dix: fix button state check before changing a button mapping
+    
+    dev->button->down is a bitmask, not a normal array. Use the helper function to
+    check, we technically allow the mapping to change after the physical button
+    has been pressed (but not yet processed yet), so only check BUTTON_PROCESSED.
+    
+    From XSetPointerMapping(3):
+    "If any of the buttons to be altered are logically in the down state,
+    XSetPointerMapping returns MappingBusy, and the mapping is not changed."
+    
+    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Daniel Stone <daniel@fooishbar.org>
+    (cherry picked from commit 25d10464f440b8b34594b7c988a99a830ea39a29)
+
+commit 5e0432f797d58fe1a69ef538694f65bbba38737f
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Wed Jan 1 11:10:41 2014 -0800
+
+    XQuartz: Avoid passing uninitialized pointers to X11ApplicationSetWindowMenu in AppleWMSetWindowMenu
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit 77df653ae3d8448be21221711851acde12c6bc1a)
+
+commit 859ced56d9ee168796c2fcf7fa6056e0c1491f3a
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Wed Jan 1 11:04:07 2014 -0800
+
+    XQuartz: Check for allocated memory before using it in AppleWMSetWindowMenu
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit 3bc608a361a01043b226fb9aaebf88f6fd852925)
+
+commit 9444955d16f85926c75ee8eafb0ca796dcf16439
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Wed Jan 1 11:00:40 2014 -0800
+
+    XQuartz: Silence a clang static analysis warning about a memory leak
+    
+    It seems the alanyzer can't comprehend dixSetPrivate().
+    
+    quartz.c:119:12: warning: Potential leak of memory pointed to by 'displayInfo'
+        return quartzProcs->AddScreen(index, pScreen);
+               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit 64327226ddfba8f0653615cd678d2d4336fb993d)
+
+commit 64b0669d1c062e7e11fb0e3b8ea7fe56113fc86f
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Wed Jan 1 10:55:10 2014 -0800
+
+    XQuartz: Silence a clang static analysis warning about a possible memory leak on exit
+    
+    stub.c:356:9: warning: Potential leak of memory pointed to by 'newargv'
+            asl_log(aslc, NULL, ASL_LEVEL_ERR,
+            ^~~~~~~
+    stub.c:356:9: warning: Potential leak of memory pointed to by 'newenvp'
+            asl_log(aslc, NULL, ASL_LEVEL_ERR,
+            ^~~~~~~
+    2 warnings generated.
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit b2f6b3497c33a4897afae80a2cf69c596b9f81e8)
+
+commit 472e8e5d1c26573cef4bd42451230ef47791ed6f
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Wed Jan 1 10:47:52 2014 -0800
+
+    XQuartz: Validate length in appledri before swapping
+    
+    Avoids potential memory corruption from bad requests
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit a03f096a85537d9e881cedaa6cb71aca43a97086)
+
+commit 782fe5c174def75a9e4cb188c00c2fec72821472
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Wed Jan 1 10:39:56 2014 -0800
+
+    XQuartz: Validate screen in AppleDRIQueryDirectRenderingCapable requests
+    
+    Return an error to the caller rather than crashing the server on
+    invalid screens.
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit b3572c0d1ab7888ac26d6b2b8be6d1d19ed9af3f)
+
+commit 045122566c0532378b50c1af3ffec3254e416fe2
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Sun Dec 29 12:45:23 2013 -0800
+
+    XQuartz: Simplify hook_run to quiet static analyzer
+    
+    x-hook.c:96:9: warning: Called function pointer is an uninitalized pointer value
+            (*fun[i])(arg, data[i]);
+            ^~~~~~~~~~~~~~~~~~~~~~~
+    1 warning generated.
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit 959e8f23af7850fcaf40d6c67f5228241a36a9ab)
+
+commit 33b2ae0f3b4a80fd962d876f7437d98fcfc27791
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Sun Dec 29 12:41:18 2013 -0800
+
+    XQuartz: Mark applicationWillTerminate: noreturn
+    
+    X11Controller.m:938:1: warning: method 'applicationWillTerminate:' could be declared with attribute 'noreturn'
+          [-Wmissing-noreturn,Semantic Issue]
+    {
+    ^
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit f79af1941776fd6f1ec26c50603fcc35ca7d514b)
+
+commit 404f26866147be1c26585e59d9795e87e0c3e5fa
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Sun Dec 29 12:36:51 2013 -0800
+
+    XQuartz: Fix get_proc_address signature
+    
+    indirect.c:675:28: warning: incompatible pointer types passing 'glx_gpa_proc (*)(const char *)' to parameter of type
+          'glx_gpa_proc' (aka 'glx_func_ptr (*)(const char *)') [-Wincompatible-pointer-types,Semantic Issue]
+        __glXsetGetProcAddress(&get_proc_address);
+                               ^~~~~~~~~~~~~~~~~
+    ../../../glx/glxserver.h:122:42: note: passing argument to parameter 'get_proc_address' here [Semantic Issue]
+    void __glXsetGetProcAddress(glx_gpa_proc get_proc_address);
+                                             ^
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit ea80279e292e59a9fe9651489f03e9f2f39810d9)
+
+commit 7803c4075b824ece79af0425cee736025c41d901
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Sun Dec 29 12:31:23 2013 -0800
+
+    XQuartz: Fix darwinfb.h header guard
+    
+    ./darwinfb.h:28:9: warning: '_DARWIN_FB_H' is used as a header guard here, followed by #define of a different macro
+          [-Wheader-guard,Lexical or Preprocessor Issue]
+            ^~~~~~~~~~~~
+    ./darwinfb.h:29:9: note: '_DARWIN_DB_H' is defined here; did you mean '_DARWIN_FB_H'? [Lexical or Preprocessor Issue]
+            ^~~~~~~~~~~~
+            _DARWIN_FB_H
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit 2e3ebec9520719a8e5c3c92390e83bcb5216f978)
+
+commit 6c055f0d78349ff08a570c5dcc92c6f7b6924993
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date:   Sun Dec 29 12:22:55 2013 -0800
+
+    XQuartz: Silence some static analyzer warnings by annotating referencing counts
+    
+    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+    (cherry picked from commit 9da6c0918f40359f28fe8889d5b7cae7efcc8377)
+
 commit 2ea973e12f5d954211e1d10085a4c74581b43aca
 Author: Keith Packard <keithp@keithp.com>
 Date:   Fri Dec 27 09:50:55 2013 -0800
diff --git a/debian/changelog b/debian/changelog
index 0ac45c4..84b4a26 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,13 @@
-xorg-server (2:1.15.0-3) UNRELEASED; urgency=medium
+xorg-server (2:1.15.0.901-1) UNRELEASED; urgency=medium
 
   [ Robert Millan ]
   * Add devd input backend for kFreeBSD, and use it instead of hal (closes:
     #736765, #710196, #683833)
 
- -- Julien Cristau <jcristau@debian.org>  Sun, 16 Mar 2014 13:54:27 +0100
+  [ Julien Cristau ]
+  * New upstream release
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 31 Mar 2014 12:12:51 +0200
 
 xorg-server (2:1.15.0-2) unstable; urgency=medium
 

commit 300458fb8ad0a7957e941cd65f47d204c7886e22
Author: Matt Dew <marcoz@osource.org>
Date:   Fri Mar 21 23:49:41 2014 -0600

    Bump bersion to 1.15.0.901

diff --git a/configure.ac b/configure.ac
index 8f82386..abd4604 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.15.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-12-27"
-RELEASE_NAME="Egg Nog"
+AC_INIT([xorg-server], 1.15.0.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2014-03-21"
+RELEASE_NAME="Heart Candy-rc1"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AC_USE_SYSTEM_EXTENSIONS

commit bce647e4622ec2527592e4e98ddd1527d91bc3c5
Author: Robert Millan <rmh@debian.org>
Date:   Sun Mar 16 13:57:57 2014 +0100

    Add devd input backend for kFreeBSD, and use it instead of hal
    
    Closes: #736765, #710196, #683833

diff --git a/debian/changelog b/debian/changelog
index 1d372ef..0ac45c4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xorg-server (2:1.15.0-3) UNRELEASED; urgency=medium
+
+  [ Robert Millan ]
+  * Add devd input backend for kFreeBSD, and use it instead of hal (closes:
+    #736765, #710196, #683833)
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 16 Mar 2014 13:54:27 +0100
+
 xorg-server (2:1.15.0-2) unstable; urgency=medium
 
   [ Julien Cristau ]
diff --git a/debian/control b/debian/control
index aaad746..a18ea62 100644
--- a/debian/control
+++ b/debian/control
@@ -45,8 +45,6 @@ Build-Depends:
  libpciaccess-dev (>= 0.12.901),
  libgcrypt-dev,
  nettle-dev,
- libdbus-1-dev [kfreebsd-any],
- libhal-dev [kfreebsd-any],
  libudev-dev (>= 151-3) [linux-any],
  libselinux1-dev (>= 2.0.80) [linux-any],
  libaudit-dev [linux-any],
@@ -97,6 +95,7 @@ Depends:
  xserver-common (>= ${source:Version}),
  keyboard-configuration [linux-any kfreebsd-any],
  udev (>= 149) [linux-any],
+ devd [kfreebsd-any],
  ${shlibs:Depends},
  ${misc:Depends},
 Recommends: libgl1-mesa-dri (>= 7.10.2-4)
@@ -157,6 +156,7 @@ Depends:
  x11-xkb-utils-udeb,
 # disabled: keyboard-configuration [linux-any kfreebsd-any],
  udev-udeb (>= 149) [linux-any],
+ devd-udeb [kfreebsd-any],
  ${shlibs:Depends},
  ${misc:Depends},
 Provides:
diff --git a/debian/patches/02_kbsd-input-devd.diff b/debian/patches/02_kbsd-input-devd.diff
new file mode 100644
index 0000000..bdadae2
--- /dev/null
+++ b/debian/patches/02_kbsd-input-devd.diff
@@ -0,0 +1,551 @@
+>From d96e2bd2a2b48ede527ad7071d3e0eeda9861b73 Mon Sep 17 00:00:00 2001
+From: Robert Millan <rmh@debian.org>
+Date: Mon, 24 Feb 2014 23:22:57 +0100
+Subject: [PATCH] Add devd config backend for FreeBSD (and GNU/kFreeBSD)
+
+Based on original code by Baptiste Daroussin, with some fixes made
+by Koop Mast and myself.
+
+Signed-off-by: Robert Millan <rmh@freebsd.org>
+---
+ config/Makefile.am              |    4 +
+ config/config-backends.h        |    5 +
+ config/config.c                 |    5 +
+ config/devd.c                   |  387 +++++++++++++++++++++++++++++++++++++++
+ configure.ac                    |   16 ++
+ hw/xfree86/common/xf86Config.c  |    7 +-
+ hw/xfree86/common/xf86Globals.c |    3 +-
+ include/dix-config.h.in         |    3 +
+ 8 files changed, 427 insertions(+), 3 deletions(-)
+ create mode 100644 config/devd.c
+
+Index: xorg-server/config/Makefile.am
+===================================================================
+--- xorg-server.orig/config/Makefile.am
++++ xorg-server/config/Makefile.am
+@@ -40,6 +40,10 @@ if CONFIG_WSCONS
+ libconfig_la_SOURCES += wscons.c
+ endif # CONFIG_WSCONS
+ 
++if CONFIG_DEVD
++libconfig_la_SOURCES += devd.c
++endif
++
+ endif # CONFIG_NEED_DBUS
+ 
+ endif # !CONFIG_UDEV
+Index: xorg-server/config/config-backends.h
+===================================================================
+--- xorg-server.orig/config/config-backends.h
++++ xorg-server/config/config-backends.h
+@@ -75,3 +75,8 @@ void config_hal_fini(void);
+ int config_wscons_init(void);
+ void config_wscons_fini(void);
+ #endif
++
++#ifdef CONFIG_DEVD
++int config_devd_init(void);
++void config_devd_fini(void);
++#endif
+Index: xorg-server/config/config.c
+===================================================================
+--- xorg-server.orig/config/config.c
++++ xorg-server/config/config.c
+@@ -64,6 +64,9 @@ config_init(void)
+ #elif defined(CONFIG_WSCONS)
+     if (!config_wscons_init())
+         ErrorF("[config] failed to initialise wscons\n");
++#elif defined(CONFIG_DEVD)
++    if (!config_devd_init())
++        ErrorF("[config] failed to initialise devd\n");
+ #endif
+ }
+ 
+@@ -82,6 +85,8 @@ config_fini(void)
+     config_dbus_core_fini();
+ #elif defined(CONFIG_WSCONS)
+     config_wscons_fini();
++#elif defined(CONFIG_DEVD)
++    config_devd_fini();
+ #endif
+ }
+ 
+Index: xorg-server/config/devd.c
+===================================================================
+--- /dev/null
++++ xorg-server/config/devd.c
+@@ -0,0 +1,387 @@
++/*
++ * Copyright © 2012 Baptiste Daroussin
++ * Copyright © 2014 Robert Millan
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Software"),
++ * to deal in the Software without restriction, including without limitation
++ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice (including the next
++ * paragraph) shall be included in all copies or substantial portions of the
++ * Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++ * DEALINGS IN THE SOFTWARE.
++ *
++ * Author: Baptiste Daroussin <bapt@FreeBSD.org>
++ */
++
++#ifdef HAVE_DIX_CONFIG_H
++#include <dix-config.h>
++#endif
++
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <sys/sysctl.h>
++#include <sys/un.h>
++
++#include <ctype.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <stdarg.h>
++#include <stdbool.h>
++#include <unistd.h>
++
++#include "input.h"
++#include "inputstr.h"
++#include "hotplug.h"
++#include "config-backends.h"
++#include "os.h"
++
++#define DEVD_SOCK_PATH "/var/run/devd.pipe"
++
++#define DEVD_EVENT_ADD		'+'
++#define DEVD_EVENT_REMOVE	'-'
++
++static int sock_devd = -1;
++
++struct hw_type {
++    const char *driver;
++    int flag;
++    const char *xdriver;
++};
++
++static struct hw_type hw_types[] = {
++    {"ukbd", ATTR_KEYBOARD, "kbd"},
++    {"atkbd", ATTR_KEYBOARD, "kbd"},
++    {"ums", ATTR_POINTER, "mouse"},
++    {"psm", ATTR_POINTER, "mouse"},
++    {"uhid", ATTR_POINTER, "mouse"},
++    {"joy", ATTR_JOYSTICK, NULL},
++    {"atp", ATTR_TOUCHPAD, NULL},
++    {"uep", ATTR_TOUCHSCREEN, NULL},
++    {NULL, -1, NULL},
++};
++
++static bool
++sysctl_exists(const char *format, ...)
++{
++    va_list args;
++    char *name = NULL;
++    size_t len;
++    int ret;
++
++    if (format == NULL)
++        return false;
++
++    va_start(args, format);
++    vasprintf(&name, format, args);
++    va_end(args);
++
++    ret = sysctlbyname(name, NULL, &len, NULL, 0);
++
++    if (ret == -1)
++        len = 0;
++
++    free(name);
++    return (len > 0);
++}
++
++static char *
++sysctl_get_str(const char *format, ...)
++{
++    va_list args;
++    char *name = NULL;
++    char *dest = NULL;
++    size_t len;
++
++    if (format == NULL)
++        return NULL;
++
++    va_start(args, format);
++    vasprintf(&name, format, args);
++    va_end(args);
++
++    if (sysctlbyname(name, NULL, &len, NULL, 0) == 0) {
++        dest = malloc(len + 1);
++        if (!dest)
++            goto unwind;
++        if (sysctlbyname(name, dest, &len, NULL, 0) == 0)
++            dest[len] = '\0';
++        else {
++            free(dest);
++            dest = NULL;
++        }
++    }
++
++ unwind:
++    free(name);
++    return dest;
++}
++
++static void
++device_added(char *devname)
++{
++    char path[PATH_MAX];
++    char *vendor;
++    char *product = NULL;
++    char *config_info = NULL;
++    char *walk;
++    InputOption *options = NULL;
++    InputAttributes attrs = { };
++    DeviceIntPtr dev = NULL;
++    int i, rc;
++    int fd;
++
++    for (i = 0; hw_types[i].driver != NULL; i++) {
++        if (strncmp(devname, hw_types[i].driver,
++                    strlen(hw_types[i].driver)) == 0 &&
++            isdigit(*(devname + strlen(hw_types[i].driver)))) {
++            attrs.flags |= hw_types[i].flag;
++            break;
++        }
++    }
++    if (hw_types[i].driver == NULL) {
++        LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n",
++                       devname);
++        return;
++    }
++    if (hw_types[i].xdriver == NULL) {
++        LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n",
++                       devname);
++        return;
++    }
++    snprintf(path, sizeof(path), "/dev/%s", devname);
++
++    options = input_option_new(NULL, "_source", "server/devd");
++    if (!options)
++        return;
++
++    vendor =
++        sysctl_get_str("dev.%s.%s.%%desc", hw_types[i].driver,
++                       devname + strlen(hw_types[i].driver));
++    if (vendor == NULL) {
++        attrs.vendor = strdup("(unnamed)");
++        attrs.product = strdup("(unnamed)");
++    }
++    else {
++        if ((walk = strchr(vendor, ' ')) != NULL) {
++            walk[0] = '\0';
++            walk++;
++            product = walk;
++            if ((walk = strchr(product, ',')) != NULL)
++                walk[0] = '\0';
++        }
++
++        attrs.vendor = strdup(vendor);
++        if (product) 
++            attrs.product = strdup(product);
++        else
++            attrs.product = strdup("(unnamed)");
++
++        options = input_option_new(options, "name", xstrdup(attrs.product));
++
++        free(vendor);
++    }
++    attrs.usb_id = NULL;
++    attrs.device = strdup(path);
++    options = input_option_new(options, "driver", hw_types[i].xdriver);
++    if (attrs.flags & ATTR_KEYBOARD) {
++        /*
++         * Don't pass device option if keyboard is attached to console (open fails),
++         * thus activating special logic in xf86-input-keyboard.
++         */
++        fd = open(path, O_RDONLY | O_NONBLOCK | O_EXCL);
++        if (fd > 0) {
++            close(fd);
++            options = input_option_new(options, "device", xstrdup(path));
++        }
++    }
++    else {
++        options = input_option_new(options, "device", xstrdup(path));
++    }
++
++    if (asprintf(&config_info, "devd:%s", devname) == -1) {
++        config_info = NULL;
++        goto unwind;
++    }
++
++    if (device_is_duplicate(config_info)) {
++        LogMessage(X_WARNING, "config/devd: device %s already added. "
++                   "Ignoring.\n", attrs.product);
++        goto unwind;
++    }
++
++    options = input_option_new(options, "config_info", config_info);
++    LogMessage(X_INFO, "config/devd: adding input device %s (%s)\n",
++               attrs.product, path);
++
++    rc = NewInputDeviceRequest(options, &attrs, &dev);
++
++    if (rc != Success)
++        goto unwind;
++
++ unwind:
++    free(config_info);
++    input_option_free_list(&options);
++
++    free(attrs.usb_id);
++    free(attrs.product);
++    free(attrs.device);
++    free(attrs.vendor);
++}
++
++static void
++device_removed(char *devname)
++{
++    char *value;
++
++    if (asprintf(&value, "devd:%s", devname) == -1)
++        return;
++
++    remove_devices("devd", value);
++
++    free(value);
++}
++
++static ssize_t
++socket_getline(int fd, char **out)
++{
++    char *buf, *newbuf;
++    ssize_t ret, cap, sz = 0;
++    char c;
++
++    cap = 1024;
++    buf = malloc(cap * sizeof(char));
++    if (!buf)
++        return -1;
++
++    for (;;) {
++        ret = read(sock_devd, &c, 1);
++        if (ret < 1) {
++            if (errno == EINTR)
++                continue;
++            free(buf);
++            return -1;
++        }
++
++        if (c == '\n')
++            break;
++
++        if (sz + 1 >= cap) {
++            cap *= 2;
++            newbuf = realloc(buf, cap * sizeof(char));
++            if (!newbuf) {
++                free(buf);
++                return -1;
++            }
++            buf = newbuf;
++        }
++        buf[sz] = c;
++        sz++;
++    }
++
++    buf[sz] = '\0';
++    if (sz >= 0)
++        *out = buf;
++    else
++        free(buf);
++
++    return sz;                  /* number of bytes in the line, not counting the line break */
++}
++
++static void
++wakeup_handler(void *data, int err, void *read_mask)
++{
++    char *line = NULL;
++    char *walk;
++
++    if (err < 0)
++        return;
++
++    if (FD_ISSET(sock_devd, (fd_set *) read_mask)) {
++        if (socket_getline(sock_devd, &line) < 0)
++            return;
++
++        walk = strchr(line + 1, ' ');
++        if (walk != NULL)
++            walk[0] = '\0';
++
++        switch (*line) {
++        case DEVD_EVENT_ADD:
++            device_added(line + 1);
++            break;
++        case DEVD_EVENT_REMOVE:
++            device_removed(line + 1);
++            break;
++        default:
++            break;
++        }
++        free(line);
++    }
++}
++
++static void
++block_handler(void *data, struct timeval **tv, void *read_mask)
++{
++}
++
++int
++config_devd_init(void)
++{
++    struct sockaddr_un devd;
++    char devicename[1024];
++    int i, j;
++
++    /* first scan the sysctl to determine the hardware if needed */
++
++    for (i = 0; hw_types[i].driver != NULL; i++) {
++        for (j = 0; sysctl_exists("dev.%s.%i.%%desc", hw_types[i].driver, j);
++             j++) {
++            snprintf(devicename, sizeof(devicename), "%s%i", hw_types[i].driver,
++                     j);
++            device_added(devicename);
++        }
++
++    }
++    sock_devd = socket(AF_UNIX, SOCK_STREAM, 0);
++    if (sock_devd < 0) {
++        ErrorF("config/devd: Fail opening stream socket");
++        return 0;
++    }
++
++    devd.sun_family = AF_UNIX;
++    strlcpy(devd.sun_path, DEVD_SOCK_PATH, sizeof(devd.sun_path));
++
++    if (connect(sock_devd, (struct sockaddr *) &devd, sizeof(devd)) < 0) {
++        close(sock_devd);
++        ErrorF("config/devd: Fail to connect to devd");
++        return 0;
++    }
++
++    RegisterBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL);
++    AddGeneralSocket(sock_devd);
++
++    return 1;
++}
++
++void
++config_devd_fini(void)
++{
++    if (sock_devd < 0)
++        return;
++
++    RemoveGeneralSocket(sock_devd);
++    RemoveBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL);
++    close(sock_devd);
++}
+Index: xorg-server/configure.ac


Reply to: