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

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: