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

xorg-server: Changes to 'ubuntu+1'



Rebased ref, commits from common ancestor:
commit 5776f86ea25051a4d36a2752659be7bf0f483a65
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Jul 23 11:09:46 2014 +0100

    randr: Consider rotation of slaved crtcs when computing bounds
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit c94e7caf60eeaa7d5112adb92ec1848ec60c9047)

diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index c3c3516..ac9945d 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -279,25 +279,41 @@ RRCrtcPendingProperties(RRCrtcPtr crtc)
     return FALSE;
 }
 
+static int mode_height(const RRModeRec *mode, Rotation rotation)
+{
+	switch (rotation & 0xf) {
+	case RR_Rotate_0:
+	case RR_Rotate_180:
+		return mode->mode.height;
+	case RR_Rotate_90:
+	case RR_Rotate_270:
+		return mode->mode.width;
+	default:
+		return 0;
+	}
+}
+
+static int mode_width(const RRModeRec *mode, Rotation rotation)
+{
+	switch (rotation & 0xf) {
+	case RR_Rotate_0:
+	case RR_Rotate_180:
+		return mode->mode.width;
+	case RR_Rotate_90:
+	case RR_Rotate_270:
+		return mode->mode.height;
+	default:
+		return 0;
+	}
+}
+
 static void
 crtc_bounds(RRCrtcPtr crtc, int *left, int *right, int *top, int *bottom)
 {
     *left = crtc->x;
     *top = crtc->y;
-
-    switch (crtc->rotation) {
-    case RR_Rotate_0:
-    case RR_Rotate_180:
-    default:
-        *right = crtc->x + crtc->mode->mode.width;
-        *bottom = crtc->y + crtc->mode->mode.height;
-        return;
-    case RR_Rotate_90:
-    case RR_Rotate_270:
-        *right = crtc->x + crtc->mode->mode.height;
-        *bottom = crtc->y + crtc->mode->mode.width;
-        return;
-    }
+    *right = crtc->x + mode_width(crtc->mode, crtc->rotation);
+    *bottom = crtc->y + mode_height(crtc->mode, crtc->rotation);
 }
 
 /* overlapping counts as adjacent */
@@ -472,9 +488,9 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
             if (!pScrPriv->crtcs[c]->mode)
                 continue;
             newbox.x1 = pScrPriv->crtcs[c]->x;
-            newbox.x2 = pScrPriv->crtcs[c]->x + pScrPriv->crtcs[c]->mode->mode.width;
+            newbox.x2 = pScrPriv->crtcs[c]->x + mode_width(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation);
             newbox.y1 = pScrPriv->crtcs[c]->y;
-            newbox.y2 = pScrPriv->crtcs[c]->y + pScrPriv->crtcs[c]->mode->mode.height;
+            newbox.y2 = pScrPriv->crtcs[c]->y + mode_height(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation);
         }
         RegionInit(&new_crtc_region, &newbox, 1);
         RegionUnion(&total_region, &total_region, &new_crtc_region);
@@ -493,9 +509,9 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
                 if (!slave_priv->crtcs[c]->mode)
                     continue;
                 newbox.x1 = slave_priv->crtcs[c]->x;
-                newbox.x2 = slave_priv->crtcs[c]->x + slave_priv->crtcs[c]->mode->mode.width;
+		newbox.x2 = slave_priv->crtcs[c]->x + mode_width(slave_priv->crtcs[c]->mode, slave_priv->crtcs[c]->rotation);
                 newbox.y1 = slave_priv->crtcs[c]->y;
-                newbox.y2 = slave_priv->crtcs[c]->y + slave_priv->crtcs[c]->mode->mode.height;
+		newbox.y2 = slave_priv->crtcs[c]->y + mode_height(slave_priv->crtcs[c]->mode, slave_priv->crtcs[c]->rotation);
             }
             RegionInit(&new_crtc_region, &newbox, 1);
             RegionUnion(&total_region, &total_region, &new_crtc_region);
@@ -560,8 +576,8 @@ RRCrtcSet(RRCrtcPtr crtc,
             int width = 0, height = 0;
 
             if (mode) {
-                width = mode->mode.width;
-                height = mode->mode.height;
+                width = mode_width(mode, rotation);
+                height = mode_height(mode, rotation);
             }
             DBG(("have a master to look out for\n"));
             ret = rrCheckPixmapBounding(master, crtc,
@@ -1687,8 +1703,8 @@ RRReplaceScanoutPixmap(DrawablePtr pDrawable, PixmapPtr pPixmap, Bool enable)
         changed = FALSE;
         if (crtc->mode && crtc->x == pDrawable->x &&
             crtc->y == pDrawable->y &&
-            crtc->mode->mode.width == pDrawable->width &&
-            crtc->mode->mode.height == pDrawable->height)
+            mode_width(crtc->mode, crtc->rotation) == pDrawable->width &&
+            mode_height(crtc->mode, crtc->rotation) == pDrawable->height)
             size_fits = TRUE;
 
         /* is the pixmap already set? */

commit 5574c7a52c1f11266c6ea0665881adb817bc6ea6
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Jul 23 10:17:37 2014 +0100

    randr: Suppress debug messages from prime
    
    Hide the ErrorF used for debugging behind an ifdefed out macro.
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit 1bb575f8c158c14949075fb35c085a7ae8e3b810)

diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 69b3ecf..c3c3516 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -25,6 +25,12 @@
 #include "swaprep.h"
 #include "mipointer.h"
 
+#if 0
+#define DBG(x) ErrorF x
+#else
+#define DBG(x) x
+#endif
+
 RESTYPE RRCrtcType;
 
 /*
@@ -428,7 +434,7 @@ rrCreateSharedPixmap(RRCrtcPtr crtc, int width, int height,
 
     ret = pScrPriv->rrCrtcSetScanoutPixmap(crtc, spix);
     if (ret == FALSE) {
-        ErrorF("failed to set shadow slave pixmap\n");
+        DBG(("failed to set shadow slave pixmap\n"));
         return FALSE;
     }
 
@@ -502,7 +508,7 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
 
     if (new_width == screen_pixmap->drawable.width &&
         new_height == screen_pixmap->drawable.height) {
-        ErrorF("adjust shatters %d %d\n", newsize->x1, newsize->x2);
+        DBG(("adjust shatters %d %d\n", newsize->x1, newsize->x2));
     } else {
         pScrPriv->rrScreenSetSize(pScreen, new_width, new_height, 0, 0);
     }
@@ -557,7 +563,7 @@ RRCrtcSet(RRCrtcPtr crtc,
                 width = mode->mode.width;
                 height = mode->mode.height;
             }
-            ErrorF("have a master to look out for\n");
+            DBG(("have a master to look out for\n"));
             ret = rrCheckPixmapBounding(master, crtc,
                                         x, y, width, height);
             if (!ret)
@@ -565,7 +571,7 @@ RRCrtcSet(RRCrtcPtr crtc,
 
             if (pScreen->current_master) {
                 ret = rrCreateSharedPixmap(crtc, width, height, x, y);
-                ErrorF("need to create shared pixmap %d", ret);
+                DBG(("need to create shared pixmap %d\n", ret));
 
             }
         }

commit 681247c56dbe88e24bc3e3592ad988dabe02baa6
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Mon Jul 21 11:30:55 2014 +0200

    bump changelog entry

diff --git a/debian/changelog b/debian/changelog
index 682fc42..fcc2fee 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,12 +1,4 @@
-xorg-server (2:1.16.0-1) unstable; urgency=medium
-
-  * New upstream release
-    + Revert "dix: fix up coordinate scaling when external monitors are
-      present" (closes: #754822)
-
- -- Julien Cristau <jcristau@debian.org>  Fri, 18 Jul 2014 00:17:11 +0200
-
-xorg-server (2:1.15.99.904-1ubuntu1) UNRELEASED; urgency=medium
+xorg-server (2:1.16.0-1ubuntu1) UNRELEASED; urgency=medium
 
   [ Maarten Lankhorst ]
   * New upstream release.
@@ -16,7 +8,15 @@ xorg-server (2:1.15.99.904-1ubuntu1) UNRELEASED; urgency=medium
   [ Christopher James Halse Rogers ]
   * Refresh XMir patch
 
- -- Christopher James Halse Rogers <raof@ubuntu.com>  Fri, 04 Jul 2014 10:40:30 +1000
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 21 Jul 2014 11:24:36 +0200
+
+xorg-server (2:1.16.0-1) unstable; urgency=medium
+
+  * New upstream release
+    + Revert "dix: fix up coordinate scaling when external monitors are
+      present" (closes: #754822)
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 18 Jul 2014 00:17:11 +0200
 
 xorg-server (2:1.15.99.904-1) unstable; urgency=medium
 

commit 3c0431b8911241552a15a43e4279c50658b50a18
Author: Keith Packard <keithp@keithp.com>
Date:   Wed Jul 16 16:03:23 2014 -0700

    glamor: Fix temp picture coordinates in glamor_composite_clipped_region
    
    To understand this patch, let's start at the protocol interface where
    the relationship between the coordinate spaces is documented:
    
            static Bool
            _glamor_composite(CARD8 op,
                              PicturePtr source,
                              PicturePtr mask,
                              PicturePtr dest,
                              INT16 x_source,
                              INT16 y_source,
                              INT16 x_mask,
                              INT16 y_mask,
                              INT16 x_dest, INT16 y_dest,
                              CARD16 width, CARD16 height, Bool fallback)
    
    The coordinates are passed to this function directly off the wire and
    are all relative to their respective drawables. For Windows, this means
    that they are relative to the upper left corner of the window, in
    whatever pixmap that window is getting drawn to.
    
    _glamor_composite calls miComputeCompositeRegion to construct a clipped
    region to actually render to. In reality, miComputeCompositeRegion clips
    only to the destination these days; source clip region based clipping
    would have to respect the transform, which isn't really possible. The
    returned region is relative to the screen in which dest lives; offset by
    dest->drawable.x and dest->drawable.y.
    
    What is important to realize here is that, because of clipping, the
    composite region may not have the same position within the destination
    drawable as x_dest, y_dest. The protocol coordinates now exist solely to
    'pin' the three objects together.
    
            extents->x1,y1		Screen origin of clipped operation
            width,height            Extents of the clipped operation
            x_dest,y_dest		Unclipped destination-relative operation coordinate
            x_source,y_source	Unclipped source-relative operation coordinate
            x_mask,y_mask		Unclipped mask-relative operation coordinate
    
    One thing we want to know is what the offset is from the original
    operation origin to the clipped origin
    
            Destination drawable relative coordinates of the clipped operation:
    
                   x_dest_clipped = extents->x1 - dest->drawable.x
                   y_dest_clipped = extents->y1 - dest->drawable.y
    
            Offset from the original operation origin:
    
                    x_off_clipped = x_dest_clipped - x_dest
                    y_off_clipped = y_dest_clipped - y_dest
    
            Source drawable relative coordinates of the clipped operation:
    
                    x_source_clipped = x_source + x_off_clipped;
                    y_source_clipped = y_source + y_off_clipped;
    
            Mask drawable relative coordinates of the clipped operation:
    
                    x_mask_clipped = x_source + x_off_clipped;
                    y_mask_clipped = y_source + y_off_clipped;
    
    This is where the original code fails -- it doesn't subtract the
    destination drawable location when computing the distance that the
    operation has been moved by clipping. Here's what it does when
    constructing a temporary source picture:
    
            temp_src =
                glamor_convert_gradient_picture(screen, source,
                                                extent->x1 + x_source - x_dest,
                                                extent->y1 + y_source - y_dest,
                                                width, height);
            ...
            x_temp_src = -extent->x1 + x_dest;
            y_temp_src = -extent->y1 + y_dest;
    
    glamor_convert_gradient_picture needs source drawable relative
    coordinates, but that is not what it's getting; it's getting
    screen-relative coordinates for the destination, adjusted by the
    distance between the provided source and destination operation
    coordinates. We want x_source_clipped and y_source_clipped:
    
            x_source_clipped = x_source + x_off_clipped
                             = x_source + x_dest_clipped - x_dest
                             = x_source + extents->x1 - dest->drawable.x - x_dest
    
    x_temp_src/y_temp_src are supposed to be the coordinates of the original
    operation translated to the temporary picture:
    
            x_temp_src = x_source - x_source_clipped;
            y_temp_src = y_source - y_source_clipped;
    
    Note that x_source_clipped/y_source_clipped will never be less than
    x_source/y_source because all we're doing is clipping. This means that
    x_temp_src/y_temp_src will always be non-positive; the original source
    coordinate can never be strictly *inside* the temporary image or we
    could have made the temporary image smaller.
    
            x_temp_src = x_source - x_source_clipped
                       = x_source - (x_source + x_off_clipped)
                       = -x_off_clipped
                       = x_dest - x_dest_clipped
                       = x_dest - (extents->x1 - dest->drawable.x)
    
    Again, this is off by the destination origin within the screen
    coordinate space.
    
    The code should look like:
    
            temp_src =
                glamor_convert_gradient_picture(screen, source,
                                                extent->x1 + x_source - x_dest - dest->pDrawable->x,
                                                extent->y1 + y_source - y_dest - dest->pDrawable->y,
                                                width, height);
    
            x_temp_src = -extent->x1 + x_dest + dest->pDrawable->x;
            y_temp_src = -extent->y1 + y_dest + dest->pDrawable->y;
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Reviewed-by: Markus Wick <markus@selfnet.de>
    (cherry picked from commit 55f5bfb578e934319d1308cbb56c900c5ac7cfa7)
    Signed-off-by: Julien Cristau <jcristau@debian.org>

diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c
index 14ab738..e5d5d2c 100644
--- a/glamor/glamor_render.c
+++ b/glamor/glamor_render.c
@@ -1450,8 +1450,8 @@ glamor_composite_clipped_region(CARD8 op,
                     || source_pixmap->drawable.height != height)))) {
         temp_src =
             glamor_convert_gradient_picture(screen, source,
-                                            extent->x1 + x_source - x_dest,
-                                            extent->y1 + y_source - y_dest,
+                                            extent->x1 + x_source - x_dest - dest->pDrawable->x,
+                                            extent->y1 + y_source - y_dest - dest->pDrawable->y,
                                             width, height);
         if (!temp_src) {
             temp_src = source;
@@ -1459,8 +1459,8 @@ glamor_composite_clipped_region(CARD8 op,
         }
         temp_src_priv =
             glamor_get_pixmap_private((PixmapPtr) (temp_src->pDrawable));
-        x_temp_src = -extent->x1 + x_dest;
-        y_temp_src = -extent->y1 + y_dest;
+        x_temp_src = -extent->x1 + x_dest + dest->pDrawable->x;
+        y_temp_src = -extent->y1 + y_dest + dest->pDrawable->y;
     }
 
     if (mask
@@ -1474,8 +1474,8 @@ glamor_composite_clipped_region(CARD8 op,
          * to do reduce one convertion. */
         temp_mask =
             glamor_convert_gradient_picture(screen, mask,
-                                            extent->x1 + x_mask - x_dest,
-                                            extent->y1 + y_mask - y_dest,
+                                            extent->x1 + x_mask - x_dest - dest->pDrawable->x,
+                                            extent->y1 + y_mask - y_dest - dest->pDrawable->y,
                                             width, height);
         if (!temp_mask) {
             temp_mask = mask;
@@ -1483,8 +1483,8 @@ glamor_composite_clipped_region(CARD8 op,
         }
         temp_mask_priv =
             glamor_get_pixmap_private((PixmapPtr) (temp_mask->pDrawable));
-        x_temp_mask = -extent->x1 + x_dest;
-        y_temp_mask = -extent->y1 + y_dest;
+        x_temp_mask = -extent->x1 + x_dest + dest->pDrawable->x;
+        y_temp_mask = -extent->y1 + y_dest + dest->pDrawable->y;
     }
     /* Do two-pass PictOpOver componentAlpha, until we enable
      * dual source color blending.

commit ab3143d8eebcf6f320f325a357ca8e91f99db010
Author: Julien Cristau <jcristau@debian.org>
Date:   Fri Jul 18 00:17:16 2014 +0200

    Upload to unstable

diff --git a/debian/changelog b/debian/changelog
index 69400c5..6b35027 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,10 @@
-xorg-server (2:1.16.0-1) UNRELEASED; urgency=medium
+xorg-server (2:1.16.0-1) unstable; urgency=medium
 
   * New upstream release
     + Revert "dix: fix up coordinate scaling when external monitors are
       present" (closes: #754822)
 
- -- Julien Cristau <jcristau@debian.org>  Fri, 18 Jul 2014 00:08:47 +0200
+ -- Julien Cristau <jcristau@debian.org>  Fri, 18 Jul 2014 00:17:11 +0200
 
 xorg-server (2:1.15.99.904-1) unstable; urgency=medium
 

commit 2256d4db293c8cf8a967a2078b1404cf46ffd27e
Author: Julien Cristau <jcristau@debian.org>
Date:   Fri Jul 18 00:16:07 2014 +0200

    Bump changelogs

diff --git a/ChangeLog b/ChangeLog
index 56af6da..1da7a9b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,134 @@
+commit 8b36e1ec8dd9f53e9f4e10422c2100844e9e549c
+Author: Keith Packard <keithp@keithp.com>
+Date:   Thu Jul 17 00:03:33 2014 -0700
+
+    Update to version 1.16.0
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 4dbb641bb2d4037f107b58b31e80963dc8b72c0e
+Author: Hans de Goede <hdegoede@redhat.com>
+Date:   Mon Jul 14 14:01:47 2014 +0200
+
+    config_odev_add_attribute*: Check for right attribute type
+    
+    Don't allow setting string attributes to integers and vice versa.
+    
+    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+    Reviewed-by: Keith Packard <keithp@keithp.com>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 25eca7ce35973577c8d85704c270f7fb53e6732e
+Author: Hans de Goede <hdegoede@redhat.com>
+Date:   Mon Jul 14 14:01:46 2014 +0200
+
+    Fix ODEV_ATTRIB_DRIVER overlapping with ODEV_ATTRIB_FD
+    
+    Looks like the value of ODEV_ATTRIB_DRIVER was not updated when the patch
+    adding it got rebased on top of a newer server version.
+    
+    This fixes the xserver crashing when systemd-logind integration is used.
+    
+    https://bugzilla.redhat.com/show_bug.cgi?id=1118540
+    
+    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+    Reviewed-by: Keith Packard <keithp@keithp.com>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 9a19bf06b5b409fa0d5b5932e29cd4c5545052c5
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Mon Jul 14 15:05:58 2014 +1000
+
+    Revert "dix: fix up coordinate scaling when external monitors are present"
+    
+    This reverts commit d90b5f83010248be65b2039b0b2d0b9e6a4e93cf.
+    
+    Reverting for two reasons:
+    * the scaling does not work on devices that don't advertise resolution, and
+      the default resolution used (100 units/mm) is higher than most devices,
+      resulting in a significant slowdown of the touchpads.
+    * the scaling is still affected by resolution changing. The patch worked
+      before acceleration but since it maps into resolution-dependent dx/dy
+      coordinates the acceleration may distort the movement after the fact. So the
+      same input data generates different movements depending on the resolution.
+      This can't easily be fixed for all affected devices as synaptics has its own
+      velocity calculation method whereas wacom doesn't. So anything in the server
+      won't work for both at the same time.
+    
+    Revert this for now, until a more integrated solution can be implemented.
+
+commit acc0b5edd1dc560b5c39dc44872b46581ec23903
+Author: Aaron Plattner <aplattner@nvidia.com>
+Date:   Fri Jul 11 15:56:35 2014 -0700
+
+    xfree86: Only support one sysconfigdir
+    
+    When the X server is compiled with --prefix set to something other than /usr,
+    then it ends up with a nonstandard sysconfigdir in its .pc file.  This causes
+    various other components to install their xorg.conf.d snippets there.
+    
+    However, the X server first looks for /usr/share/X11/xorg.conf.d before looking
+    in sysconfigdir.  That means that if the system administrator installed anything
+    that created that path, the user's custom sysconfigdir is not searched.
+    
+    Rather than doing that, just look in the configured sysconfdir and nowhere else.
+    
+    Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
+    Reviewed-by: Julien Cristau <jcristau@debian.org>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 578b9283bcc129d0a35fabe2637c7622085ef1e8
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Thu Jul 10 10:39:50 2014 +1000
+
+    xfree86: don't force the screensaver off on DPMS unblank, merely suggest it
+    
+    Commit 41d4beb2616ceb3f1a1b8694733e85bae70de59a added symmetry to the
+    screensaver/DPMS invocations so that one (en|dis)ables the other. Having
+    dependencies between DPMS and the screensaver is subject to further arguments,
+    but in this particular case using SCREENSAVER_FORCER is detrimental.
+    SCREENSAVER_FORCER(ScreenSaverReset) resets the idle time for all
+    devices on DPMS unblank.
+    
+    It prevents at least one use-case that GNOME tries to implement:
+    GNOME displays a notification before suspending. If the display is
+    currently blanked, GNOME lights it up to display the message. With the
+    original patch in place DPMS unblank also resets the device idle times, thus
+    restarting the timeout ad infinitum.
+    
+    Switch this to a more suggestive SCREENSAVER_OFF(ScreenSaverReset). This keeps
+    the symmetry in blanking mode (DPMS and screensaver turn each other on/off as
+    expected) but does not reset the idle time on the devices.
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=731241
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+    Reviewed-By: Egbert Eich <eich@freedesktop.org>
+
+commit daa1a9d22db8e83d1933d8403acf72626199ee2a
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Mon Jul 7 08:27:44 2014 +1000
+
+    os: prevent negative array index access (#80890)
+    
+    If an empty string is provided to LogMessageVerbSigSafe, the length of the
+    printed string is 0.
+    
+    Read-only access only and the only effect it had was adding a linebreak or not.
+    
+    X.Org Bug 80890 <http://bugs.freedesktop.org/show_bug.cgi?id=80890>
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 9de3cc8daa4c6e877d30a0e8ccfe0cc159f1dbe3
+Merge: 9308eaf a549987
+Author: Keith Packard <keithp@keithp.com>
+Date:   Mon Jul 7 16:53:07 2014 -0700
+
+    Merge remote-tracking branch 'jturney/master'
+
 commit 9308eafb7d303739b81634ed2ee0da88554fd429
 Author: Keith Packard <keithp@keithp.com>
 Date:   Mon Jul 7 16:28:26 2014 -0700
@@ -133,6 +264,19 @@ Date:   Thu Jun 26 14:12:24 2014 -0700
     Signed-off-by: Keith Packard <keithp@keithp.com>
     Reviewed-by: Julien Cristau <jcristau@debian.org>
 
+commit a5499870e2f88822f52b1b54cad0db69856597c0
+Author: Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+Date:   Sun Apr 6 04:47:15 2014 -0500
+
+    hw/xwin: link dynamically and export symbols
+    
+    With my patch to fix shared libXfont to work correctly on Cygwin/Win32,
+    there is no need for -static anymore.  But, XWin.exe must export its
+    symbols in order for them to override libXfont's stubs.
+    
+    Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+    Reviewed-by: Jon TURNEY <jon.turney@dronecode.org.uk>
+
 commit a3b44ad8db1fa2f3b81c1ff9498f31c5323edd37
 Author: Thierry Reding <treding@nvidia.com>
 Date:   Wed Jun 25 16:03:29 2014 +0200
diff --git a/debian/changelog b/debian/changelog
index 1abebee..69400c5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xorg-server (2:1.16.0-1) UNRELEASED; urgency=medium
+
+  * New upstream release
+    + Revert "dix: fix up coordinate scaling when external monitors are
+      present" (closes: #754822)
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 18 Jul 2014 00:08:47 +0200
+
 xorg-server (2:1.15.99.904-1) unstable; urgency=medium
 
   * New upstream release candidate.

commit 8b36e1ec8dd9f53e9f4e10422c2100844e9e549c
Author: Keith Packard <keithp@keithp.com>
Date:   Thu Jul 17 00:03:33 2014 -0700

    Update to version 1.16.0
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/configure.ac b/configure.ac
index c214638..1c327fd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.15.99.904, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2014-07-07"
-RELEASE_NAME="Netarts Bay Oysters"
+AC_INIT([xorg-server], 1.16.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2014-07-16"
+RELEASE_NAME="Marionberry Pie"
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])

commit 4fdd033bd87d677c7981a495631a0b3e108770ae
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Wed Jul 16 10:12:20 2014 +0200

    drop upstream patch imported from merge

diff --git a/debian/patches/series b/debian/patches/series
index 5ec1afe..5e74491 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -54,4 +54,3 @@ drm_device_keep_trying.patch
 xi2-resize-touch.patch
 mi-dont-process-disabled.patch
 ppc64el-endian-fix.patch
-xfree86-pci-bus-probe-non-seat0.patch
diff --git a/debian/patches/xfree86-pci-bus-probe-non-seat0.patch b/debian/patches/xfree86-pci-bus-probe-non-seat0.patch
deleted file mode 100644
index 50718cb..0000000
--- a/debian/patches/xfree86-pci-bus-probe-non-seat0.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 29b1484bb9555e45067669cbfe68a3c40596f4ff Mon Sep 17 00:00:00 2001
-From: Laércio de Sousa <lbsousajr@gmail.com>
-Date: Thu, 03 Apr 2014 14:19:13 +0000
-Subject: xfree86: allow fallback to PCI bus probe for graphics devices on non-seat0 X servers (#66851)
-
-Currently non-seat0 X servers only probe platform bus for graphics devices,
-which is OK for most KMS-compliant drivers. However, for non-KMS drivers
-(like NVIDIA proprietary ones), graphics devices can't be reached
-by platform bus probe, resulting in a "No devices detected" error.
-
-This patch allows a fallback to PCI bus probe for non-seat0 X servers
-in case no platform bus graphics device is found.
-
-Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=66851
-
-Signed-off-by: Laércio de Sousa <lbsousajr@gmail.com>
-Reviewed-by: Hans de Goede <hdegoede@redhat.com>
-Reviewed-by: Dave Airlie <airlied@redhat.com>
-Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
----
-diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
-index 507c57d..b3b3f8c 100644
---- a/hw/xfree86/common/xf86Bus.c
-+++ b/hw/xfree86/common/xf86Bus.c
-@@ -81,7 +81,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only)
-     if (drv->platformProbe != NULL) {
-         foundScreen = xf86platformProbeDev(drv);
-     }
--    if (ServerIsNotSeat0())
-+    if (ServerIsNotSeat0() && foundScreen)
-         return foundScreen;
- #endif
- 
-@@ -201,7 +201,7 @@ xf86BusProbe(void)
- {
- #ifdef XSERVER_PLATFORM_BUS
-     xf86platformProbe();
--    if (ServerIsNotSeat0())
-+    if (ServerIsNotSeat0() && xf86_num_platform_devices > 0)
-         return;
- #endif
- #ifdef XSERVER_LIBPCIACCESS
---
-cgit v0.9.0.2-2-gbebe

commit 30e196808ec880f50bc103273ae1a216b07d7ab2
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Wed Jul 16 10:05:43 2014 +0200

    bump changelog

diff --git a/debian/changelog b/debian/changelog
index db1d666..fcdf8ce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,24 +1,25 @@
-xorg-server (2:1.15.99.904-1) unstable; urgency=medium
-
-  * New upstream release candidate.
-  * Make xserver-common Multi-Arch: foreign (closes: #693922)
-  * Add debian/upstream/signing-key.asc, and add pgpsigurlmangle option to
-    debian/watch, to allow uscan to verify tarball signatures.
-  * Upload to unstable.
-
- -- Julien Cristau <jcristau@debian.org>  Tue, 08 Jul 2014 15:22:20 +0200
-
-xorg-server (2:1.15.99.903-3ubuntu1) UNRELEASED; urgency=medium
+xorg-server (2:1.15.99.904-1ubuntu1) UNRELEASED; urgency=medium
 
   [ Maarten Lankhorst ]
   * New upstream release.
     - Refresh patches.
+  * Merge from released debian sid.
 
   [ Christopher James Halse Rogers ]
   * Refresh XMir patch
 
  -- Christopher James Halse Rogers <raof@ubuntu.com>  Fri, 04 Jul 2014 10:40:30 +1000
 
+xorg-server (2:1.15.99.904-1) unstable; urgency=medium
+
+  * New upstream release candidate.
+  * Make xserver-common Multi-Arch: foreign (closes: #693922)
+  * Add debian/upstream/signing-key.asc, and add pgpsigurlmangle option to
+    debian/watch, to allow uscan to verify tarball signatures.
+  * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 08 Jul 2014 15:22:20 +0200
+
 xorg-server (2:1.15.99.903-3) experimental; urgency=medium
 
   * Set shared memory dir to /dev/shm (closes: #747894).

commit 30adbd8cba2b909d7b0b706a034536cb9fcf6d8a
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Wed Jul 16 09:59:10 2014 +0200

    refresh drm_device_keep_trying.patch for rc4

diff --git a/debian/patches/drm_device_keep_trying.patch b/debian/patches/drm_device_keep_trying.patch
index 7f7c935..81f409e 100644
--- a/debian/patches/drm_device_keep_trying.patch
+++ b/debian/patches/drm_device_keep_trying.patch
@@ -88,18 +88,19 @@ Signed-off-by: Bryce Harrington <bryce@canonical.com>
  }
 --- a/hw/xfree86/os-support/linux/lnx_platform.c
 +++ b/hw/xfree86/os-support/linux/lnx_platform.c
-@@ -23,10 +23,7 @@
+@@ -23,11 +23,8 @@
  static Bool
  get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
  {
 -    drmSetVersion sv;
+     drmVersionPtr v;
 -    char *buf;
      int major, minor, fd;
 -    int err = 0;
      Bool paused, server_fd = FALSE;
  
      major = config_odev_get_int_attribute(attribs, ODEV_ATTRIB_MAJOR, 0);
-@@ -50,17 +47,6 @@
+@@ -51,18 +48,6 @@
      if (fd == -1)
          return FALSE;
  
@@ -110,14 +111,15 @@ Signed-off-by: Bryce Harrington <bryce@canonical.com>
 -
 -    err = drmSetInterfaceVersion(fd, &sv);
 -    if (err) {
--        ErrorF("setversion 1.4 failed: %s\n", strerror(-err));
--	goto out;
+-        xf86Msg(X_ERROR, "%s: failed to set DRM interface version 1.4: %s\n",
+-                path, strerror(-err));
+-        goto out;
 -    }
 -
      /* for a delayed probe we've already added the device */
      if (delayed_index == -1) {
              xf86_add_platform_device(attribs, FALSE);
-@@ -70,14 +56,9 @@
+@@ -72,11 +57,6 @@
      if (server_fd)
          xf86_platform_devices[delayed_index].flags |= XF86_PDEV_SERVER_FD;
  
@@ -125,7 +127,12 @@ Signed-off-by: Bryce Harrington <bryce@canonical.com>
 -    xf86_add_platform_device_attrib(delayed_index,
 -                                    ODEV_ATTRIB_BUSID, buf);
 -    drmFreeBusid(buf);
--out:
+-
+     v = drmGetVersion(fd);
+     if (!v) {
+         xf86Msg(X_ERROR, "%s: failed to query DRM version\n", path);
+@@ -90,7 +70,7 @@
+ out:
      if (!server_fd)
          close(fd);
 -    return (err == 0);
@@ -133,7 +140,7 @@ Signed-off-by: Bryce Harrington <bryce@canonical.com>
  }
  
  Bool
-@@ -157,8 +138,11 @@
+@@ -170,8 +150,11 @@
              break;
      }
  

commit 4dbb641bb2d4037f107b58b31e80963dc8b72c0e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Jul 14 14:01:47 2014 +0200

    config_odev_add_attribute*: Check for right attribute type
    
    Don't allow setting string attributes to integers and vice versa.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/config/config.c b/config/config.c
index 5514516..a26d835 100644
--- a/config/config.c
+++ b/config/config.c
@@ -172,12 +172,38 @@ config_odev_find_or_add_attribute(struct OdevAttributes *attribs, int attrib)
     return oa;
 }
 
+static int config_odev_get_attribute_type(int attrib)
+{
+    switch (attrib) {
+    case ODEV_ATTRIB_PATH:
+    case ODEV_ATTRIB_SYSPATH:
+    case ODEV_ATTRIB_BUSID:
+        return ODEV_ATTRIB_STRING;
+    case ODEV_ATTRIB_FD:
+    case ODEV_ATTRIB_MAJOR:
+    case ODEV_ATTRIB_MINOR:
+        return ODEV_ATTRIB_INT;
+    case ODEV_ATTRIB_DRIVER:
+        return ODEV_ATTRIB_STRING;
+    default:
+        LogMessage(X_ERROR, "Error %s called for unknown attribute %d\n",
+                   __func__, attrib);
+        return ODEV_ATTRIB_UNKNOWN;
+    }
+}
+
 Bool
 config_odev_add_attribute(struct OdevAttributes *attribs, int attrib,
                           const char *attrib_name)
 {
     struct OdevAttribute *oa;
 
+    if (config_odev_get_attribute_type(attrib) != ODEV_ATTRIB_STRING) {
+        LogMessage(X_ERROR, "Error %s called for non string attrib %d\n",
+                   __func__, attrib);
+        return FALSE;
+    }
+
     oa = config_odev_find_or_add_attribute(attribs, attrib);
     free(oa->attrib_name);
     oa->attrib_name = XNFstrdup(attrib_name);
@@ -191,6 +217,12 @@ config_odev_add_int_attribute(struct OdevAttributes *attribs, int attrib,
 {
     struct OdevAttribute *oa;
 
+    if (config_odev_get_attribute_type(attrib) != ODEV_ATTRIB_INT) {
+        LogMessage(X_ERROR, "Error %s called for non integer attrib %d\n",
+                   __func__, attrib);
+        return FALSE;
+    }
+
     oa = config_odev_find_or_add_attribute(attribs, attrib);
     oa->attrib_value = attrib_value;
     oa->attrib_type = ODEV_ATTRIB_INT;
diff --git a/include/hotplug.h b/include/hotplug.h
index b2c0d78..4c2fa97 100644
--- a/include/hotplug.h
+++ b/include/hotplug.h
@@ -32,7 +32,7 @@ extern _X_EXPORT void config_pre_init(void);
 extern _X_EXPORT void config_init(void);
 extern _X_EXPORT void config_fini(void);
 
-enum { ODEV_ATTRIB_STRING, ODEV_ATTRIB_INT };
+enum { ODEV_ATTRIB_UNKNOWN = -1, ODEV_ATTRIB_STRING = 0, ODEV_ATTRIB_INT };
 
 struct OdevAttribute {
     struct xorg_list member;

commit 25eca7ce35973577c8d85704c270f7fb53e6732e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Jul 14 14:01:46 2014 +0200

    Fix ODEV_ATTRIB_DRIVER overlapping with ODEV_ATTRIB_FD
    
    Looks like the value of ODEV_ATTRIB_DRIVER was not updated when the patch
    adding it got rebased on top of a newer server version.
    
    This fixes the xserver crashing when systemd-logind integration is used.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1118540
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/include/hotplug.h b/include/hotplug.h
index c4268a0..b2c0d78 100644
--- a/include/hotplug.h
+++ b/include/hotplug.h
@@ -88,7 +88,7 @@ config_odev_free_attributes(struct OdevAttributes *attribs);
 /* Minor number of the device node pointed to by ODEV_ATTRIB_PATH */
 #define ODEV_ATTRIB_MINOR 6
 /* kernel driver name */
-#define ODEV_ATTRIB_DRIVER 4
+#define ODEV_ATTRIB_DRIVER 7
 
 typedef void (*config_odev_probe_proc_ptr)(struct OdevAttributes *attribs);
 void config_odev_probe(config_odev_probe_proc_ptr probe_callback);

commit 9a19bf06b5b409fa0d5b5932e29cd4c5545052c5
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Jul 14 15:05:58 2014 +1000

    Revert "dix: fix up coordinate scaling when external monitors are present"
    
    This reverts commit d90b5f83010248be65b2039b0b2d0b9e6a4e93cf.
    
    Reverting for two reasons:
    * the scaling does not work on devices that don't advertise resolution, and
      the default resolution used (100 units/mm) is higher than most devices,
      resulting in a significant slowdown of the touchpads.
    * the scaling is still affected by resolution changing. The patch worked
      before acceleration but since it maps into resolution-dependent dx/dy
      coordinates the acceleration may distort the movement after the fact. So the
      same input data generates different movements depending on the resolution.
      This can't easily be fixed for all affected devices as synaptics has its own
      velocity calculation method whereas wacom doesn't. So anything in the server
      won't work for both at the same time.
    
    Revert this for now, until a more integrated solution can be implemented.

diff --git a/dix/getevents.c b/dix/getevents.c
index d68fa96..ffa89fa 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -770,65 +770,27 @@ add_to_scroll_valuator(DeviceIntPtr dev, ValuatorMask *mask, int valuator, doubl
 }
 
 
-/* FIXME: relative events from devices with absolute axis ranges is
-   fundamentally broken. We map the device coordinate range into the screen
-   range, but don't really account for device resolution in that.
-
-   what we do here is a hack to make touchpads usable. for a given relative
-   motion vector in device coordinates:
-   1. calculate physical movement on the device in metres
-   2. calculate pixel vector that is the same physical movement on the
-      screen (times some magic number to provide sensible base speed)
-   3. calculate what percentage this vector is of the current screen
-      width/height
-   4. calculate equivalent vector in % on the device's min/max axis range
-   5. Use that device vector as the actual motion vector
-
-   e.g. 10/50mm on the device, 10/50mm on the screen are 30/100 pixels,
-   30/100 pixels are 1/3% of the width, 1/3% of the device is a vector of
-   20/80 -> use 20/80 as dx/dy.
-
-   dx/dy is then applied to the current position in device coordinates,
-   mapped to screen coordinates and thus the movement on the screen reflects
-   the motion direction on the device.
- */
 static void
 scale_for_device_resolution(DeviceIntPtr dev, ValuatorMask *mask)
 {
-    double x, y;
+    double y;
     ValuatorClassPtr v = dev->valuator;
     int xrange = v->axes[0].max_value - v->axes[0].min_value + 1;
     int yrange = v->axes[1].max_value - v->axes[1].min_value + 1;
 
-    /* Assume 100 units/m for devices without resolution */
-    int xres = 100000, yres = 100000;
-
-    /* If we have multiple screens with different dpi, it gets complicated:


Reply to: