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

xorg-server: Changes to 'debian-unstable'



 ChangeLog                      |  144 +++++++++++++++++++++++++++++++++++++++++
 config/config.c                |   32 +++++++++
 configure.ac                   |    6 -
 debian/changelog               |    8 ++
 dix/getevents.c                |   80 +++++-----------------
 hw/xfree86/common/xf86Config.c |    2 
 hw/xfree86/common/xf86DPMS.c   |    2 
 hw/xwin/Makefile.am            |    2 
 include/hotplug.h              |    4 -
 os/log.c                       |    2 
 10 files changed, 213 insertions(+), 69 deletions(-)

New commits:
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 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:
-       we have to map which screen we're on and then take the dpi of that
-       screen to be somewhat accurate.  */
-    const ScreenPtr s = screenInfo.screens[0];
-    const double screen_res = 1000.0 * s->width/s->mmWidth; /* units/m */
+    double screen_ratio = 1.0 * screenInfo.width/screenInfo.height;
+    double device_ratio = 1.0 * xrange/yrange;
+    double resolution_ratio = 1.0;
+    double ratio;
 
-    /* some magic multiplier, so unaccelerated movement of x mm on the
-       device reflects x * magic mm on the screen */
-    const double magic = 4;
+    if (!valuator_mask_fetch_double(mask, 1, &y))
+        return;
 
-    if (v->axes[0].resolution != 0 && v->axes[1].resolution != 0) {
-        xres = v->axes[0].resolution;
-        yres = v->axes[1].resolution;
-    }
+    if (v->axes[0].resolution != 0 && v->axes[1].resolution != 0)
+        resolution_ratio = 1.0 * v->axes[0].resolution/v->axes[1].resolution;
 
-    if (valuator_mask_isset(mask, 0)) {
-        x = valuator_mask_get_double(mask, 0);
-        x = magic * x/xres * screen_res/screenInfo.width * xrange;
-        valuator_mask_set_double(mask, 0, x);
-    }
-
-    if (valuator_mask_isset(mask, 1)) {
-        y = valuator_mask_get_double(mask, 1);
-        y = magic * y/yres * screen_res/screenInfo.height * yrange;
-        valuator_mask_set_double(mask, 1, y);
-    }
+    ratio = device_ratio/resolution_ratio/screen_ratio;
+    valuator_mask_set_double(mask, 1, y / ratio);
 }
 
 /**
@@ -842,6 +804,15 @@ moveRelative(DeviceIntPtr dev, int flags, ValuatorMask *mask)
 {
     int i;
     Bool clip_xy = IsMaster(dev) || !IsFloating(dev);
+    ValuatorClassPtr v = dev->valuator;
+
+    /* for abs devices in relative mode, we've just scaled wrong, since we
+       mapped the device's shape into the screen shape. Undo this. */
+    if ((flags & POINTER_ABSOLUTE) == 0 && v && v->numAxes > 1 &&
+        v->axes[0].min_value < v->axes[0].max_value &&
+        v->axes[1].min_value < v->axes[1].max_value) {
+        scale_for_device_resolution(dev, mask);
+    }
 
     /* calc other axes, clip, drop back into valuators */
     for (i = 0; i < valuator_mask_size(mask); i++) {
@@ -1470,21 +1441,10 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type,
             set_raw_valuators(raw, &mask, raw->valuators.data);
     }
     else {
-        ValuatorClassPtr v = pDev->valuator;
-
         transformRelative(pDev, &mask);
 
-        /* for abs devices in relative mode, we've just scaled wrong, since we
-           mapped the device's shape into the screen shape. Undo this. */
-        if (v && v->numAxes > 1 &&
-            v->axes[0].min_value < v->axes[0].max_value &&
-            v->axes[1].min_value < v->axes[1].max_value) {
-            scale_for_device_resolution(pDev, &mask);
-        }
-
         if (flags & POINTER_ACCELERATE)
             accelPointer(pDev, &mask, ms);
-
         if ((flags & POINTER_NORAW) == 0 && raw)
             set_raw_valuators(raw, &mask, raw->valuators.data);
 

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>

diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 481674d..779ba6f 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -103,7 +103,7 @@
 					"/etc/X11/%X," "%C/X11/%X"
 #endif
 #ifndef SYS_CONFIGDIRPATH
-#define SYS_CONFIGDIRPATH	"/usr/share/X11/%X," "%D/X11/%X"
+#define SYS_CONFIGDIRPATH	"%D/X11/%X"
 #endif
 #ifndef PROJECTROOT
 #define PROJECTROOT	"/usr/X11R6"

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>

diff --git a/hw/xfree86/common/xf86DPMS.c b/hw/xfree86/common/xf86DPMS.c
index 14d1f45..2b5a3ed 100644
--- a/hw/xfree86/common/xf86DPMS.c
+++ b/hw/xfree86/common/xf86DPMS.c
@@ -166,7 +166,7 @@ DPMSSet(ClientPtr client, int level)
                 return rc;
         }
     } else if (!xf86IsUnblank(screenIsSaved)) {
-        rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverReset);
+        rc = dixSaveScreens(client, SCREEN_SAVER_OFF, ScreenSaverReset);
         if (rc != Success)
             return rc;
     }

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>

diff --git a/os/log.c b/os/log.c
index a368569..2a721b9 100644
--- a/os/log.c
+++ b/os/log.c
@@ -697,7 +697,7 @@ LogVMessageVerbSigSafe(MessageType type, int verb, const char *format, va_list a
     if (sizeof(buf) - len == 1)
         buf[len - 1] = '\n';
 
-    newline = (buf[len - 1] == '\n');
+    newline = (len > 0 && buf[len - 1] == '\n');
     LogSWrite(verb, buf, len, newline);
 }
 

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>

diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am
index cf42cfd..4ee9632 100644
--- a/hw/xwin/Makefile.am
+++ b/hw/xwin/Makefile.am
@@ -155,7 +155,7 @@ XWIN_LIBS += 	$(top_builddir)/pseudoramiX/libPseudoramiX.la \
                 $(top_builddir)/Xi/libXistubs.la
 XWin_DEPENDENCIES = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_LIBS) $(XSERVER_LIBS)
 XWin_LDADD = $(MULTIWINDOW_LIBS) $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_GLX_LINK_FLAGS) $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS)
-XWin_LDFLAGS = -mwindows -static -Wl,--disable-stdcall-fixup
+XWin_LDFLAGS = -mwindows -Wl,--disable-stdcall-fixup $(LD_EXPORT_SYMBOLS_FLAG)
 
 
 .rc.o:


Reply to: