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

xorg-server: Changes to 'ubuntu+1'



 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.lankhorst@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.lankhorst@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.lankhorst@ubuntu.com>  Thu, 30 May 2013 11:00:36 +0200
+ -- Maarten Lankhorst <maarten.lankhorst@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 <keithp@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 <keithp@keithp.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@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 <aplattner@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 <aplattner@nvidia.com>
    Reviewed-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Keith Packard <keithp@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.hutterer@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.hutterer@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.hutterer@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.hutterer@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 */


Reply to: