server 1.13.1
This commit is contained in:
parent
5314e227e9
commit
d0ca88f1b9
1
.gitignore
vendored
1
.gitignore
vendored
@ -20,3 +20,4 @@ xorg-server-1.9.1.tar.bz2
|
||||
/xorg-server-20120808.tar.xz
|
||||
/xorg-server-20120822.tar.xz
|
||||
/xorg-server-1.13.0.tar.bz2
|
||||
/xorg-server-1.13.1.tar.bz2
|
||||
|
@ -1,36 +0,0 @@
|
||||
From bbf4fe102fb67ed43fe57df085c40de525b8f4c0 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Thu, 25 Oct 2012 15:03:50 +0200
|
||||
Subject: [PATCH] Sync TouchListener memory allocation with population in
|
||||
TouchSetupListeners()
|
||||
|
||||
The allocated TouchListener array may fall short by 1 if hitting the worst case
|
||||
situation where there's an active grab, passive grabs on each window in the
|
||||
sprite trace and event selection for touch in one of the windows. This may lead
|
||||
to memory corruptions as the array is overflown.
|
||||
|
||||
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>
|
||||
---
|
||||
dix/touch.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dix/touch.c b/dix/touch.c
|
||||
index e64a626..5f77be5 100644
|
||||
--- a/dix/touch.c
|
||||
+++ b/dix/touch.c
|
||||
@@ -572,8 +572,8 @@ TouchBuildSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
|
||||
return FALSE;
|
||||
|
||||
/* Mark which grabs/event selections we're delivering to: max one grab per
|
||||
- * window plus the bottom-most event selection. */
|
||||
- ti->listeners = calloc(sprite->spriteTraceGood + 1, sizeof(*ti->listeners));
|
||||
+ * window plus the bottom-most event selection, plus any active grab. */
|
||||
+ ti->listeners = calloc(sprite->spriteTraceGood + 2, sizeof(*ti->listeners));
|
||||
if (!ti->listeners) {
|
||||
sprite->spriteTraceGood = 0;
|
||||
return FALSE;
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,49 +0,0 @@
|
||||
From 314776eb369ca2e438907795ae030dd743c281fc Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stone <daniel@fooishbar.org>
|
||||
Date: Fri, 7 Sep 2012 18:30:23 +0100
|
||||
Subject: [PATCH] Touch: Fix duplicate TouchBegin selection with virtual
|
||||
devices
|
||||
|
||||
Given the following scenario:
|
||||
1) client A selects for TouchBegin on window W for device D
|
||||
2) client B selects for TouchBegin on window W for XIAllDevices
|
||||
3) client C selects for TouchBegin on window W with device E
|
||||
|
||||
Step 3 will fail with BadImplementation, because attempting to look up
|
||||
XIAllDevices or XIAllMasterDevices with dixLookupDevices doesn't work.
|
||||
This should succeed (or, if it was selecting for device D, fail with
|
||||
BadAccess as it would be a duplicate selection).
|
||||
|
||||
Fix this by performing the appropriate lookup for virtual devices.
|
||||
|
||||
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
|
||||
Cc: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Cc: Chase Douglas <chase.douglas@ubuntu.com>
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
Xi/xiselectev.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c
|
||||
index 0e45cb8..ab1b624 100644
|
||||
--- a/Xi/xiselectev.c
|
||||
+++ b/Xi/xiselectev.c
|
||||
@@ -180,8 +180,13 @@ ProcXISelectEvents(ClientPtr client)
|
||||
if (CLIENT_ID(iclient->resource) == client->index)
|
||||
continue;
|
||||
|
||||
- dixLookupDevice(&tmp, evmask->deviceid, serverClient,
|
||||
- DixReadAccess);
|
||||
+ if (evmask->deviceid == XIAllDevices)
|
||||
+ tmp = inputInfo.all_devices;
|
||||
+ else if (evmask->deviceid == XIAllMasterDevices)
|
||||
+ tmp = inputInfo.all_master_devices;
|
||||
+ else
|
||||
+ dixLookupDevice(&tmp, evmask->deviceid, serverClient,
|
||||
+ DixReadAccess);
|
||||
if (!tmp)
|
||||
return BadImplementation; /* this shouldn't happen */
|
||||
|
||||
--
|
||||
1.8.0.1
|
||||
|
@ -1,60 +0,0 @@
|
||||
From 0068a5ae02c6b9ba3a7c8e83de452b6383222b8d Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Mon, 29 Oct 2012 18:33:50 +0100
|
||||
Subject: [PATCH] Xi: Call UpdateDeviceState() after the first emulated motion
|
||||
event
|
||||
|
||||
The emulated motion event that happens before TouchBegin/ButtonPress should
|
||||
contain no buttons set in the mask, as it virtually happens at a time when
|
||||
the button is not yet pressed. This is known to confuse GTK+ and Abiword
|
||||
to different degrees, as enclosing button press/release events are expected
|
||||
around changes in the button mask.
|
||||
|
||||
Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
Xi/exevents.c | 15 ++++++++++-----
|
||||
1 file changed, 10 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/Xi/exevents.c b/Xi/exevents.c
|
||||
index 4cbeb37..769bb41 100644
|
||||
--- a/Xi/exevents.c
|
||||
+++ b/Xi/exevents.c
|
||||
@@ -1568,15 +1568,16 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
|
||||
else
|
||||
touchid = ev->device_event.touchid;
|
||||
|
||||
- if (emulate_pointer)
|
||||
- UpdateDeviceState(dev, &ev->device_event);
|
||||
-
|
||||
if (type == ET_TouchBegin) {
|
||||
ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid,
|
||||
emulate_pointer);
|
||||
}
|
||||
- else
|
||||
+ else {
|
||||
+ if (emulate_pointer)
|
||||
+ UpdateDeviceState(dev, &ev->device_event);
|
||||
+
|
||||
ti = TouchFindByClientID(dev, touchid);
|
||||
+ }
|
||||
|
||||
/* Under the following circumstances we create a new touch record for an
|
||||
* existing touch:
|
||||
@@ -1615,8 +1616,12 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
|
||||
/* if emulate_pointer is set, emulate the motion event right
|
||||
* here, so we can ignore it for button event emulation. TouchUpdate
|
||||
* events which _only_ emulate motion just work normally */
|
||||
- if (emulate_pointer && ev->any.type != ET_TouchUpdate)
|
||||
+ if (emulate_pointer && ev->any.type != ET_TouchUpdate) {
|
||||
DeliverEmulatedMotionEvent(dev, ti, ev);
|
||||
+
|
||||
+ if (ev->any.type == ET_TouchBegin)
|
||||
+ UpdateDeviceState(dev, &ev->device_event);
|
||||
+ }
|
||||
if (emulate_pointer && IsMaster(dev))
|
||||
CheckMotion(&ev->device_event, dev);
|
||||
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,36 +0,0 @@
|
||||
From 3e6358ee6c33979329b78fe2097a1fdf76fb69cd Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Drake <dsd@laptop.org>
|
||||
Date: Fri, 7 Sep 2012 21:48:35 -0400
|
||||
Subject: [PATCH] Xi: Don't check for TOUCH_END, it's never set
|
||||
|
||||
This flag is never set, so checking for it here means that we'll
|
||||
never release the simulated mouse button press after the user touches
|
||||
(and releases) the touchscreen for the first time.
|
||||
|
||||
Fixes a problem where the XO laptop touchpad became totally
|
||||
unusable after touching the screen for the first time (since X then
|
||||
behaved as if the mouse button was held down all the time).
|
||||
|
||||
Signed-off-by: Daniel Drake <dsd@laptop.org>
|
||||
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
Xi/exevents.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/Xi/exevents.c b/Xi/exevents.c
|
||||
index 494d07e..6ed4991 100644
|
||||
--- a/Xi/exevents.c
|
||||
+++ b/Xi/exevents.c
|
||||
@@ -949,8 +949,6 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent *event)
|
||||
|
||||
if (!(event->flags & TOUCH_POINTER_EMULATED))
|
||||
return DONT_PROCESS;
|
||||
- if (!(event->flags & TOUCH_END))
|
||||
- return DONT_PROCESS;
|
||||
|
||||
DecreaseButtonCount(device, key, &t->buttonsDown, &t->motionMask,
|
||||
&t->state);
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 676447190190d8546165e21be242cf16dd69f5ae Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Wed, 17 Oct 2012 14:13:29 +1000
|
||||
Subject: [PATCH] Xi: don't deliver TouchEnd to a client waiting for
|
||||
TouchBegin (#55738)
|
||||
|
||||
If a client is still waiting for the TouchBegin, don't deliver a TouchEnd
|
||||
event.
|
||||
|
||||
X.Org Bug 55738 <http://bugs.freedesktop.org/show_bug.cgi?id=55738>
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Tested-by: Thomas Jaeger <thjaeger@gmail.com>
|
||||
Reviewed-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
Xi/exevents.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/Xi/exevents.c b/Xi/exevents.c
|
||||
index 6ed4991..4cbeb37 100644
|
||||
--- a/Xi/exevents.c
|
||||
+++ b/Xi/exevents.c
|
||||
@@ -1862,6 +1862,11 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev,
|
||||
goto out;
|
||||
}
|
||||
|
||||
+ if (listener->state == LISTENER_AWAITING_BEGIN) {
|
||||
+ listener->state = LISTENER_HAS_END;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
/* Event in response to reject */
|
||||
if (ev->device_event.flags & TOUCH_REJECT) {
|
||||
if (listener->state != LISTENER_HAS_END)
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,41 +0,0 @@
|
||||
From 6d9beff6ce231527dfd59e896c6cf3730555121a Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@gmail.com>
|
||||
Date: Thu, 13 Sep 2012 18:44:06 +1000
|
||||
Subject: [PATCH] config/udev: ignore change on drm devices
|
||||
|
||||
for input devices we handle change like remove/add, but for
|
||||
drm devices we get change events when we hotplug outputs,
|
||||
so lets just ignore change at this level, and let the drivers
|
||||
handle it. We may in the future want to route driver udev
|
||||
from here instead.
|
||||
|
||||
Reported-by: Timo Aaltonen <timo.aaltonen@canonical.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
config/udev.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/config/udev.c b/config/udev.c
|
||||
index c2d00bb..454838f 100644
|
||||
--- a/config/udev.c
|
||||
+++ b/config/udev.c
|
||||
@@ -300,9 +300,15 @@ wakeup_handler(pointer data, int err, pointer read_mask)
|
||||
return;
|
||||
action = udev_device_get_action(udev_device);
|
||||
if (action) {
|
||||
- if (!strcmp(action, "add") || !strcmp(action, "change")) {
|
||||
+ if (!strcmp(action, "add")) {
|
||||
device_removed(udev_device);
|
||||
device_added(udev_device);
|
||||
+ } else if (!strcmp(action, "change")) {
|
||||
+ /* ignore change for the drm devices */
|
||||
+ if (strcmp(udev_device_get_subsystem(udev_device), "drm")) {
|
||||
+ device_removed(udev_device);
|
||||
+ device_added(udev_device);
|
||||
+ }
|
||||
}
|
||||
else if (!strcmp(action, "remove"))
|
||||
device_removed(udev_device);
|
||||
--
|
||||
1.7.10.2
|
||||
|
@ -1,60 +0,0 @@
|
||||
From 9d6b8365702e4648e793fea21ad22f7174558680 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Fri, 28 Sep 2012 11:49:29 +1000
|
||||
Subject: [PATCH] dix: fix crash on XI 1.x grabs on disabled devices.
|
||||
(#54934)
|
||||
|
||||
If the device is disabled, the sprite window is NULL and dereferencing
|
||||
crashes the server.
|
||||
|
||||
This is only triggered for XI 1.x grabs (ProcXGrabDevice) as XI2 grabs would
|
||||
trigger another code path, creating a sprite for the disabled device as if
|
||||
detaching it (which is wrong and fixed with this patch too).
|
||||
|
||||
Grabbing a disabled device doesn't make sense as it won't send events
|
||||
anyway. However, the protocol specs do not prohibit it, so we need to keep
|
||||
it working.
|
||||
Luckily, oldWin is only used for focus out events, which aren't necessary
|
||||
given that the device is disabled.
|
||||
|
||||
X.Org Bug 54934 <http://bugs.freedesktop.org/show_bug.cgi?id=54934>
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Reviewed-by: Chase Douglas <chase.douglas@ubuntu.com>
|
||||
---
|
||||
dix/events.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dix/events.c b/dix/events.c
|
||||
index 3b40446..c0e330b 100644
|
||||
--- a/dix/events.c
|
||||
+++ b/dix/events.c
|
||||
@@ -1555,11 +1555,13 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time,
|
||||
WindowPtr oldWin;
|
||||
|
||||
/* slave devices need to float for the duration of the grab. */
|
||||
- if (grab->grabtype == XI2 &&
|
||||
+ if (grab->grabtype == XI2 && keybd->enabled &&
|
||||
!(passive & ImplicitGrabMask) && !IsMaster(keybd))
|
||||
DetachFromMaster(keybd);
|
||||
|
||||
- if (grabinfo->grab)
|
||||
+ if (!keybd->enabled)
|
||||
+ oldWin = NULL;
|
||||
+ else if (grabinfo->grab)
|
||||
oldWin = grabinfo->grab->window;
|
||||
else if (keybd->focus)
|
||||
oldWin = keybd->focus->win;
|
||||
@@ -1569,7 +1571,8 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time,
|
||||
oldWin = keybd->focus->win;
|
||||
if (keybd->valuator)
|
||||
keybd->valuator->motionHintWindow = NullWindow;
|
||||
- DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab);
|
||||
+ if (oldWin)
|
||||
+ DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab);
|
||||
if (syncEvents.playingEvents)
|
||||
grabinfo->grabTime = syncEvents.time;
|
||||
else
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 171059409177652b9b7af31506dd8ee0e018330d Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Thu, 20 Sep 2012 01:22:32 +1000
|
||||
Subject: [PATCH] dix: set the device transformation matrix
|
||||
|
||||
The property handler is registered after setting the property, so
|
||||
dev->transform remains as all-zeros. That causes pixman_f_transform_invert()
|
||||
to fail (transformAbsolute()) and invert remains as garbage. In some cases,
|
||||
this may then cause a cursor jump to 0,0.
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
dix/devices.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/dix/devices.c b/dix/devices.c
|
||||
index 46c759c..3cacbeb 100644
|
||||
--- a/dix/devices.c
|
||||
+++ b/dix/devices.c
|
||||
@@ -306,6 +306,9 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
|
||||
/* unity matrix */
|
||||
memset(transform, 0, sizeof(transform));
|
||||
transform[0] = transform[4] = transform[8] = 1.0f;
|
||||
+ dev->transform.m[0][0] = 1.0;
|
||||
+ dev->transform.m[1][1] = 1.0;
|
||||
+ dev->transform.m[2][2] = 1.0;
|
||||
|
||||
XIChangeDeviceProperty(dev, XIGetKnownProperty(XI_PROP_TRANSFORM),
|
||||
XIGetKnownProperty(XATOM_FLOAT), 32,
|
||||
--
|
||||
1.7.11.2
|
||||
|
@ -1,124 +0,0 @@
|
||||
From e6ca9179443dcdd16d0cbfb2a571a7a9fde56a25 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Thu, 6 Sep 2012 16:33:54 +1000
|
||||
Subject: [PATCH] dri2: invalidate drawable after sharing pixmap
|
||||
|
||||
After we share the pixmap, the backing storage may have changed,
|
||||
and we need to invalidate and buffers pointing at it.
|
||||
|
||||
This fixes GL compositors and prime windows lacking contents initially.
|
||||
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
hw/xfree86/dri2/dri2.c | 74 ++++++++++++++++++++++++++++----------------------
|
||||
1 file changed, 42 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
|
||||
index 23f589c..40963c3 100644
|
||||
--- a/hw/xfree86/dri2/dri2.c
|
||||
+++ b/hw/xfree86/dri2/dri2.c
|
||||
@@ -766,6 +766,44 @@ static inline PixmapPtr GetDrawablePixmap(DrawablePtr drawable)
|
||||
}
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * A TraverseTree callback to invalidate all windows using the same
|
||||
+ * pixmap
|
||||
+ */
|
||||
+static int
|
||||
+DRI2InvalidateWalk(WindowPtr pWin, pointer data)
|
||||
+{
|
||||
+ if (pWin->drawable.pScreen->GetWindowPixmap(pWin) != data)
|
||||
+ return WT_DONTWALKCHILDREN;
|
||||
+ DRI2InvalidateDrawable(&pWin->drawable);
|
||||
+ return WT_WALKCHILDREN;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+DRI2InvalidateDrawableAll(DrawablePtr pDraw)
|
||||
+{
|
||||
+ if (pDraw->type == DRAWABLE_WINDOW) {
|
||||
+ WindowPtr pWin = (WindowPtr) pDraw;
|
||||
+ PixmapPtr pPixmap = pDraw->pScreen->GetWindowPixmap(pWin);
|
||||
+
|
||||
+ /*
|
||||
+ * Find the top-most window using this pixmap
|
||||
+ */
|
||||
+ while (pWin->parent &&
|
||||
+ pDraw->pScreen->GetWindowPixmap(pWin->parent) == pPixmap)
|
||||
+ pWin = pWin->parent;
|
||||
+
|
||||
+ /*
|
||||
+ * Walk the sub-tree to invalidate all of the
|
||||
+ * windows using the same pixmap
|
||||
+ */
|
||||
+ TraverseTree(pWin, DRI2InvalidateWalk, pPixmap);
|
||||
+ DRI2InvalidateDrawable(&pPixmap->drawable);
|
||||
+ }
|
||||
+ else
|
||||
+ DRI2InvalidateDrawable(pDraw);
|
||||
+}
|
||||
+
|
||||
DrawablePtr DRI2UpdatePrime(DrawablePtr pDraw, DRI2BufferPtr pDest)
|
||||
{
|
||||
DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw);
|
||||
@@ -831,6 +869,8 @@ DrawablePtr DRI2UpdatePrime(DrawablePtr pDraw, DRI2BufferPtr pDest)
|
||||
spix->screen_x = mpix->screen_x;
|
||||
spix->screen_y = mpix->screen_y;
|
||||
#endif
|
||||
+
|
||||
+ DRI2InvalidateDrawableAll(pDraw);
|
||||
return &spix->drawable;
|
||||
}
|
||||
|
||||
@@ -1048,18 +1088,7 @@ DRI2WaitSwap(ClientPtr client, DrawablePtr pDrawable)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
-/*
|
||||
- * A TraverseTree callback to invalidate all windows using the same
|
||||
- * pixmap
|
||||
- */
|
||||
-static int
|
||||
-DRI2InvalidateWalk(WindowPtr pWin, pointer data)
|
||||
-{
|
||||
- if (pWin->drawable.pScreen->GetWindowPixmap(pWin) != data)
|
||||
- return WT_DONTWALKCHILDREN;
|
||||
- DRI2InvalidateDrawable(&pWin->drawable);
|
||||
- return WT_WALKCHILDREN;
|
||||
-}
|
||||
+
|
||||
|
||||
int
|
||||
DRI2SwapBuffers(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc,
|
||||
@@ -1162,26 +1191,7 @@ DRI2SwapBuffers(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc,
|
||||
*/
|
||||
*swap_target = pPriv->swap_count + pPriv->swapsPending;
|
||||
|
||||
- if (pDraw->type == DRAWABLE_WINDOW) {
|
||||
- WindowPtr pWin = (WindowPtr) pDraw;
|
||||
- PixmapPtr pPixmap = pScreen->GetWindowPixmap(pWin);
|
||||
-
|
||||
- /*
|
||||
- * Find the top-most window using this pixmap
|
||||
- */
|
||||
- while (pWin->parent &&
|
||||
- pScreen->GetWindowPixmap(pWin->parent) == pPixmap)
|
||||
- pWin = pWin->parent;
|
||||
-
|
||||
- /*
|
||||
- * Walk the sub-tree to invalidate all of the
|
||||
- * windows using the same pixmap
|
||||
- */
|
||||
- TraverseTree(pWin, DRI2InvalidateWalk, pPixmap);
|
||||
- DRI2InvalidateDrawable(&pPixmap->drawable);
|
||||
- }
|
||||
- else
|
||||
- DRI2InvalidateDrawable(pDraw);
|
||||
+ DRI2InvalidateDrawableAll(pDraw);
|
||||
|
||||
return Success;
|
||||
}
|
||||
--
|
||||
1.7.12
|
||||
|
@ -1,30 +0,0 @@
|
||||
From a26837d20ea626943398f2390bfd00c22be3468b Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@dhcp-40-90.bne.redhat.com>
|
||||
Date: Mon, 10 Sep 2012 12:02:55 +1000
|
||||
Subject: [PATCH] scan pci after probing devices
|
||||
|
||||
---
|
||||
hw/xfree86/common/xf86platformBus.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
||||
index 502d3c4..5e05791 100644
|
||||
--- a/hw/xfree86/common/xf86platformBus.c
|
||||
+++ b/hw/xfree86/common/xf86platformBus.c
|
||||
@@ -213,11 +213,12 @@ xf86platformProbe(void)
|
||||
int i;
|
||||
Bool pci = TRUE;
|
||||
|
||||
+ config_odev_probe(&xf86PlatformDeviceProbe);
|
||||
+
|
||||
if (!xf86scanpci()) {
|
||||
pci = FALSE;
|
||||
}
|
||||
|
||||
- config_odev_probe(&xf86PlatformDeviceProbe);
|
||||
for (i = 0; i < xf86_num_platform_devices; i++) {
|
||||
char *busid = xf86_get_platform_attrib(i, ODEV_ATTRIB_BUSID);
|
||||
|
||||
--
|
||||
1.7.12
|
||||
|
@ -1,59 +0,0 @@
|
||||
From 41b5b320ed1509be1e885992fc804322161d1533 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Mon, 27 Aug 2012 15:20:11 +1000
|
||||
Subject: [PATCH 3/3] xf86: fix multi-seat video device support.
|
||||
|
||||
If we are not seat 0 the following apply:
|
||||
|
||||
don't probe any bus other than platform
|
||||
don't probe any drivers other than platform
|
||||
assume the first platform device we match on the bus is the primary GPU.
|
||||
|
||||
This just adds checks in the correct places to ensure this, and
|
||||
with this X can now start on a secondary seat for an output device.
|
||||
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
hw/xfree86/common/xf86Bus.c | 4 ++++
|
||||
hw/xfree86/common/xf86platformBus.c | 3 +++
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
|
||||
index 6de8409..40f4921 100644
|
||||
--- a/hw/xfree86/common/xf86Bus.c
|
||||
+++ b/hw/xfree86/common/xf86Bus.c
|
||||
@@ -81,6 +81,8 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only)
|
||||
if (drv->platformProbe != NULL) {
|
||||
foundScreen = xf86platformProbeDev(drv);
|
||||
}
|
||||
+ if (ServerIsNotSeat0())
|
||||
+ return foundScreen;
|
||||
#endif
|
||||
|
||||
#ifdef XSERVER_LIBPCIACCESS
|
||||
@@ -214,6 +216,8 @@ xf86BusProbe(void)
|
||||
{
|
||||
#ifdef XSERVER_PLATFORM_BUS
|
||||
xf86platformProbe();
|
||||
+ if (ServerIsNotSeat0())
|
||||
+ return;
|
||||
#endif
|
||||
#ifdef XSERVER_LIBPCIACCESS
|
||||
xf86PciProbe();
|
||||
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
||||
index 502d3c4..0b06e16 100644
|
||||
--- a/hw/xfree86/common/xf86platformBus.c
|
||||
+++ b/hw/xfree86/common/xf86platformBus.c
|
||||
@@ -358,6 +358,9 @@ xf86platformProbeDev(DriverPtr drvp)
|
||||
break;
|
||||
}
|
||||
else {
|
||||
+ /* for non-seat0 servers assume first device is the master */
|
||||
+ if (ServerIsNotSeat0())
|
||||
+ break;
|
||||
if (xf86_platform_devices[j].pdev) {
|
||||
if (xf86IsPrimaryPlatform(&xf86_platform_devices[j]))
|
||||
break;
|
||||
--
|
||||
1.7.10.2
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
bde3d178b756597d2ec2a19ef60d2e1f xorg-server-1.13.0.tar.bz2
|
||||
a13d8876e3e804189392119638a07a1f xorg-server-1.13.1.tar.bz2
|
||||
|
@ -18,7 +18,7 @@
|
||||
%global ansic_major 0
|
||||
%global ansic_minor 4
|
||||
%global videodrv_major 13
|
||||
%global videodrv_minor 0
|
||||
%global videodrv_minor 1
|
||||
%global xinput_major 18
|
||||
%global xinput_minor 0
|
||||
%global extension_major 7
|
||||
@ -42,8 +42,8 @@
|
||||
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.13.0
|
||||
Release: 15%{?gitdate:.%{gitdate}}%{dist}
|
||||
Version: 1.13.1
|
||||
Release: 1%{?gitdate:.%{gitdate}}%{dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -92,9 +92,6 @@ Patch7013: xserver-1.12-Xext-fix-selinux-build-failure.patch
|
||||
# needed when building without xorg (aka s390x)
|
||||
Patch7017: xserver-1.12.2-xorg-touch-test.patch
|
||||
|
||||
# send keycode/event type for slow keys enable (#816764)
|
||||
Patch7020: xserver-1.12-xkb-fill-in-keycode-and-event-type-for-slow-keys-ena.patch
|
||||
|
||||
Patch7022: 0001-linux-Refactor-xf86-En-Dis-ableIO.patch
|
||||
Patch7023: 0002-linux-Make-failure-to-iopl-non-fatal.patch
|
||||
Patch7024: 0003-xfree86-Change-the-semantics-of-driverFunc-GET_REQUI.patch
|
||||
@ -103,37 +100,14 @@ Patch7025: 0001-Always-install-vbe-and-int10-sdk-headers.patch
|
||||
# do not upstream - do not even use here yet
|
||||
Patch7027: xserver-autobind-hotplug.patch
|
||||
|
||||
# backport multi-seat fixes from list
|
||||
Patch7042: 0003-xf86-fix-multi-seat-video-device-support.patch
|
||||
|
||||
# backport dri2 drawable fix
|
||||
Patch7051: 0001-dri2-invalidate-drawable-after-sharing-pixmap.patch
|
||||
|
||||
Patch7052: 0001-xf86-return-NULL-for-compat-output-if-no-outputs.patch
|
||||
|
||||
Patch7053: 0001-scan-pci-after-probing-devices.patch
|
||||
|
||||
Patch7054: 0001-config-udev-ignore-change-on-drm-devices.patch
|
||||
|
||||
# Bug 852841 - Mouse jumps to edges / corners when using an absolute input
|
||||
# device (ie virtual machine usb tablet)
|
||||
Patch7055: 0001-dix-set-the-device-transformation-matrix.patch
|
||||
|
||||
# Bug 871064 - Add touchscreen fixes for F18
|
||||
Patch7056: 0001-Sync-TouchListener-memory-allocation-with-population.patch
|
||||
Patch7057: 0001-Xi-Call-UpdateDeviceState-after-the-first-emulated-m.patch
|
||||
Patch7058: 0001-Xi-Don-t-check-for-TOUCH_END-it-s-never-set.patch
|
||||
Patch7059: 0001-Xi-don-t-deliver-TouchEnd-to-a-client-waiting-for-To.patch
|
||||
|
||||
# kernel doesn't use _INPUT_H anymore
|
||||
Patch7060: 0001-xf86-Fix-build-against-recent-Linux-kernel.patch
|
||||
|
||||
# Fix non-PCI configuration-less setups - broken
|
||||
#Patch7061: v2-xf86-Fix-non-PCI-configuration-less-setups.patch
|
||||
|
||||
# fdo Bug 54934 - Crash on XGrabDevice() of deactivated synaptics device -
|
||||
Patch7062: 0001-dix-fix-crash-on-XI-1.x-grabs-on-disabled-devices.-5.patch
|
||||
|
||||
# Bug 878956 - After installation is complete, Alt+F4 is broken
|
||||
Patch7063: 0001-linux-Prefer-ioctl-KDSKBMUTE-1-over-ioctl-KDSKBMODE-.patch
|
||||
|
||||
@ -146,8 +120,6 @@ Patch7066: 0001-xf86crtc-don-t-use-display-for-vx-vy-for-gpu-screens.patch
|
||||
# autoconfig: send events
|
||||
Patch7067: 0001-autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
|
||||
|
||||
Patch7068: 0001-Touch-Fix-duplicate-TouchBegin-selection-with-virtua.patch
|
||||
|
||||
%global moduledir %{_libdir}/xorg/modules
|
||||
%global drimoduledir %{_libdir}/dri
|
||||
%global sdkdir %{_includedir}/xorg
|
||||
@ -620,6 +592,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{xserver_source_dir}
|
||||
|
||||
%changelog
|
||||
* Tue Dec 18 2012 Peter Hutterer <peter.hutterer@redhat.com> 1.13.1-1
|
||||
- server 1.13.1
|
||||
|
||||
* Fri Dec 14 2012 Adam Jackson <ajax@redhat.com> 1.13.0-15
|
||||
- Cherry-pick a fix for selection for TouchBegin from multiple clients
|
||||
|
||||
|
@ -1,68 +0,0 @@
|
||||
From 5b5941862cc88193fedd2e381f8bec4dcf411ec9 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Tue, 26 Jun 2012 10:30:35 +1000
|
||||
Subject: [PATCH] xkb: fill in keycode and event type for slow keys enablement
|
||||
|
||||
eventType is set for the type that triggered a XkbControlsNotify event.
|
||||
Technically, SlowKeys is triggered by a timer which doesn't have a matching
|
||||
core event type. So we used to use 0 here.
|
||||
|
||||
Practically, the timer is triggered by a key press + hold and cancelled when
|
||||
the key is released before the timeout expires. So we might as well set
|
||||
KeyPress (keycode) in the ControlsNotify to give clients a chance to differ
|
||||
between timer-triggered SlowKeys and client-triggered ones.
|
||||
|
||||
This is a chance in behaviour, though I suspect with little impact.
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
include/xkbsrv.h | 1 +
|
||||
xkb/xkbAccessX.c | 6 ++++--
|
||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
|
||||
index a19c8fb..f839edb 100644
|
||||
--- a/include/xkbsrv.h
|
||||
+++ b/include/xkbsrv.h
|
||||
@@ -171,6 +171,7 @@ typedef struct _XkbSrvInfo {
|
||||
KeyCode mouseKey;
|
||||
KeyCode inactiveKey;
|
||||
KeyCode slowKey;
|
||||
+ KeyCode slowKeyEnableKey;
|
||||
KeyCode repeatKey;
|
||||
CARD8 krgTimerActive;
|
||||
CARD8 beepType;
|
||||
diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c
|
||||
index fe28e12..e7e0b73 100644
|
||||
--- a/xkb/xkbAccessX.c
|
||||
+++ b/xkb/xkbAccessX.c
|
||||
@@ -291,8 +291,8 @@ AccessXKRGExpire(OsTimerPtr timer, CARD32 now, pointer arg)
|
||||
return 4000;
|
||||
}
|
||||
xkbi->krgTimerActive = _OFF_TIMER;
|
||||
- cn.keycode = 0;
|
||||
- cn.eventType = 0;
|
||||
+ cn.keycode = xkbi->slowKeyEnableKey;
|
||||
+ cn.eventType = KeyPress;
|
||||
cn.requestMajor = 0;
|
||||
cn.requestMinor = 0;
|
||||
if (xkbi->desc->ctrls->enabled_ctrls & XkbSlowKeysMask) {
|
||||
@@ -304,6 +304,7 @@ AccessXKRGExpire(OsTimerPtr timer, CARD32 now, pointer arg)
|
||||
LogMessage(X_INFO, "XKB SlowKeys are now enabled. Hold shift to disable.\n");
|
||||
}
|
||||
|
||||
+ xkbi->slowKeyEnableKey = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -462,6 +463,7 @@ AccessXFilterPressEvent(DeviceEvent *event, DeviceIntPtr keybd)
|
||||
if (ctrls->enabled_ctrls & XkbAccessXKeysMask) {
|
||||
/* check for magic sequences */
|
||||
if ((sym[0] == XK_Shift_R) || (sym[0] == XK_Shift_L)) {
|
||||
+ xkbi->slowKeyEnableKey = key;
|
||||
if (XkbAX_NeedFeedback(ctrls, XkbAX_SlowWarnFBMask)) {
|
||||
xkbi->krgTimerActive = _KRG_WARN_TIMER;
|
||||
xkbi->krgTimer = TimerSet(xkbi->krgTimer, 0, 4000,
|
||||
--
|
||||
1.7.10.2
|
||||
|
Loading…
Reference in New Issue
Block a user