xorg-server: Changes to 'ubuntu'
debian/changelog | 24 ++++
debian/local/xvfb-run | 32 +-----
debian/patches/176_quell_warning_exacopydirty.patch | 13 ++
debian/patches/177_animated_cursor_change_master.patch | 89 +++++++++++++++++
debian/patches/series | 2
5 files changed, 135 insertions(+), 25 deletions(-)
New commits:
commit e170094bc45119a7964c858a99f93d1a37468d69
Author: Bryce Harrington <bryce@bryceharrington.org>
Date: Wed Apr 8 18:53:57 2009 -0700
Fix crash with animated cursors, quell exaCopyDirty warnings, and revert
xvfb-run change
diff --git a/debian/changelog b/debian/changelog
index 915558a..4080e81 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,27 @@
+xorg-server (2:1.6.0-0ubuntu14) jaunty; urgency=low
+
+ * Add 177_animated_cursor_change_master.patch: Fixes crash when using
+ animated cursors.
+ (LP: #358009)
+
+ -- Bryce Harrington <bryce@ubuntu.com> Wed, 08 Apr 2009 18:52:56 -0700
+
+xorg-server (2:1.6.0-0ubuntu13) jaunty; urgency=low
+
+ * Add 176_quell_warning_exacopydirty.patch: Quells innocuous but scary
+ sounding "exaCopyDirty: Pending damage region empty!" warning, as it
+ can lead to false-positives with bug reporters.
+
+ -- Bryce Harrington <bryce@ubuntu.com> Wed, 08 Apr 2009 14:49:36 -0700
+
+xorg-server (2:1.6.0-0ubuntu12) jaunty; urgency=low
+
+ * local/xvfb-run: Revert change from 2:1.6.0-0ubuntu9; prevents running
+ multiple times.
+ (LP: #357338. Reopen 348052 rejecting patch)
+
+ -- Bryce Harrington <bryce@ubuntu.com> Tue, 07 Apr 2009 15:21:32 -0700
+
xorg-server (2:1.6.0-0ubuntu11) jaunty; urgency=low
* Add 175_set_pointer_screen_in_xtestfakeinput.patch: Fixes issue when
diff --git a/debian/local/xvfb-run b/debian/local/xvfb-run
index eb04037..3b3889c 100644
--- a/debian/local/xvfb-run
+++ b/debian/local/xvfb-run
@@ -110,7 +110,7 @@ eval set -- "$ARGS"
while :; do
case "$1" in
- -a|--auto-servernum) SERVERNUM=$(find_free_servernum); AUTONUM="yes" ;;
+ -a|--auto-servernum) SERVERNUM=$(find_free_servernum) ;;
-e|--error-file) ERRORFILE="$2"; shift ;;
-f|--auth-file) AUTHFILE="$2"; shift ;;
-h|--help) SHOWHELP="yes" ;;
@@ -157,31 +157,13 @@ if [ -z "$AUTHFILE" ]; then
fi
# Start Xvfb
-# Loop until we get a match between lock file contents and Xvfb PID
-# (this avoids a race condition when another process starts an Xserver).
-while true; do
- MCOOKIE=$(mcookie)
- XAUTHORITY=$AUTHFILE xauth add ":$SERVERNUM" "$XAUTHPROTO" "$MCOOKIE" \
- >>"$ERRORFILE" 2>&1
- XAUTHORITY=$AUTHFILE Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP \
- >>"$ERRORFILE" 2>&1 &
- XVFBPID=$!
- # Test PID of Xvfb and contents of the X server lock file
- # (use numerical comparison to avoid whitespace issues).
- # If the display was in use the Xvfb process will die on its own.
- if [ "$XVFBPID" -eq "$(</tmp/.X${SERVERNUM}-lock)" ]; then
- break
- fi
- # The display is in use so try another one (if '-a' was specified).
- if [ "$AUTONUM" ]; then
- SERVERNUM=$(find_free_servernum)
- continue
- fi
- error "display :$SERVERNUM already in use"
- exit 1
-done
+MCOOKIE=$(mcookie)
+XAUTHORITY=$AUTHFILE xauth add ":$SERVERNUM" "$XAUTHPROTO" "$MCOOKIE" \
+ >"$ERRORFILE" 2>&1
+XAUTHORITY=$AUTHFILE Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP >"$ERRORFILE" \
+ 2>&1 &
+XVFBPID=$!
-# Xvfb has started without any race conditions.
sleep "$STARTWAIT"
if ! kill -0 $XVFBPID 2>/dev/null; then
echo "Xvfb failed to start" >&2
diff --git a/debian/patches/176_quell_warning_exacopydirty.patch b/debian/patches/176_quell_warning_exacopydirty.patch
new file mode 100644
index 0000000..64f8e8a
--- /dev/null
+++ b/debian/patches/176_quell_warning_exacopydirty.patch
@@ -0,0 +1,13 @@
+diff --git a/exa/exa_migration.c b/exa/exa_migration.c
+index 571650c..733379f 100644
+--- a/exa/exa_migration.c
++++ b/exa/exa_migration.c
+@@ -166,7 +166,7 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
+ static Bool firsttime = TRUE;
+
+ if (firsttime) {
+- ErrorF("%s: Pending damage region empty!\n", __func__);
++ /* ErrorF("%s: Pending damage region empty!\n", __func__); */
+ firsttime = FALSE;
+ }
+ }
diff --git a/debian/patches/177_animated_cursor_change_master.patch b/debian/patches/177_animated_cursor_change_master.patch
new file mode 100644
index 0000000..e17f664
--- /dev/null
+++ b/debian/patches/177_animated_cursor_change_master.patch
@@ -0,0 +1,89 @@
+From 86c5c065a9348a1e5c1f3712fd13a0bdc10f7998 Mon Sep 17 00:00:00 2001
+From: Thomas Jaeger <ThJaeger@gmail.com>
+Date: Tue, 6 Jan 2009 00:17:45 -0500
+Subject: [PATCH] Don't create animated cursors for slave devices
+
+Fixes bug #19034
+
+See also https://lists.ubuntu.com/archives/ubuntu-x/2009-April/000495.html
+
+The issue is associated to slave device cursors, basically an artifact
+of how the xserver-1.6 code is derived from master. There is no API to
+access device cursors in 1.6, but it turns out that under certain
+circumstances (I'm not exactly sure how this happens but it seems to be
+some kind of race condition between XI and core grabs), it is possible
+that a device cursor will be set anyway. If it's a regular cursor (that
+is what the bug report was originally about), this is not a problem
+anymore since this will just modify the core cursor, but if it's an
+animated cursor, we're in trouble: The device cursor will keep
+replacing the core cursor (so the user will notice an animated cursor
+that shouldn't be there), and when the client destroys the animated
+cursor, the device animated cursor will stay active leading to a server
+crash the next time the cursor is updated. There is a patch attached to
+the fdo bug report that fixes the issue by basically doing the same
+thing for an animated cursor that we do for a regular cursor: Apply the
+change to the associated master device. This is safe for 1.6 since this
+code path should never be hit in the first place, but unfortunately,
+this is not the direction that Peter wants to go for master where each
+device has its own sprite (I'm not sure how things are supposed to work
+with animated cursors there).
+
+The crash happens randomly when an application that grabs an Xi device
+(such as easystroke) is running when clicking on firefox menus, but it's
+fairly easy to reproduce reliably by setting up a timeout gesture in
+easystroke to rotate the cube in compiz via Control+Shift+Button1 and
+invoke the gesture when firefox is loading a page and showing a 'sandbox'.
+---
+ render/animcur.c | 18 +++++++++++-------
+ 1 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/render/animcur.c b/render/animcur.c
+index d80094d..e117915 100644
+--- a/render/animcur.c
++++ b/render/animcur.c
+@@ -230,11 +230,15 @@ AnimCurDisplayCursor (DeviceIntPtr pDev,
+ {
+ AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
+ Bool ret;
++ DeviceIntPtr pMasterDev = pDev->isMaster ? pDev : pDev->u.master;
++
++ if (!pMasterDev)
++ return FALSE;
+
+ Unwrap (as, pScreen, DisplayCursor);
+ if (IsAnimCur(pCursor))
+ {
+- if (pCursor != animCurState[pDev->id].pCursor)
++ if (pCursor != animCurState[pMasterDev->id].pCursor)
+ {
+ AnimCurPtr ac = GetAnimCur(pCursor);
+
+@@ -242,10 +246,10 @@ AnimCurDisplayCursor (DeviceIntPtr pDev,
+ (pDev, pScreen, ac->elts[0].pCursor);
+ if (ret)
+ {
+- animCurState[pDev->id].elt = 0;
+- animCurState[pDev->id].time = GetTimeInMillis () + ac->elts[0].delay;
+- animCurState[pDev->id].pCursor = pCursor;
+- animCurState[pDev->id].pScreen = pScreen;
++ animCurState[pMasterDev->id].elt = 0;
++ animCurState[pMasterDev->id].time = GetTimeInMillis () + ac->elts[0].delay;
++ animCurState[pMasterDev->id].pCursor = pCursor;
++ animCurState[pMasterDev->id].pScreen = pScreen;
+ }
+ }
+ else
+@@ -253,8 +257,8 @@ AnimCurDisplayCursor (DeviceIntPtr pDev,
+ }
+ else
+ {
+- animCurState[pDev->id].pCursor = 0;
+- animCurState[pDev->id].pScreen = 0;
++ animCurState[pMasterDev->id].pCursor = 0;
++ animCurState[pMasterDev->id].pScreen = 0;
+ ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
+ }
+ Wrap (as, pScreen, DisplayCursor, AnimCurDisplayCursor);
+--
+1.6.0.4
+
diff --git a/debian/patches/series b/debian/patches/series
index 814d73a..b714221 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -32,3 +32,5 @@
174_set_bg_pixmap_of_cow_to_none.patch
#999_default_modedebug_on.patch
175_set_pointer_screen_in_xtestfakeinput.patch
+176_quell_warning_exacopydirty.patch
+177_animated_cursor_change_master.patch
Reply to: