debian/changelog | 16 + debian/patches/207_Xext_panoramiXprocs_fix_typo.patch | 33 +++ debian/patches/208_gestures_through_event_queue.patch | 153 ++++++++++++++++++ debian/patches/series | 2 4 files changed, 204 insertions(+)
New commits: commit 083fefe6447688573b4417de515ea43c0285403d Author: Chase Douglas <chase.doug...@canonical.com> Date: Mon Dec 13 11:16:29 2010 -0800 Move gesture event handling to server in non-signal context (LP: #670016) * Move gesture event handling to server in non-signal context (LP: #670016) - Add debian/patches/208_gestures_through_event_queue.patch diff --git a/debian/changelog b/debian/changelog index bdc6d15..806a1f3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +xorg-server (2:1.9.0-0ubuntu7.2) UNRELEASED; urgency=low + + * Move gesture event handling to server in non-signal context + (LP: #670016) + - Add debian/patches/208_gestures_through_event_queue.patch + + -- Chase Douglas <chase.doug...@canonical.com> Mon, 13 Dec 2010 10:39:40 -0800 + xorg-server (2:1.9.0-0ubuntu7.1) maverick-proposed; urgency=low * debian/patches/207_Xext_panoramiXprocs_fix_typo.patch: diff --git a/debian/patches/208_gestures_through_event_queue.patch b/debian/patches/208_gestures_through_event_queue.patch new file mode 100644 index 0000000..b2b8b44 --- /dev/null +++ b/debian/patches/208_gestures_through_event_queue.patch @@ -0,0 +1,153 @@ +Index: xorg-server-670016/hw/xfree86/common/xf86Xinput.c +=================================================================== +--- xorg-server-670016.orig/hw/xfree86/common/xf86Xinput.c 2010-12-08 17:10:48.857373180 -0800 ++++ xorg-server-670016/hw/xfree86/common/xf86Xinput.c 2010-12-08 17:49:26.426650900 -0800 +@@ -106,6 +106,15 @@ + + #include "os.h" + ++#include "gestureproto.h" ++ ++_X_EXPORT void ++xf86PostGestureEvent(DeviceIntPtr dev, unsigned short x, unsigned short y, ++ unsigned short client_id, unsigned short gesture_id, ++ unsigned short gesture_type, Window root, Window event, ++ Window child, unsigned short status, ++ unsigned short num_props, float *props); ++ + EventListPtr xf86Events = NULL; + + /** +@@ -976,6 +985,40 @@ + */ + + void ++xf86PostGestureEvent(DeviceIntPtr dev, unsigned short x, unsigned short y, ++ unsigned short client_id, unsigned short gesture_id, ++ unsigned short gesture_type, Window root, Window event, ++ Window child, unsigned short status, ++ unsigned short num_props, float *props) ++{ ++ DeviceEvent *ev = (DeviceEvent *)xf86Events->event; ++ ++ if (num_props > MAX_GESTURE_PROPS) ++ num_props = MAX_GESTURE_PROPS; ++ ++ memset(ev, 0, sizeof(DeviceEvent)); ++ ev->header = ET_Internal; ++ ev->length = sizeof(DeviceEvent); ++ ev->time = GetTimeInMillis(); ++ ev->deviceid = dev->id; ++ ev->sourceid = dev->id; ++ ev->type = ET_Gesture; ++ ev->root_x = x; ++ ev->root_y = y; ++ ev->gesture.client_id = client_id; ++ ev->gesture.id = gesture_id; ++ ev->gesture.type = gesture_type; ++ ev->root = root; ++ ev->gesture.event = event; ++ ev->gesture.child = child; ++ ev->gesture.status = status; ++ ev->gesture.num_props = num_props; ++ memcpy(ev->gesture.props, props, num_props * sizeof(float)); ++ ++ mieqEnqueue(dev, (InternalEvent*)ev); ++} ++ ++void + xf86PostMotionEvent(DeviceIntPtr device, + int is_absolute, + int first_valuator, +Index: xorg-server-670016/include/eventstr.h +=================================================================== +--- xorg-server-670016.orig/include/eventstr.h 2010-12-08 17:09:54.601331000 -0800 ++++ xorg-server-670016/include/eventstr.h 2010-12-08 17:10:49.153375094 -0800 +@@ -65,6 +65,7 @@ + ET_RawButtonRelease, + ET_RawMotion, + ET_XQuartz, ++ ET_Gesture, + ET_Internal = 0xFF /* First byte */ + }; + +@@ -72,6 +73,9 @@ + FatalError("Wrong event type %d.\n", \ + ((InternalEvent*)(ev))->any.header); + ++/* Should match DIM_GRAIL_PROP in grail.h */ ++#define MAX_GESTURE_PROPS 32 ++ + /** + * Used for ALL input device events internal in the server until + * copied into the matching protocol event. +@@ -114,6 +118,16 @@ + uint8_t locked; /**< XKB locked group */ + uint8_t effective;/**< XKB effective group */ + } group; ++ struct { ++ uint16_t client_id; ++ uint16_t id; ++ uint16_t type; ++ Window event; ++ Window child; ++ uint16_t status; ++ uint16_t num_props; ++ float props[MAX_GESTURE_PROPS]; ++ } gesture; + Window root; /**< Root window of the event */ + int corestate; /**< Core key/button state BEFORE the event */ + int key_repeat; /**< Internally-generated key repeat event */ +Index: xorg-server-670016/mi/mieq.c +=================================================================== +--- xorg-server-670016.orig/mi/mieq.c 2010-12-08 17:09:54.601331000 -0800 ++++ xorg-server-670016/mi/mieq.c 2010-12-08 17:10:49.157375120 -0800 +@@ -58,6 +58,8 @@ + # include <X11/extensions/dpmsconst.h> + #endif + ++#include "gestureproto.h" ++ + #define QUEUE_SIZE 512 + + #define EnqueueScreen(dev) dev->spriteInfo->sprite->pEnqueueScreen +@@ -370,6 +372,39 @@ + + CHECKEVENT(event); + ++ if (event->any.header == ET_Internal && event->any.type == ET_Gesture){ ++ GestureEvent gev; ++ DeviceEvent *ev = (DeviceEvent *)event; ++ ClientPtr client = clients[ev->gesture.client_id]; ++ ++ /* Check if client still exists */ ++ if (!client) ++ return; ++ ++ gev.type = GenericEvent; ++ gev.extension = GestureReqCode; ++ gev.sequenceNumber = client->sequence; ++ gev.evtype = 0; ++ gev.time = ev->time; ++ gev.length = (sizeof(GestureEvent) + ++ ev->gesture.num_props * sizeof(float) - ++ sizeof(xEvent)) / 4; ++ gev.gesture_id = ev->gesture.id; ++ gev.gesture_type = ev->gesture.type; ++ gev.device_id = ev->deviceid; ++ gev.root = ev->root; ++ gev.event = ev->gesture.event; ++ gev.child = ev->gesture.child; ++ gev.focus_x = ev->root_x; ++ gev.focus_y = ev->root_y; ++ gev.status = ev->gesture.status; ++ gev.num_props = ev->gesture.num_props; ++ ++ WriteToClient(client, sizeof(GestureEvent), &gev); ++ WriteToClient(client, sizeof(float) * gev.num_props, ev->gesture.props); ++ return; ++ } ++ + /* Custom event handler */ + handler = miEventQueue.handlers[event->any.type]; + diff --git a/debian/patches/series b/debian/patches/series index 7307ca7..1f7ad3e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -37,3 +37,4 @@ 205_udev-product-ids.patch 206_intel_8xx_default_to_fbdev.patch 207_Xext_panoramiXprocs_fix_typo.patch +208_gestures_through_event_queue.patch commit b280bb2a64b45878042559c94bba62041932ec93 Author: Alberto Milone <alberto.mil...@canonical.com> Date: Mon Dec 13 11:16:06 2010 -0800 debian/patches/207_Xext_panoramiXprocs_fix_typo.patch: * debian/patches/207_Xext_panoramiXprocs_fix_typo.patch: - This prevents Qt applications from crashing when using Xinerama multi-head with drivers such as nvidia (LP: #650539). diff --git a/debian/changelog b/debian/changelog index 0c3bc86..bdc6d15 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +xorg-server (2:1.9.0-0ubuntu7.1) maverick-proposed; urgency=low + + * debian/patches/207_Xext_panoramiXprocs_fix_typo.patch: + - This prevents Qt applications from crashing when using + Xinerama multi-head with drivers such as nvidia (LP: #650539). + + -- Alberto Milone <alberto.mil...@canonical.com> Mon, 22 Nov 2010 18:55:50 +0100 + xorg-server (2:1.9.0-0ubuntu7) maverick; urgency=low * debian/control: diff --git a/debian/patches/207_Xext_panoramiXprocs_fix_typo.patch b/debian/patches/207_Xext_panoramiXprocs_fix_typo.patch new file mode 100644 index 0000000..d919c64 --- /dev/null +++ b/debian/patches/207_Xext_panoramiXprocs_fix_typo.patch @@ -0,0 +1,33 @@ +From 78f94f19aab66a1e5331df0ce29f36e310b4195d Mon Sep 17 00:00:00 2001 +From: Linus Arver <linusar...@gmail.com> +Date: Sun, 17 Oct 2010 19:26:01 +0000 +Subject: Xext: panoramiXprocs: fix typo + +This fixes a typo introduced in commit +80b5d3a3264d2c5167e5ac85a3b04af0f89cece1. The pointer pDst was changed +unintentionally to pWin from a copy/paste error. This resulted in all +QT-based apps and some tcl/tk ones (like fontforge) to crash X 1.9 on +starting up, when Xinerama was enabled. + +Bug report: https://bbs.archlinux.org/viewtopic.php?id=106125 + +Signed-off-by: Elie Bleton <drozo...@gmail.com> +Reviewed-by: Adam Jackson <a...@redhat.com> +Reviewed-by: Matt Turner <matts...@gmail.com> +Tested-by: Linus Arver <linusar...@gmail.com> +--- +diff --git a/Xext/panoramiXprocs.c b/Xext/panoramiXprocs.c +index 67b4030..d843168 100644 +--- a/Xext/panoramiXprocs.c ++++ b/Xext/panoramiXprocs.c +@@ -634,7 +634,7 @@ int PanoramiXTranslateCoords(ClientPtr client) + rep.dstX = x - pDst->drawable.x; + rep.dstY = y - pDst->drawable.y; + if((pDst == screenInfo.screens[0]->root) || +- (pWin->drawable.id == screenInfo.screens[0]->screensaver.wid)) ++ (pDst->drawable.id == screenInfo.screens[0]->screensaver.wid)) + { + rep.dstX += screenInfo.screens[0]->x; + rep.dstY += screenInfo.screens[0]->y; +-- +cgit v0.8.3-6-g21f6 diff --git a/debian/patches/series b/debian/patches/series index 39e0c56..7307ca7 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -36,3 +36,4 @@ 204_fix-neg-sync-transition.patch 205_udev-product-ids.patch 206_intel_8xx_default_to_fbdev.patch +207_Xext_panoramiXprocs_fix_typo.patch -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1psdyr-0003fs...@alioth.debian.org