xorg-server: Changes to 'ubuntu-maverick'
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.douglas@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.douglas@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.milone@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.milone@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 <linusarver@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 <drozofil@gmail.com>
+Reviewed-by: Adam Jackson <ajax@redhat.com>
+Reviewed-by: Matt Turner <mattst88@gmail.com>
+Tested-by: Linus Arver <linusarver@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
Reply to: