Xi/xiqueryversion.c | 36 ++++++++++++++++++++++++++++++------ debian/changelog | 11 +++++++++-- debian/control | 2 +- debian/serverminver | 2 +- dix/getevents.c | 2 +- dix/touch.c | 3 +-- hw/xfree86/modes/xf86RandR12.c | 19 ++++++++++++++++--- include/inputstr.h | 2 +- 8 files changed, 60 insertions(+), 17 deletions(-)
New commits: commit ffa102f6a01e9c3c7192f2830d0f23cf784dd714 Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Tue Jul 30 12:43:30 2013 +0200 new snapshots, bump libx11-dev and xinput abi diff --git a/debian/changelog b/debian/changelog index a8f66e3..a2d9cc8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,18 @@ -xorg-server (2:1.14.99.1-0ubuntu0.0) UNRELEASED; urgency=low +xorg-server (2:1.14.99.1-0ubuntu0.0~ppa4) saucy; urgency=low + + * New ppa snapshot, more xinput bugfixes. + + -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Tue, 30 Jul 2013 12:19:02 +0200 + +xorg-server (2:1.14.99.1-0ubuntu0.0~ppa3) saucy; urgency=low * Bump to 1.15rc1 + git. * Drop upstreamed patches. * Add patch to fix a new build failure. - dix-fixup-build-failure.patch + * New ppa snapshot. Fix another bug related to input. - -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Thu, 30 May 2013 11:00:36 +0200 + -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Thu, 25 Jul 2013 14:37:51 +0200 xorg-server (2:1.14.1-0ubuntu1) saucy; urgency=low diff --git a/debian/control b/debian/control index 74c5327..cc30d71 100644 --- a/debian/control +++ b/debian/control @@ -63,7 +63,7 @@ Build-Depends: libgl1-mesa-dev (>= 7.8), libxmuu-dev (>= 1:0.99.1), libxext-dev (>= 1:0.99.1), - libx11-dev (>= 1:0.99.2), + libx11-dev (>= 2:1.6.0), libxrender-dev (>= 1:0.9.0), libxi-dev (>= 2:1.7.1.901), x11proto-dmx-dev (>= 1:2.2.99.1), diff --git a/debian/serverminver b/debian/serverminver index 0f9556a..6dde337 100644 --- a/debian/serverminver +++ b/debian/serverminver @@ -1,3 +1,3 @@ 2:1.13.99.901 ABI_VIDEODRV_VERSION:14.1 -ABI_XINPUT_VERSION:19.1 +ABI_XINPUT_VERSION:19.2 commit 4360514d1cc8e3132f93f56172d291074e8c770f Author: Keith Packard <kei...@keithp.com> Date: Wed Jul 10 22:42:55 2013 -0700 Xi: Allow clients to ask for 2.3 and then 2.2 without failing This allows different sub-systems within the same application to request different Xi versions without either getting old behaviour everywhere or simply failing with a BadValue. Signed-off-by: Keith Packard <kei...@keithp.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/Xi/xiqueryversion.c b/Xi/xiqueryversion.c index b807a53..6c7b9c0 100644 --- a/Xi/xiqueryversion.c +++ b/Xi/xiqueryversion.c @@ -71,13 +71,37 @@ ProcXIQueryVersion(ClientPtr client) pXIClient = dixLookupPrivate(&client->devPrivates, XIClientPrivateKey); if (pXIClient->major_version) { - if (version_compare(stuff->major_version, stuff->minor_version, - pXIClient->major_version, pXIClient->minor_version) < 0) { - client->errorValue = stuff->major_version; - return BadValue; + + /* Check to see if the client has only ever asked + * for version 2.2 or higher + */ + if (version_compare(stuff->major_version, stuff->minor_version, 2, 2) >= 0 && + version_compare(pXIClient->major_version, pXIClient->minor_version, 2, 2) >= 0) + { + + /* As of version 2.2, Peter promises to never again break + * backward compatibility, so we'll return the requested + * version to the client but leave the server internal + * version set to the highest requested value + */ + major = stuff->major_version; + minor = stuff->minor_version; + if (version_compare(stuff->major_version, stuff->minor_version, + pXIClient->major_version, pXIClient->minor_version) > 0) + { + pXIClient->major_version = stuff->major_version; + pXIClient->minor_version = stuff->minor_version; + } + } else { + if (version_compare(stuff->major_version, stuff->minor_version, + pXIClient->major_version, pXIClient->minor_version) < 0) { + + client->errorValue = stuff->major_version; + return BadValue; + } + major = pXIClient->major_version; + minor = pXIClient->minor_version; } - major = pXIClient->major_version; - minor = pXIClient->minor_version; } else { if (version_compare(XIVersion.major_version, XIVersion.minor_version, stuff->major_version, stuff->minor_version) > 0) { commit bdd1e22cbde9ea2324e4e1991c9e152f22f88151 Author: Aaron Plattner <aplatt...@nvidia.com> Date: Tue Apr 30 14:14:23 2013 -0700 xfree86: detach scanout pixmaps when detaching output GPUs Commit 8f4640bdb9d3988148e09a08d2c7e3bab1d538d6 fixed a bit of a chicken-and-egg problem by detaching GPU screens when their providers are destroyed, which happens before CloseScreen is called. However, this created a new problem: the GPU screen tears down its RandR crtc objects during CloseScreen and if one of them is active, it tries to detach the scanout pixmap then. This crashes because RRCrtcDetachScanoutPixmap tries to get the master screen's screen pixmap, but crtc->pScreen->current_master is already NULL at that point. It doesn't make sense for an unbound GPU screen to still be scanning out its former master screen's pixmap, so detach them first when the provider is destroyed. Signed-off-by: Aaron Plattner <aplatt...@nvidia.com> Reviewed-by: Dave Airlie <airl...@redhat.com> Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index 2817aaa..76614de 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -1771,6 +1771,19 @@ xf86RandR12EnterVT(ScrnInfoPtr pScrn) return RRGetInfo(pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */ } +static void +xf86DetachOutputGPU(ScreenPtr pScreen) +{ + rrScrPrivPtr rp = rrGetScrPriv(pScreen); + int i; + + /* make sure there are no attached shared scanout pixmaps first */ + for (i = 0; i < rp->numCrtcs; i++) + RRCrtcDetachScanoutPixmap(rp->crtcs[i]); + + DetachOutputGPU(pScreen); +} + static Bool xf86RandR14ProviderSetOutputSource(ScreenPtr pScreen, RRProviderPtr provider, @@ -1780,7 +1793,7 @@ xf86RandR14ProviderSetOutputSource(ScreenPtr pScreen, if (provider->output_source) { ScreenPtr cmScreen = pScreen->current_master; - DetachOutputGPU(pScreen); + xf86DetachOutputGPU(pScreen); AttachUnboundGPU(cmScreen, pScreen); } provider->output_source = NULL; @@ -1808,7 +1821,7 @@ xf86RandR14ProviderSetOffloadSink(ScreenPtr pScreen, if (!sink_provider) { if (provider->offload_sink) { ScreenPtr cmScreen = pScreen->current_master; - DetachOutputGPU(pScreen); + xf86DetachOutputGPU(pScreen); AttachUnboundGPU(cmScreen, pScreen); } @@ -1899,7 +1912,7 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider) RRSetChanged(screen); } else if (config->randr_provider->output_source) { - DetachOutputGPU(screen); + xf86DetachOutputGPU(screen); config->randr_provider->output_source = NULL; RRSetChanged(screen); } commit 3d8756631070c440cefa31b35fea3d407f187810 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Mon Jul 22 13:43:07 2013 +1000 dix: set the valuator mask to ensure XI 1.x events have data XI 1.x only allows for first + num valuators, so if a device sends data for valuators 0 and 2+ only (i.e. valuator 1 is missing) we still need to get the data for that from somewhere. XI 1.x uses the hack of an unset valuator mask to get the right coordinates, i.e. we set the value but don't set the mask for it so XI2 events have the right mask. For an absolute device in relative mode, this broke in b28a1af55cf, the value was now always 0. This wasn't visible on the cursor, only in an XI 1.x client. The GIMP e.g. sees jumps to x/0 every few events. Drop the condition introduced in b28a1af55cf, data in valuators is always absolute, regardless of the mode. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/dix/getevents.c b/dix/getevents.c index f5ab8c4..14b65ca 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -239,7 +239,7 @@ set_valuators(DeviceIntPtr dev, DeviceEvent *event, ValuatorMask *mask) SetBit(event->valuators.mode, i); event->valuators.data[i] = valuator_mask_get_double(mask, i); } - else if (valuator_get_mode(dev, i) == Absolute) + else event->valuators.data[i] = dev->valuator->axisVal[i]; } } commit 4fb686d6a6777950f0e0d55b848cd2af4cbad372 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Jul 24 11:50:00 2013 +1000 dix: check the xi2mask, not the grab type for touch listeners grab->type is only non-zero for passive grabs. We're checking an active grab here, so we need to check if the touch mask is set on the grab. Test case: grab the device, then start two simultaneous touches. The grabbing client won't see the second touchpoints because grab->type is 0 and the second touch is not an emulating pointer. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/dix/touch.c b/dix/touch.c index a4b6d7e..a7ea213 100644 --- a/dix/touch.c +++ b/dix/touch.c @@ -895,8 +895,7 @@ TouchAddActiveGrabListener(DeviceIntPtr dev, TouchPointInfoPtr ti, if (!ti->emulate_pointer && grab->grabtype == XI2 && - (grab->type != XI_TouchBegin && grab->type != XI_TouchEnd && - grab->type != XI_TouchUpdate)) + !xi2mask_isset(grab->xi2mask, dev, XI_TouchBegin)) return; TouchAddGrabListener(dev, ti, ev, grab); diff --git a/include/inputstr.h b/include/inputstr.h index 85be885..2da72c1 100644 --- a/include/inputstr.h +++ b/include/inputstr.h @@ -195,7 +195,7 @@ typedef struct _GrabRec { unsigned keyboardMode:1; unsigned pointerMode:1; enum InputLevel grabtype; - CARD8 type; /* event type */ + CARD8 type; /* event type for passive grabs, 0 for active grabs */ DetailRec modifiersDetail; DeviceIntPtr modifierDevice; DetailRec detail; /* key or button */ -- 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/e1v47pd-00012f...@vasks.debian.org