Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package xorg-server. 1.12.3 is a bugfix release made from upstream's stable branch. The debdiff contains a lot of irrelevant changes to autotools/yacc/lex-generated files, which we delete and regenerate on build anyway, so you'll find something hopefully more usable below. unblock xorg-server/2:1.12.3-1 Cheers, Julien ChangeLog | 360 ++++++++++++++++++++++++++++++++++++++ Xi/extinit.c | 2 +- Xi/stubs.c | 1 + Xi/xiquerydevice.c | 2 +- configure.ac | 4 +- debian/changelog | 7 + debian/xserver-common.install | 1 + dix/getevents.c | 67 +++++-- dix/touch.c | 7 +- hw/xfree86/common/xf86Config.c | 1 + hw/xfree86/common/xf86Init.c | 1 + hw/xfree86/common/xf86Xinput.c | 94 ++++++++-- hw/xfree86/common/xf86sbusBus.c | 8 +- hw/xfree86/doc/ddxDesign.xml | 25 --- hw/xfree86/modes/xf86EdidModes.c | 13 +- hw/xfree86/utils/man/cvt.man | 4 +- hw/xquartz/X11Application.m | 24 ++- hw/xquartz/console_redirect.c | 14 ++ hw/xquartz/quartz.c | 6 + randr/randr.c | 2 +- xkb/XKBMAlloc.c | 6 +- xkb/xkbAccessX.c | 9 +- 22 files changed, 580 insertions(+), 78 deletions(-) diff --git a/ChangeLog b/ChangeLog index 33bbced..d97f82a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,363 @@ +commit 60e0d205666c1fc0c818b9430c1e20428c9d3808 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Mon Jul 9 10:44:01 2012 +1000 + + configure.ac: Bump to Version 1.12.3 + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit 738e55ebbdf516a45b95761b815bed4e697dc726 +Author: Torsten Kaiser <just.for.l...@googlemail.com> +Date: Fri Jul 6 12:10:25 2012 -0700 + + xfree86: EDID Est III parsing skips some modes + + This loop needs to count from 7 to 0, not only from 7 to 1. + The current code always skips the modes {1152, 864, 75, 0}, {1280, 1024, 85, 0}, + {1400, 1050, 75, 0}, {1600, 1200, 70, 0} and {1920, 1200, 60, 0}. + + Signed-off-by: Torsten Kaiser <x...@ariolc.dyndns.org> + Reviewed-by: Adam Jackson <a...@redhat.com> + Signed-off-by: Keith Packard <kei...@keithp.com> + (cherry picked from commit 7c9d8cbd368cac53e7aed9308292614337db3be2) + +commit f27fcb81c4a30cec899628e4bb3e300edbcebe4b +Author: Torsten Kaiser <just.for.l...@googlemail.com> +Date: Fri Jul 6 12:06:13 2012 -0700 + + xfree86: EDID Est III parsing can walk off end of array + + Using -O3 gcc notes that m could reach beyound the end of the EstIIIModes array, + if the last bits of the 11s byte where set. + Fix this, by extending the array to cover all possible bits from est. + + https://bugs.freedesktop.org/show_bug.cgi?id=45623 + + Signed-off-by: Torsten Kaiser <x...@ariolc.dyndns.org> + Reviewed-by: Adam Jackson <a...@redhat.com> + Signed-off-by: Keith Packard <kei...@keithp.com> + (cherry picked from commit 0b3abacb6430e6593c4358420ba457d8149bd32b) + +commit e4497cd002ffb59cb7cf9df69d47ccb62ab55bf4 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Fri Jun 15 10:00:51 2012 +1000 + + xfree86: always enable SIGIO on OsVendorInit (#50957) + + Drivers call xf86InstallSIGIOHandler() for their fd on DEVICE_ON. That + function does not actually enable the signal if it was blocked to begin + with. As a result, if one vt-switches away from the server (SIGIO is + blocked) and then triggers a server regeneration, the signal remains + blocked and input devices are dead. + + Avoid this by always unblocking SIGIO when we start the server. + + X.Org Bug 50957 <http://bugs.freedesktop.org/show_bug.cgi?id=50957> + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Keith Packard <kei...@keithp.com> + (cherry picked from commit 9f1edced9abc066f0ba47672d006fe50fb206371) + +commit ac85a6866fa63d1a1972dfa8fdcfe6ad76705648 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Tue Jun 26 09:19:33 2012 +1000 + + Xi: extend PropagateMask to EMASKSIZE + + Number of devices is 2 + MAXDEVICES, with index 0 and 1 reserved for + XIAll{Master}Devices. At the current size, PropagateMask would be overrun in + RecalculateDeviceDeliverableEvents(). + + Found by Coverity. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Dave Airlie <airl...@redhat.com> + (cherry picked from commit 12bfb4cf1bebb66d2c2eb76b93c18a2915b865e5) + +commit eca5de2f1a08b38cf17188c8b3d02bae7fc14cd5 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Mon Jun 25 14:24:11 2012 +1000 + + dix: fix memory leak in TouchEventHistoryReplay + + Don't leak if ti->history is NULL. + + Found by coverity. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Dave Airlie <airl...@redhat.com> + (cherry picked from commit a9c09f8f8e2a97e4bfe927bc4c7f29b04ee3403a) + +commit c4d28c40bfb7e6ccdb921b610f26a3881bc5974a +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Mon Oct 24 10:01:26 2011 +1000 + + xfree86: fix use-after-free issue in checkInput + + *dev is the condition of the while loop we're in, reset to NULL after + freeing + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Dave Airlie <airl...@redhat.com> + (cherry picked from commit e3f47be9fbc489e3eb5832445924810b2ff300f7) + +commit 487e8e829942fcafe2435576d1e4cf831002aed4 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Mon Jul 2 10:15:14 2012 +1000 + + configure.ac: Version bump to 1.12.2.902 (1.12.3 RC2) + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit d21b6f0a2d767ca6fbd8f0ec387f83a50a38b486 +Author: Andy Ritger <arit...@nvidia.com> +Date: Thu Jun 14 09:15:37 2012 -0700 + + randr: Don't recurse into mieqProcessInputEvents() from RRTellChanged(). + + Call UpdateCurrentTimeIf(), not UpdateCurrentTime(), from RRTellChanged(). + The latter calls ProcessInputEvents(), which can trigger a recursion + into mieqProcessInputEvents(). The former omits the call to + ProcessInputEvents(). + + Signed-off-by: Andy Ritger <arit...@nvidia.com> + Reviewed-by: Jeremy Huddleston <jerem...@apple.com> + Signed-off-by: Keith Packard <kei...@keithp.com> + (cherry picked from commit dae317e7265007b38012244722e3b3a06e904ed5) + +commit a6de3eac661ff6f23145cdaa49fc722381a1899e +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Thu Jun 7 16:52:20 2012 +1000 + + dix: if the scroll valuator reaches INT_MAX, reset to 0 + + Too much scrolling down may eventually trigger an overflow of the valuator. + If this happens, reset the valuator to 0 and skip this event for button + emulation. Clients will have to figure out a way to deal with this, but a + scroll event from (close to) INT_MAX to 0 is a hint of that it needs to be + ignored. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 54476b5e4461ff523e935961affabcf0de12c556) + +commit b0be2d29b2c72c09de9845d2b1983e4c77c2ef17 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Wed Apr 11 09:43:23 2012 +1000 + + Xi: fix XITouchClass sourceid assignment + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 72cfc1a097dc1e09d2cd9415ef7855a2cef92351) + +commit 4af8e22b1a539778388fe509a7f3a25860a7879c +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Wed Jun 6 14:38:49 2012 +1000 + + xkb: warn if XKB SlowKeys have been automatically enabled + + Slow keys are enabled when the XKB AccessX features are generally enabled + (ctrls->enabled_ctrls & XkbAccessXKeysMask) and either shift key is held for + 8 seconds. For the unsuspecting user this appears as if the keyboard + suddenly stops working. + + Print a warning to the log, so we can later tell them "told you so". + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Dan Nicholson <dbn.li...@gmail.com> + (cherry picked from commit ff41753b1bee414b16c0f1e8d183776e87c94065) + +commit 0cecc4fc0f232bb64b8ef86d74164a676d92284f +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Tue May 29 10:17:50 2012 +0530 + + configure.ac: Version bump to 1.12.2.901 (1.12.3 RC1) + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit aaf48906279bcf74bcfd0a1de24de099184be022 +Author: Julien Cristau <jcris...@debian.org> +Date: Fri May 11 21:31:49 2012 +0200 + + Xi: make stub DeleteInputDeviceRequest call RemoveDevice + + DeleteInputDeviceRequest is called from CloseDownDevices on reset, so + call RemoveDevice to avoid leaking devices in Xvfb/Xnest/Xwin. + + Signed-off-by: Julien Cristau <jcris...@debian.org> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit e4153c1d9138ed40de1c615525066a0f5bb599dc) + +commit f4a1ecb9280570c473631760885cc2afb5d174b9 +Author: Marcin Slusarz <marcin.slus...@gmail.com> +Date: Mon May 21 21:39:43 2012 +0200 + + xfree86: fix mouse wheel support for DGA clients + + xf86-input-evdev (since "smooth scrolling" support was added) can send mouse + motion and wheel events in one batch, so we need to handle it properly. + Otherwise mouse wheel events which come with motion events are lost + and separate mouse wheel events are handled through non-DGA path. + + Signed-off-by: Marcin Slusarz <marcin.slus...@gmail.com> + Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 2d4fda4b09e67e47d3e6fc4743fc6e81bfe40f28) + +commit 889ce06946b8c1a246130a899e2702a3d7340fd2 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Wed May 9 11:30:46 2012 +1000 + + dix: undo transformation for missing valuators (#49347) + + last.valuators contains the transformed valuators of the device. If the + device submits events with x/y missing, we need to get that from + last.valuators and undo the transformation to that axis. + + X.Org Bug 49347 <http://bugs.freedesktop.org/show_bug.cgi?id=49347> + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 749a593e49adccdf1225be28a521412ec85333f4) + +commit 4c21adab7ce4290ea038e13dd20a850f50d95f23 +Author: Siddhesh Poyarekar <siddhesh.poyare...@gmail.com> +Date: Tue May 29 10:17:50 2012 +0530 + + xkb: Allocate size_syms correctly when width of a type increases + + The current code seems to skip syms with width less than + type->num_levels when calculating the total size for the new + size_syms. This leads to less space being allocated than necessary + during the next phase, which is to copy over the syms to the new + location. This results in an overflow leading to a crash. + + Signed-off-by: Siddhesh Poyarekar <siddhesh.poyare...@gmail.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 42ae2e8199fe875319978249963de7499607988b) + +commit 472c2d1af75d8e321728589e377f73116adb29fa +Author: Michal Suchanek <hramr...@gmail.com> +Date: Wed May 23 11:22:05 2012 +0200 + + Fix crash for motion events from devices without valuators + + A WarpPointer request may trigger a motion event on a device without + valuators. That request is ignored by GetPointerEvents but during smooth + scroll emulation we dereference dev->valuators to get the number of axes. + + Break out early if the device doesn't have valuators. + + Signed-off-by: Michal Suchanek <hramr...@gmail.com> + Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 88c767edb01ed7efb19ffe3a453e16107b27130b) + +commit 97cae5e07a8e81c17cf18df7843db6ab1fc6a2a7 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Thu Jan 26 15:44:40 2012 -0800 + + Convert sbusPaletteKey to latest DevPrivate API + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Reviewed-by: Mark Kettenis <kette...@openbsd.org> + Reviewed-by: Dave Airlie <airl...@redhat.com> + (cherry picked from commit 96e0ab54962ab59f03275a098ee02c1f0f86b94e) + +commit 3484ef2de50970fefe0c2580f52357ee37d3e6f3 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Fri Apr 6 21:51:37 2012 -0700 + + cvt man page should use Hz, not kHz, for vertical refresh rate + + https://bugs.freedesktop.org/show_bug.cgi?id=48311 + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Reviewed-by: Julien Cristau <jcris...@debian.org> + (cherry picked from commit c3180a74a4fc6304bcfe676e3285d707874a9fea) + +commit a5808eae02749507c49978f71d5aba2f3193cb07 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Fri Apr 27 13:35:32 2012 -0700 + + Undocument Font Module loading + + Code was deleted in commit affec10635343668839994ea2bac16c1d4524200 + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Reviewed-by: Dave Airlie <airl...@redhat.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit 5a3a98fcb799c2ac8fa7494645ad9030f1cac837) + +commit 9a4e2d80a5e79f6818879d682bb21a47acefc550 +Author: Alan Coopersmith <alan.coopersm...@oracle.com> +Date: Fri Apr 27 13:31:56 2012 -0700 + + Undocument mandatory loadable modules + + The code to implement was deleted when BaseModules[] was emptied by + the replacement of the "pcidata" module with libpciaccess calls + in commit 46f55f5dead5d70cdff30531d80a72f6be042315. + + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Reviewed-by: Dave Airlie <airl...@redhat.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit afcb7ba24ebd9968d48a192df438e7f1c0ecb770) + +commit 19126c0b36843f7c0e81631d1a1228d18e39eb62 +Author: Jeremy Huddleston <jerem...@apple.com> +Date: Thu May 17 10:08:02 2012 -0700 + + XQuartz: Avoid a race in initialization of darwinPointer + + http://xquartz.macosforge.org/trac/ticket/579 + + Signed-off-by: Jeremy Huddleston <jerem...@apple.com> + (cherry picked from commit acdc4f54ee5784d26c251ff8c941b4360ae80e9b) + +commit 198a876e34b880be5f7da683ec3ff21a53edcec5 +Author: Jeremy Huddleston <jerem...@apple.com> +Date: Mon May 7 17:07:27 2012 -0700 + + XQuartz: Provide fls implementation for Tiger + + Regression-from: 30623d6ff7bca223f9e1a825e86bd317eef8bf16 + Signed-off-by: Jeremy Huddleston <jerem...@apple.com> + (cherry picked from commit f5fc5334116ad2b0c8930ac68c52bf0f7a2f1417) + +commit 300970f8f80ef15614fef78215476a8011895000 +Author: Jeremy Huddleston <jerem...@apple.com> +Date: Mon May 7 16:31:38 2012 -0700 + + XQuartz: Tiger build fix + + http://trac.macports.org/ticket/34364 + + Regression-from: 662d41acdde1dcb9774fbe4054e251c708acaffe + + Reported-by: Peter Dyballa <peter_dyba...@freenet.de> + Signed-off-by: Jeremy Huddleston <jerem...@apple.com> + (cherry picked from commit e0097ce9719f9b0aeccf7102630c0299f8acdf93) + +commit 21956e2f8e506dd167f188be0d3b18e052c6913d +Author: Jeremy Huddleston <jerem...@apple.com> +Date: Mon May 7 16:16:20 2012 -0700 + + XQuartz: Workaround an SDK bug on Leopard/x86_64 + + Signed-off-by: Jeremy Huddleston <jerem...@apple.com> + (cherry picked from commit 4acbaa3027d89728ed932616f6ef66d93537b101) + +commit 131fe8fbd17edb05084cd7cddc3c4d3d3b393d73 +Author: Jeremy Huddleston <jerem...@apple.com> +Date: Tue May 29 13:05:02 2012 -0700 + + configure.ac: Version bump to 1.12.2 + + Signed-off-by: Jeremy Huddleston <jerem...@apple.com> + commit 4a2b8eebd1e93a8a0d003e9f5a594430eff08dad Author: Jeremy Huddleston <jerem...@apple.com> Date: Sat May 19 22:11:19 2012 -0700 diff --git a/Xi/extinit.c b/Xi/extinit.c index 4483076..2637f08 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -365,7 +365,7 @@ RESTYPE RT_INPUTCLIENT; extern XExtensionVersion XIVersion; -Mask PropagateMask[MAXDEVICES]; +Mask PropagateMask[EMASKSIZE]; /***************************************************************** * diff --git a/Xi/stubs.c b/Xi/stubs.c index 8baa5a0..39bee7c 100644 --- a/Xi/stubs.c +++ b/Xi/stubs.c @@ -141,4 +141,5 @@ NewInputDeviceRequest(InputOption *options, InputAttributes * attrs, void DeleteInputDeviceRequest(DeviceIntPtr dev) { + RemoveDevice(dev, TRUE); } diff --git a/Xi/xiquerydevice.c b/Xi/xiquerydevice.c index 749bc24..15c8b2a 100644 --- a/Xi/xiquerydevice.c +++ b/Xi/xiquerydevice.c @@ -430,7 +430,7 @@ ListTouchInfo(DeviceIntPtr dev, xXITouchInfo * touch) { touch->type = XITouchClass; touch->length = sizeof(xXITouchInfo) >> 2; - touch->sourceid = touch->sourceid; + touch->sourceid = dev->touch->sourceid; touch->mode = dev->touch->mode; touch->num_touches = dev->touch->num_touches; diff --git a/configure.ac b/configure.ac index 5e38d50..c8dee90 100644 --- a/configure.ac +++ b/configure.ac @@ -26,8 +26,8 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.60) -AC_INIT([xorg-server], 1.12.1.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2012-05-19" +AC_INIT([xorg-server], 1.12.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2012-07-09" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE diff --git a/debian/changelog b/debian/changelog index e538edd..501d650 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +xorg-server (2:1.12.3-1) unstable; urgency=low + + * New upstream release. + * Install /var/lib/xkb/README.compiled in xserver-common. + + -- Julien Cristau <jcris...@debian.org> Wed, 18 Jul 2012 08:36:57 +0200 + xorg-server (2:1.12.1.902-1) unstable; urgency=medium [ Julien Cristau ] diff --git a/debian/xserver-common.install b/debian/xserver-common.install index 232cc98..28c12bb 100644 --- a/debian/xserver-common.install +++ b/debian/xserver-common.install @@ -1,2 +1,3 @@ main/usr/lib/xorg/protocol.txt usr/lib/xorg main/usr/share/man/man1/Xserver.1 usr/share/man/man1 +main/var/lib/xkb/README.compiled var/lib/xkb diff --git a/dix/getevents.c b/dix/getevents.c index 9dc9617..b78d5ce 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -35,6 +35,7 @@ #include <X11/keysym.h> #include <X11/Xproto.h> #include <math.h> +#include <limits.h> #include "misc.h" #include "resource.h" @@ -750,6 +751,29 @@ clipAbsolute(DeviceIntPtr dev, ValuatorMask *mask) } } +static void +add_to_scroll_valuator(DeviceIntPtr dev, ValuatorMask *mask, int valuator, double value) +{ + double v; + + if (!valuator_mask_fetch_double(mask, valuator, &v)) + return; + + /* protect against scrolling overflow. INT_MAX for double, because + * we'll eventually write this as 32.32 fixed point */ + if ((value > 0 && v > INT_MAX - value) || (value < 0 && v < INT_MIN - value)) { + v = 0; + + /* reset last.scroll to avoid a button storm */ + valuator_mask_set_double(dev->last.scroll, valuator, 0); + } + else + v += value; + + valuator_mask_set_double(mask, valuator, v); +} + + /** * Move the device's pointer by the values given in @valuators. * @@ -768,13 +792,17 @@ moveRelative(DeviceIntPtr dev, ValuatorMask *mask) if (!valuator_mask_isset(mask, i)) continue; - val += valuator_mask_get_double(mask, i); + + add_to_scroll_valuator(dev, mask, i, val); + /* x & y need to go over the limits to cross screens if the SD * isn't currently attached; otherwise, clip to screen bounds. */ if (valuator_get_mode(dev, i) == Absolute && - ((i != 0 && i != 1) || clip_xy)) + ((i != 0 && i != 1) || clip_xy)) { + val = valuator_mask_get_double(mask, i); clipAxis(dev, i, &val); - valuator_mask_set_double(mask, i, val); + valuator_mask_set_double(mask, i, val); + } } } @@ -1151,16 +1179,33 @@ static void transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask) { double x, y, ox, oy; + int has_x, has_y; + + has_x = valuator_mask_fetch_double(mask, 0, &ox); + has_y = valuator_mask_fetch_double(mask, 1, &oy); + + if (!has_x && !has_y) + return; + + if (!has_x || !has_y) { + struct pixman_f_transform invert; + + /* undo transformation from last event */ + ox = dev->last.valuators[0]; + oy = dev->last.valuators[1]; + + pixman_f_transform_invert(&invert, &dev->transform); + transform(&invert, &ox, &oy); + + x = ox; + y = oy; + } if (valuator_mask_isset(mask, 0)) ox = x = valuator_mask_get_double(mask, 0); - else - ox = x = dev->last.valuators[0]; if (valuator_mask_isset(mask, 1)) oy = y = valuator_mask_get_double(mask, 1); - else - oy = y = dev->last.valuators[1]; transform(&dev->transform, &x, &y); @@ -1474,6 +1519,7 @@ emulate_scroll_button_events(InternalEvent *events, return num_events; } + /** * Generate a complete series of InternalEvents (filled into the EventList) * representing pointer motion, or button presses. If the device is a slave @@ -1519,7 +1565,7 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, * necessary. This only needs to cater for the XIScrollFlagPreferred * axis (if more than one scrolling axis is present) */ if (type == ButtonPress) { - double val, adj; + double adj; int axis; int h_scroll_axis = -1; int v_scroll_axis = -1; @@ -1555,8 +1601,7 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, if (adj != 0.0 && axis != -1) { adj *= pDev->valuator->axes[axis].scroll.increment; - val = valuator_mask_get_double(&mask, axis) + adj; - valuator_mask_set_double(&mask, axis, val); + add_to_scroll_valuator(pDev, &mask, axis, adj); type = MotionNotify; buttons = 0; flags |= POINTER_EMULATED; @@ -1574,7 +1619,7 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, /* Now turn the smooth-scrolling axes back into emulated button presses * for legacy clients, based on the integer delta between before and now */ for (i = 0; i < valuator_mask_size(&mask); i++) { - if (i >= pDev->valuator->numAxes) + if ( !pDev->valuator || (i >= pDev->valuator->numAxes)) break; if (!valuator_mask_isset(&mask, i)) diff --git a/dix/touch.c b/dix/touch.c index 401cb98..04733ab 100644 --- a/dix/touch.c +++ b/dix/touch.c @@ -460,14 +460,17 @@ TouchEventHistoryPush(TouchPointInfoPtr ti, const DeviceEvent *ev) void TouchEventHistoryReplay(TouchPointInfoPtr ti, DeviceIntPtr dev, XID resource) { - InternalEvent *tel = InitEventList(GetMaximumEventsNum()); - ValuatorMask *mask = valuator_mask_new(0); + InternalEvent *tel; + ValuatorMask *mask; int i, nev; int flags; if (!ti->history) return; + tel = InitEventList(GetMaximumEventsNum()); + mask = valuator_mask_new(0); + valuator_mask_set_double(mask, 0, ti->history[0].valuators.data[0]); valuator_mask_set_double(mask, 1, ti->history[0].valuators.data[1]); diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index ec679df..7491f72 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -2324,6 +2324,7 @@ checkInput(serverLayoutPtr layout, Bool implicit_layout) current = dev; free(*dev); + *dev = NULL; do { *current = *(current + 1); diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 0974893..ba80aca 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -962,6 +962,7 @@ OsVendorInit(void) } #endif #endif + xf86UnblockSIGIO(0); beenHere = TRUE; } diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index 77b8000..bee407b 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -1059,26 +1059,24 @@ xf86PostMotionEventP(DeviceIntPtr device, xf86PostMotionEventM(device, is_absolute, &mask); } -void -xf86PostMotionEventM(DeviceIntPtr device, - int is_absolute, const ValuatorMask *mask) +static int +xf86CheckMotionEvent4DGA(DeviceIntPtr device, int is_absolute, + const ValuatorMask *mask) { - int flags = 0; - - if (valuator_mask_num_valuators(mask) > 0) { - if (is_absolute) - flags = POINTER_ABSOLUTE; - else - flags = POINTER_RELATIVE | POINTER_ACCELERATE; - } + int stolen = 0; #if XFreeXDGA + ScreenPtr scr = NULL; + int idx, i; + /* The evdev driver may not always send all axes across. */ - if (valuator_mask_isset(mask, 0) || valuator_mask_isset(mask, 1)) - if (miPointerGetScreen(device)) { - int index = miPointerGetScreen(device)->myNum; + if (valuator_mask_isset(mask, 0) || valuator_mask_isset(mask, 1)) { + scr = miPointerGetScreen(device); + if (scr) { int dx = 0, dy = 0; + idx = scr->myNum; + if (valuator_mask_isset(mask, 0)) { dx = valuator_mask_get(mask, 0); if (is_absolute) @@ -1091,11 +1089,75 @@ xf86PostMotionEventM(DeviceIntPtr device, dy -= device->last.valuators[1]; } - if (DGAStealMotionEvent(device, index, dx, dy)) - return; + if (DGAStealMotionEvent(device, idx, dx, dy)) + stolen = 1; + } + } + + for (i = 2; i < valuator_mask_size(mask); i++) { + AxisInfoPtr ax; + double incr; + int val, button; + + if (i >= device->valuator->numAxes) + break; + + if (!valuator_mask_isset(mask, i)) + continue; + + ax = &device->valuator->axes[i]; + + if (ax->scroll.type == SCROLL_TYPE_NONE) + continue; + + if (!scr) { + scr = miPointerGetScreen(device); + if (!scr) + break; + idx = scr->myNum; + } + + incr = ax->scroll.increment; + val = valuator_mask_get(mask, i); + + if (ax->scroll.type == SCROLL_TYPE_VERTICAL) { + if (incr * val < 0) + button = 4; /* up */ + else + button = 5; /* down */ + } else { /* SCROLL_TYPE_HORIZONTAL */ + if (incr * val < 0) + button = 6; /* left */ + else + button = 7; /* right */ } + + if (DGAStealButtonEvent(device, idx, button, 1) && + DGAStealButtonEvent(device, idx, button, 0)) + stolen = 1; + } + #endif + return stolen; +} + +void +xf86PostMotionEventM(DeviceIntPtr device, + int is_absolute, const ValuatorMask *mask) +{ + int flags = 0; + + if (xf86CheckMotionEvent4DGA(device, is_absolute, mask)) + return; + + if (valuator_mask_num_valuators(mask) > 0) { + if (is_absolute) + flags = POINTER_ABSOLUTE; + else + flags = POINTER_RELATIVE | POINTER_ACCELERATE; + } + QueuePointerEvents(device, MotionNotify, 0, flags, mask); } diff --git a/hw/xfree86/common/xf86sbusBus.c b/hw/xfree86/common/xf86sbusBus.c index c993b60..27d24f8 100644 --- a/hw/xfree86/common/xf86sbusBus.c +++ b/hw/xfree86/common/xf86sbusBus.c @@ -619,8 +619,9 @@ xf86SbusUseBuiltinMode(ScrnInfoPtr pScrn, sbusDevicePtr psdp) pScrn->virtualY = psdp->height; } -static sbusPaletteKeyIndex; -static DevPrivateKey sbusPaletteKey = &sbusPaletteKeyIndex; +static DevPrivateKeyRec sbusPaletteKeyRec; +#define sbusPaletteKey (&sbusPaletteKeyRec) + typedef struct _sbusCmap { sbusDevicePtr psdp; CloseScreenProcPtr CloseScreen; @@ -692,6 +693,9 @@ xf86SbusHandleColormaps(ScreenPtr pScreen, sbusDevicePtr psdp) struct fbcmap fbcmap; unsigned char data[2]; + if (!dixRegisterPrivateKey(sbusPaletteKey, PRIVATE_SCREEN, 0)) + FatalError("Cannot register sbus private key"); + cmap = xnfcalloc(1, sizeof(sbusCmapRec)); dixSetPrivate(&pScreen->devPrivates, sbusPaletteKey, cmap); cmap->psdp = psdp; diff --git a/hw/xfree86/doc/ddxDesign.xml b/hw/xfree86/doc/ddxDesign.xml index ca5efc9..6a08732 100644 --- a/hw/xfree86/doc/ddxDesign.xml +++ b/hw/xfree86/doc/ddxDesign.xml @@ -665,11 +665,6 @@ Here is what <function>InitOutput()</function> does: </para> <para> - The core server contains a list of mandatory modules. These are loaded - first. Currently the only module on this list is the bitmap font module. - </para> - - <para> The next set of modules loaded are those specified explicitly in the &k.module; section of the config file. </para> @@ -5994,26 +5989,6 @@ typedef struct { </blockquote></para></blockquote> - <blockquote><para> - <programlisting> - void LoadFont(FontModule *font); - </programlisting> - <blockquote><para> - This registers the entry points for the font rasteriser module - identified by <parameter>font</parameter>. The <structname>FontModule</structname> - struct is defined as: - - <programlisting> - typedef struct { - InitFont initFunc; - char * name; - pointer module; -} FontModule; - </programlisting> - </para> - - </blockquote></para></blockquote> - </sect2> </sect1> diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c index 8aa82d1..258ada5 100644 --- a/hw/xfree86/modes/xf86EdidModes.c +++ b/hw/xfree86/modes/xf86EdidModes.c @@ -723,7 +723,13 @@ static const struct { 1920, 1200, 75, 0}, { 1920, 1200, 85, 0}, { 1920, 1440, 60, 0}, { -1920, 1440, 75, 0},}; + 1920, 1440, 75, 0}, + /* fill up last byte */ + { + 0,0,0,0}, { + 0,0,0,0}, { + 0,0,0,0}, { + 0,0,0,0}, }; static DisplayModePtr DDCModesFromEstIII(unsigned char *est) @@ -732,10 +738,11 @@ DDCModesFromEstIII(unsigned char *est) int i, j, m; for (i = 0; i < 6; i++) { - for (j = 7; j > 0; j--) { + for (j = 7; j >= 0; j--) { if (est[i] & (1 << j)) { m = (i * 8) + (7 - j); - modes = xf86ModesAdd(modes, + if (EstIIIModes[m].w) + modes = xf86ModesAdd(modes, FindDMTMode(EstIIIModes[m].w, EstIIIModes[m].h, EstIIIModes[m].r, diff --git a/hw/xfree86/utils/man/cvt.man b/hw/xfree86/utils/man/cvt.man index f5075f5..2125fd1 100644 --- a/hw/xfree86/utils/man/cvt.man +++ b/hw/xfree86/utils/man/cvt.man @@ -19,8 +19,8 @@ standard is printed. This modeline can be included in __xservername__ .SH OPTIONS .TP 8 .BR refresh -Provide a vertical refresh rate in kHz. The CVT standard prefers either 50.0, -60.0, 75.0 or 85.0kHz. The default is 60.0kHz. +Provide a vertical refresh rate in Hz. The CVT standard prefers either 50.0, +60.0, 75.0 or 85.0Hz. The default is 60.0Hz. .TP 8 .BR \-v | \-\-verbose Warn verbosely when a given mode does not completely correspond with CVT diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index b686b00..339a93f 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -1281,6 +1281,11 @@ untrusted_str(NSEvent *e) } #endif +extern void +darwinEvents_lock(void); +extern void +darwinEvents_unlock(void); + - (void) sendX11NSEvent:(NSEvent *)e { NSPoint location = NSZeroPoint; @@ -1293,18 +1298,15 @@ untrusted_str(NSEvent *e) int modifierFlags; BOOL isMouseOrTabletEvent, isTabletEvent; -#ifdef HAVE_LIBDISPATCH - static dispatch_once_t once_pred; - dispatch_once(&once_pred, ^{ - tilt = NSZeroPoint; - darwinTabletCurrent = darwinTabletStylus; - }); -#else if (!darwinTabletCurrent) { + /* Ensure that the event system is initialized */ + darwinEvents_lock(); + darwinEvents_unlock(); + assert(darwinTabletStylus); + tilt = NSZeroPoint; darwinTabletCurrent = darwinTabletStylus; } -#endif isMouseOrTabletEvent = [e type] == NSLeftMouseDown || [e type] == NSOtherMouseDown || @@ -1593,6 +1595,11 @@ handle_mouse: case NSScrollWheel: { +#if MAC_OS_X_VERSION_MAX_ALLOWED < 1050 + float deltaX = [e deltaX]; + float deltaY = [e deltaY]; + BOOL isContinuous = NO; +#else CGFloat deltaX = [e deltaX]; CGFloat deltaY = [e deltaY]; CGEventRef cge = [e CGEvent]; @@ -1614,6 +1621,7 @@ handle_mouse: deltaY *= lineHeight / 5.0; } #endif +#endif #if !defined(XPLUGIN_VERSION) || XPLUGIN_VERSION == 0 /* If we're in the background, we need to send a MotionNotify event diff --git a/hw/xquartz/console_redirect.c b/hw/xquartz/console_redirect.c index 1e0e56b..91d693b 100644 --- a/hw/xquartz/console_redirect.c +++ b/hw/xquartz/console_redirect.c @@ -310,6 +310,20 @@ xq_asl_init(void) atexit(redirect_atexit); } +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1050 +#define fls(v) xq_fls(v) + +static inline int fls(int value) { + unsigned int b, v; + + v = *((unsigned int *)&value); + + for(b=0 ; v ; v >>= 1 , b++); + + return b; +} +#endif + int xq_asl_log_fd(aslclient asl, aslmsg msg, int level, int fd) { diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c index ebaa567..62a2852 100644 --- a/hw/xquartz/quartz.c +++ b/hw/xquartz/quartz.c @@ -69,6 +69,12 @@ #include <rootlessCommon.h> #include <Xplugin.h> +/* Work around a bug on Leopard's headers */ +#if defined (__LP64__) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 && MAC_OS_X_VERSION_MAX_ALLOWED < 1060 +extern OSErr UpdateSystemActivity(UInt8 activity); +#define OverallAct 0 +#endif + DevPrivateKeyRec quartzScreenKeyRec; int aquaMenuBarHeight = 0; QuartzModeProcsPtr quartzProcs = NULL; diff --git a/randr/randr.c b/randr/randr.c index 9f3df5f..5c1f70c 100644 --- a/randr/randr.c +++ b/randr/randr.c @@ -416,7 +416,7 @@ RRTellChanged(ScreenPtr pScreen) int i; if (pScrPriv->changed) { - UpdateCurrentTime(); + UpdateCurrentTimeIf(); if (pScrPriv->configChanged) { pScrPriv->lastConfigTime = currentTime; pScrPriv->configChanged = FALSE; diff --git a/xkb/XKBMAlloc.c b/xkb/XKBMAlloc.c index 645e905..3ffd5da 100644 --- a/xkb/XKBMAlloc.c +++ b/xkb/XKBMAlloc.c @@ -375,8 +375,10 @@ XkbResizeKeyType(XkbDescPtr xkb, nResize = 0; for (nTotal = 1, i = xkb->min_key_code; i <= xkb->max_key_code; i++) { width = XkbKeyGroupsWidth(xkb, i); - if (width < type->num_levels) + if (width < type->num_levels || width >= new_num_lvls) { + nTotal += XkbKeyNumSyms(xkb,i); continue; + } for (match = 0, g = XkbKeyNumGroups(xkb, i) - 1; (g >= 0) && (!match); g--) { if (XkbKeyKeyTypeIndex(xkb, i, g) == type_ndx) { @@ -384,7 +386,7 @@ XkbResizeKeyType(XkbDescPtr xkb, match = 1; } } - if ((!match) || (width >= new_num_lvls)) + if (!match) nTotal += XkbKeyNumSyms(xkb, i); else { nTotal += XkbKeyNumGroups(xkb, i) * new_num_lvls; diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c index 111bf9f..765772b 100644 --- a/xkb/xkbAccessX.c +++ b/xkb/xkbAccessX.c @@ -295,10 +295,15 @@ AccessXKRGExpire(OsTimerPtr timer, CARD32 now, pointer arg) cn.eventType = 0; cn.requestMajor = 0; cn.requestMinor = 0; - if (xkbi->desc->ctrls->enabled_ctrls & XkbSlowKeysMask) + if (xkbi->desc->ctrls->enabled_ctrls & XkbSlowKeysMask) { AccessXKRGTurnOff((DeviceIntPtr) arg, &cn); - else + LogMessage(X_INFO, "XKB SlowKeys are disabled.\n"); + } + else { AccessXKRGTurnOn((DeviceIntPtr) arg, XkbSlowKeysMask, &cn); + LogMessage(X_INFO, "XKB SlowKeys are now enabled. Hold shift to disable.\n"); + } + return 0; }
signature.asc
Description: Digital signature