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

xorg-server: Changes to 'debian-unstable'



 ChangeLog                                                               |  297 
 Xext/geext.c                                                            |   13 
 Xext/geint.h                                                            |    3 
 configure.ac                                                            |    4 
 debian/changelog                                                        |   10 
 debian/patches/19-exa-handle-pixmap-create-destroy-in-lower-layers.diff |  887 --
 debian/patches/series                                                   |    1 
 debian/rules                                                            |    2 
 debian/xsfbs/xsfbs.mk                                                   |   18 
 dix/events.c                                                            |    8 
 exa/exa.c                                                               |  145 
 exa/exa_accel.c                                                         |   45 
 exa/exa_classic.c                                                       |    8 
 exa/exa_driver.c                                                        |    8 
 exa/exa_mixed.c                                                         |    8 
 exa/exa_priv.h                                                          |   17 
 exa/exa_unaccel.c                                                       |   73 
 hw/vfb/InitInput.c                                                      |    6 
 hw/xquartz/GL/indirect.c                                                |    2 
 hw/xquartz/X11Application.h                                             |    1 
 hw/xquartz/X11Application.m                                             |   19 
 hw/xquartz/X11Controller.h                                              |    6 
 hw/xquartz/X11Controller.m                                              |  102 
 hw/xquartz/bundle/Resources/Dutch.lproj/Localizable.strings             |binary
 hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist                |    4 
 hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib         |  104 
 hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib       |binary
 hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib       | 1791 +---
 hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib     |binary
 hw/xquartz/bundle/Resources/French.lproj/Localizable.strings            |binary
 hw/xquartz/bundle/Resources/French.lproj/locversion.plist               |    4 
 hw/xquartz/bundle/Resources/French.lproj/main.nib/designable.nib        |  105 
 hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib      |binary
 hw/xquartz/bundle/Resources/German.lproj/Localizable.strings            |binary
 hw/xquartz/bundle/Resources/German.lproj/locversion.plist               |    4 
 hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib        |  106 
 hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib      |binary
 hw/xquartz/bundle/Resources/Italian.lproj/Localizable.strings           |binary
 hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist              |    4 
 hw/xquartz/bundle/Resources/Italian.lproj/main.nib/designable.nib       |  108 
 hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib     |binary
 hw/xquartz/bundle/Resources/Japanese.lproj/Localizable.strings          |binary
 hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist             |    4 
 hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/designable.nib      |  125 
 hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib    |binary
 hw/xquartz/bundle/Resources/Spanish.lproj/Localizable.strings           |binary
 hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist              |    4 
 hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib       |   96 
 hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib     |binary
 hw/xquartz/bundle/Resources/ar.lproj/InfoPlist.strings                  |binary
 hw/xquartz/bundle/Resources/ar.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/ar.lproj/locversion.plist                   |   14 
 hw/xquartz/bundle/Resources/ar.lproj/main.nib/designable.nib            | 3955 ++++++++++
 hw/xquartz/bundle/Resources/ar.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/da.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/da.lproj/locversion.plist                   |    4 
 hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib            |   82 
 hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/fi.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/fi.lproj/locversion.plist                   |    4 
 hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib            |  167 
 hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/ko.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/ko.lproj/locversion.plist                   |    4 
 hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib            |   82 
 hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/no.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/no.lproj/locversion.plist                   |    4 
 hw/xquartz/bundle/Resources/no.lproj/main.nib/designable.nib            |   82 
 hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/pl.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/pl.lproj/locversion.plist                   |    4 
 hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib            |   92 
 hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/pt.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/pt.lproj/locversion.plist                   |    4 
 hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib            |   82 
 hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/pt_PT.lproj/Localizable.strings             |binary
 hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist                |    4 
 hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib         |  112 
 hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib       |binary
 hw/xquartz/bundle/Resources/ru.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/ru.lproj/locversion.plist                   |    4 
 hw/xquartz/bundle/Resources/ru.lproj/main.nib/designable.nib            |  110 
 hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/sv.lproj/Localizable.strings                |binary
 hw/xquartz/bundle/Resources/sv.lproj/locversion.plist                   |    4 
 hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib            |   82 
 hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib          |binary
 hw/xquartz/bundle/Resources/zh_CN.lproj/Localizable.strings             |binary
 hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist                |    4 
 hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/designable.nib         |   84 
 hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib       |binary
 hw/xquartz/bundle/Resources/zh_TW.lproj/Localizable.strings             |binary
 hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist                |    4 
 hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib         |   84 
 hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib       |binary
 hw/xquartz/doc/Makefile.am                                              |    2 
 hw/xquartz/doc/Xquartz.man.pre                                          |   39 
 hw/xquartz/quartz.c                                                     |    1 
 hw/xquartz/quartzCommon.h                                               |    1 
 hw/xquartz/quartzKeyboard.c                                             |   91 
 hw/xquartz/quartzKeyboard.h                                             |   10 
 mi/midispcur.c                                                          |    6 
 os/connection.c                                                         |    5 
 106 files changed, 5921 insertions(+), 3448 deletions(-)

New commits:
commit 93b277dbf3ac7490de09716403d68c67f2ad08cb
Author: Julien Cristau <jcristau@debian.org>
Date:   Fri Apr 30 15:49:37 2010 +0200

    Update changelogs and delete merged patch

diff --git a/ChangeLog b/ChangeLog
index 9211d5b..1d9cbca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,300 @@
+commit 2c94da4e22520f4a3e783db06b73251131382868
+Author: Michel Dänzer <daenzer@vmware.com>
+Date:   Thu Apr 22 14:16:59 2010 +0200
+
+    EXA: Check sys_ptr isn't NULL before passing it to the UploadToScreen hook.
+    
+    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=27380 .
+    
+    Signed-off-by: Michel Dänzer <daenzer@vmware.com>
+    Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit 7b6517526631a65891b806bca30be8f49955d0a8)
+
+commit 7815b02e8d9636b6abbe1f7cb555a1069db2d59f
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Wed Apr 21 11:47:24 2010 +1000
+
+    Revert "mi: don't thrash resources when displaying the software cursor across screens"
+    
+    This commit leads to a segfault on the very first XTS test case.
+    
+    Backtrace:
+    0: /opt/xorg/bin/Xorg (xorg_backtrace+0x3b) [0x80a33db]
+    1: /opt/xorg/bin/Xorg (0x8048000+0x62a75) [0x80aaa75]
+    2: (vdso) (__kernel_rt_sigreturn+0x0) [0x5d140c]
+    3: /lib/libc.so.6 (0x9bb000+0x73579) [0xa2e579]
+    4: /lib/libc.so.6 (realloc+0xe0) [0xa2e830]
+    5: /opt/xorg/bin/Xorg (Xrealloc+0x33) [0x80a3f33]
+    6: /opt/xorg/bin/Xorg (0x8048000+0x1ab79) [0x8062b79]
+    7: /opt/xorg/bin/Xorg (0x8048000+0x1ac4e) [0x8062c4e]
+    8: /opt/xorg/bin/Xorg (RegisterExtensionNames+0x2ce) [0x8062fbe]
+    9: /opt/xorg/bin/Xorg (AddExtension+0x19a) [0x807bd7a]
+    10: /opt/xorg//lib/xorg/modules/extensions/libextmod.so (0x728000+0x1169a)
+    [0x73969a]
+    11: /opt/xorg/bin/Xorg (InitExtensions+0x85) [0x80c0eb5]
+    12: /opt/xorg/bin/Xorg (0x8048000+0x1a51d) [0x806251d]
+    13: /lib/libc.so.6 (__libc_start_main+0xe6) [0x9d1bb6]
+    14: /opt/xorg/bin/Xorg (0x8048000+0x1a2a1) [0x80622a1]
+    Segmentation fault at address 0x10b2d5f8
+    
+    valgrind output:
+    ==5069== Invalid read of size 4
+    ==5069==    at 0x80F928D: FreePicture (picture.c:1531)
+    ==5069==    by 0x818DDEF: miDCDeviceCleanup (midispcur.c:867)
+    ==5069==    by 0x81B97F0: miSpriteDeviceCursorCleanup (misprite.c:968)
+    ==5069==    by 0x80995FA: miPointerDeviceCleanup (mipointer.c:292)
+    ==5069==    by 0x807973E: CloseDevice (devices.c:840)
+    ==5069==    by 0x80799B6: CloseDownDevices (devices.c:933)
+    ==5069==    by 0x8062705: main (main.c:309)
+    ==5069==  Address 0x4cce844 is 12 bytes inside a block of size 84 free'd
+    ==5069==    at 0x40057F6: free (vg_replace_malloc.c:325)
+    ==5069==    by 0x80A3DE0: Xfree (utils.c:1154)
+    ==5069==    by 0x80F9332: FreePicture (picture.c:1576)
+    ==5069==    by 0x80FBB4B: PictureDestroyWindow (picture.c:69)
+    ==5069==    by 0x810B1A3: damageDestroyWindow (damage.c:1840)
+    ==5069==    by 0x80864F1: FreeWindowResources (window.c:846)
+    ==5069==    by 0x8086812: DeleteWindow (window.c:925)
+    ==5069==    by 0x806B53E: FreeClientResources (resource.c:806)
+    ==5069==    by 0x806B60F: FreeAllResources (resource.c:823)
+    ==5069==    by 0x80626E4: main (main.c:299)
+    ==5069==
+    ==5069== Invalid write of size 4
+    ==5069==    at 0x80F9295: FreePicture (picture.c:1531)
+    ==5069==    by 0x818DDEF: miDCDeviceCleanup (midispcur.c:867)
+    ==5069==    by 0x81B97F0: miSpriteDeviceCursorCleanup (misprite.c:968)
+    ==5069==    by 0x80995FA: miPointerDeviceCleanup (mipointer.c:292)
+    ==5069==    by 0x807973E: CloseDevice (devices.c:840)
+    ==5069==    by 0x80799B6: CloseDownDevices (devices.c:933)
+    ==5069==    by 0x8062705: main (main.c:309)
+    ==5069==  Address 0x4cce844 is 12 bytes inside a block of size 84 free'd
+    ==5069==    at 0x40057F6: free (vg_replace_malloc.c:325)
+    ==5069==    by 0x80A3DE0: Xfree (utils.c:1154)
+    ==5069==    by 0x80F9332: FreePicture (picture.c:1576)
+    ==5069==    by 0x80FBB4B: PictureDestroyWindow (picture.c:69)
+    ==5069==    by 0x810B1A3: damageDestroyWindow (damage.c:1840)
+    ==5069==    by 0x80864F1: FreeWindowResources (window.c:846)
+    ==5069==    by 0x8086812: DeleteWindow (window.c:925)
+    ==5069==    by 0x806B53E: FreeClientResources (resource.c:806)
+    ==5069==    by 0x806B60F: FreeAllResources (resource.c:823)
+    ==5069==    by 0x80626E4: main (main.c:299)
+    
+    XTS test case: Xproto pAllocColor
+    
+    This reverts commit 00b8b7ad61b6f818271fb4d1e383113170309d72.
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit ba2ba32e04f9002dbb60f10e174ac63d16e5f507
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Wed Apr 21 09:17:26 2010 +1000
+
+    xserver 1.7.6.902
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit e8fae02f19d6d75ac3edbea2f5af8d250dcfbde3
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Wed Apr 14 17:43:22 2010 +1000
+
+    dix: Fix crash in DeliverGrabbedEvents.
+    
+    If both devices are synchronously grabbed, first with a GrabPointer, then
+    with a GrabKeyboard (GrabModeSync on both), sync.other of each device points
+    to the grab of the respective other device.
+    
+    If the keyboard is then thawed through a AllowSome request, the VCK's
+    sync.other is reset to NULL. Subsequently, an event on the VCP would crash
+    the server when dereferencing sync.other on the VCP.
+    
+    The check's purpose is to compare if the other device is grabbed by the same
+    client, which should be checked by accessing (dev->deviceGrab->grab->resource).
+    A check of the server-1.3 sources confirms that.
+    
+    XTS test case: Xlib13 XAllowEvents 20.
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Reviewed-by: Keith Packard <keithp@keithp.com>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit 9ddbb03fa56aa73c3f417d8ee6433e45b94445b3)
+
+commit aa6a18fdebf444084c27e4a7f3eef7d93f9929b0
+Author: Cyril Brulebois <kibi@debian.org>
+Date:   Sat Apr 17 01:31:14 2010 +0200
+
+    exa: handle pixmap create/destroy in lower layers
+    
+    - Pixmaps that are created during a fallback are automatically prepared access.
+    - During the fallback accelerated ops are blocked to prevent new/scratch gc's
+      from triggering accelerated ops on mapped pixmaps.
+    - A few cases of incorrect wrapping (on the top level pointer instead of
+      between damage and (w)fb) have been removed.
+    
+    Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
+    Acked-by: Michel Dänzer <michel@daenzer.net>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit 342f3689d17256c92cbfee079d24501d27aa1153)
+    
+    Conflicts:
+    
+    	exa/exa_mixed.c
+    
+    Debian bug#576816 <http://bugs.debian.org/576816>
+    
+    Tested-by: Arthur Marsh <arthur.marsh@internode.on.net>
+    Signed-off-by: Cyril Brulebois <kibi@debian.org>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit acbcb77bf6acf513660b4a9df8d20a5c04f1c865
+Author: Julien Cristau <jcristau@debian.org>
+Date:   Tue Apr 6 11:51:53 2010 +0200
+
+    XGE: don't register an extension event
+    
+    The GenericEvent is a core event, we never send an extension event, so
+    don't reserve an id for one.
+    
+    Signed-off-by: Julien Cristau <jcristau@debian.org>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit fc5d76740851725e3788c68e14474a012a205892)
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit c52b9e143da294e787d93ddbd7b9b620a3a892e2
+Author: Julien Cristau <jcristau@debian.org>
+Date:   Tue Apr 13 22:28:36 2010 +0200
+
+    vfb: add a name and type to the pointer and keyboard
+    
+    Fixes a crash in XIQueryDevice which calls strlen on a NULL pointer.
+    
+     #0  strlen () at ../sysdeps/x86_64/strlen.S:31
+     #1  0x00000000004c16ed in SizeDeviceInfo (dev=0x969bd0)
+         at ../../Xi/xiquerydevice.c:204
+     #2  0x00000000004c1a01 in ProcXIQueryDevice (client=0xa57510)
+         at ../../Xi/xiquerydevice.c:98
+    
+    Debian bug#575905 <http://bugs.debian.org/575905>
+    
+    Reported-by: "Bernhard R. Link" <brlink@debian.org>
+    Signed-off-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>
+    (cherry picked from commit 0e7703f9b1927328954a2fc87aac6be244819329)
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 9a9a19ac4ecdab0e2602d70354145545de37f3c5
+Author: Pierre-Loup A. Griffais <pgriffais@nvidia.com>
+Date:   Wed Apr 7 13:52:47 2010 -0700
+
+    mi: don't thrash resources when displaying the software cursor across screens
+    
+    This changes the DC layer to maintain a persistent set of GCs/pixmaps/pictures
+    for each pScreen instead of failing to thrash between them when changing
+    screens.
+    
+    Signed-off-by: Pierre-Loup A. Griffais <pgriffais@nvidia.com>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit 00b8b7ad61b6f818271fb4d1e383113170309d72)
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit ff02e0e4a2f33131520bc3bf7d6621a301c5296d
+Author: Tim Yamin <plasm@roo.me.uk>
+Date:   Mon Mar 8 12:45:15 2010 +1000
+
+    dix: fix cursor screen check for xinerama setups.
+    
+    The de-duplication of CheckPhysLimits 942eae6868b8b0f343b6a added a
+    condition that is invalid for a Xinerama setup. pScreen is invalid for the
+    Xinerama case, so comparing it to anything is a bad idea.
+    
+    Signed-off-by: Tim Yamin <plasm@roo.me.uk>
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit 5f31e2196179f8db3170d65a17d8ad40da1acb0d)
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 8616c5eb756aeb408545da5d186ad28909574dcb
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Thu Apr 15 10:55:53 2010 -0700
+
+    XQuartz GLX: Don't let garbage enter our pixel request
+    
+    https://bugs.freedesktop.org/show_bug.cgi?id=27654
+    
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+    (cherry picked from commit 5b0faf355465c9f21ad96e0ed266fbdbc29efb5b)
+
+commit 0dd9d27eaacc02f968ce98749a1696189274a8f8
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Wed Apr 14 09:06:04 2010 -0700
+
+    XQuartz: Fix possible NULL dereference in ListenOnOpenFD
+    
+    <rdar://problem/7862319>
+    
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+    Reviewed-by: Marc Majka <majka@apple.com>
+    (cherry picked from commit fe7778e58e099d353689755ed2f5aa440569ebe3)
+
+commit 3d7d699e3a024c870bca9cb0e1c922dbb87d5316
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Tue Apr 13 14:33:49 2010 -0700
+
+    XQuartz: Localization update
+    
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+    (cherry picked from commit 206531f75cd41c034e89fdfbc75ab0910682eef8)
+
+commit e7ab6537c2745decb7143c5e4eb31440be262fd0
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Fri Apr 9 16:19:43 2010 -0700
+
+    XQuartz: Add a GUI preference for the Alt / Mode_switch toggle
+    
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+    Reviewed-by: Kevin Van Vechten <kvv@apple.com>
+    (cherry picked from commit 59edde7c28db2d3174a5813a0af334e4ead2082f)
+
+commit 30f4c7e4fb20f9d465e6a56db937c4af48885161
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Fri Apr 9 13:33:06 2010 -0700
+
+    XQuartz: Customize the NSDefaults id in the man file.
+    
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+    Reviewed-by: Kevin Van Vechten <kvv@apple.com>
+    (cherry picked from commit 5600f7f001529b3afdee95546aec212a70d6a5b2)
+
+commit a75e4be03c7888a86a9b76de11e39ff8f9f7ac86
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Fri Apr 9 13:29:34 2010 -0700
+
+    XQuartz: Add a defaults option to toggle Alt / Mode_switch
+    
+    See option_sends_alt in Xquartz(1)
+    
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+    Reviewed-by: Kevin Van Vechten <kvv@apple.com>
+    (cherry picked from commit 840d12c7a6ac6a974da185045215ce944a61fab6)
+
+commit af86a25009c337954f61475196a0092712cab1e1
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date:   Mon Apr 5 16:54:22 2010 -0700
+
+    XQuartz: Blacklist some oddball legacy Mac keycodes that break wine
+    
+    http://xquartz.macosforge.org/trac/ticket/295
+    
+    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
+    Reviewed-by: Kevin Van Vechten <kvv@apple.com>
+    (cherry picked from commit d6f160510a50d4c4eaa48c9c69a5ddda0d50052c)
+
 commit 501c0ee63570da7501d047c51c40a2568af1df08
 Author: Peter Hutterer <peter.hutterer@who-t.net>
 Date:   Mon Apr 12 11:51:21 2010 +1000
diff --git a/debian/changelog b/debian/changelog
index 49e4854..b0528dc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.7.6.901-4) UNRELEASED; urgency=low
+xorg-server (2:1.7.6.902-1) UNRELEASED; urgency=low
 
   [ Timo Aaltonen ]
   * Update patch 17; Add missing __datadir__ to cpprules.in.
@@ -16,8 +16,13 @@ xorg-server (2:1.7.6.901-4) UNRELEASED; urgency=low
   * Change driver ABI Conflicts to Breaks.  Drop old Conflicts/Replaces on
     pre-modular xserver packages.
   * Unset PRERELEASE to avoid the prerelease warning in the log.
+  * New upstream release candidate
+    - pull server-1.7-nominations up to commit 2c94da4
+    - fixes Xvfb crash with XI2 (closes: #575905)
+  * 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff is now upstream,
+    remove it.
 
- -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 20 Apr 2010 17:46:32 +0300
+ -- Julien Cristau <jcristau@debian.org>  Fri, 30 Apr 2010 15:46:51 +0200
 
 xorg-server (2:1.7.6.901-3) unstable; urgency=low
 
diff --git a/debian/patches/19-exa-handle-pixmap-create-destroy-in-lower-layers.diff b/debian/patches/19-exa-handle-pixmap-create-destroy-in-lower-layers.diff
deleted file mode 100644
index 9d308ed..0000000
--- a/debian/patches/19-exa-handle-pixmap-create-destroy-in-lower-layers.diff
+++ /dev/null
@@ -1,887 +0,0 @@
-From 23636fb5f7b9a984d0b16a195ad448a96f2f22d3 Mon Sep 17 00:00:00 2001
-From: Cyril Brulebois <kibi@debian.org>
-Date: Sat, 17 Apr 2010 01:12:34 +0200
-Subject: [PATCH] exa: handle pixmap create/destroy in lower layers
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-- Pixmaps that are created during a fallback are automatically prepared access.
-- During the fallback accelerated ops are blocked to prevent new/scratch gc's
-  from triggering accelerated ops on mapped pixmaps.
-- A few cases of incorrect wrapping (on the top level pointer instead of
-  between damage and (w)fb) have been removed.
-
-Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
-Acked-by: Michel Dänzer <michel@daenzer.net>
-Signed-off-by: Keith Packard <keithp@keithp.com>
-(cherry picked from commit 342f3689d17256c92cbfee079d24501d27aa1153)
-
-Conflicts:
-
-	exa/exa_mixed.c
-
-Debian bug#576816 <http://bugs.debian.org/576816>
-
-Tested-by: Arthur Marsh <arthur.marsh@internode.on.net>
-Signed-off-by: Cyril Brulebois <kibi@debian.org>
----
- exa/exa.c         |  145 ++++++++++++-----------------------------------------
- exa/exa_accel.c   |   40 +++++++++++----
- exa/exa_classic.c |    8 +++
- exa/exa_driver.c  |    8 +++
- exa/exa_mixed.c   |    8 +++
- exa/exa_priv.h    |   17 +++++--
- exa/exa_unaccel.c |   73 ++++++++++++++-------------
- 7 files changed, 137 insertions(+), 162 deletions(-)
-
-diff --git a/exa/exa.c b/exa/exa.c
-index e264d44..b8f0419 100644
---- a/exa/exa.c
-+++ b/exa/exa.c
-@@ -480,57 +480,6 @@ const GCFuncs exaGCFuncs = {
-     exaCopyClip
- };
- 
--/*
-- * This wrapper exists to allow fbValidateGC to work.
-- * Note that we no longer assume newly created pixmaps to be in normal ram.
-- * This assumption is certainly not garuanteed with driver allocated pixmaps.
-- */
--static PixmapPtr
--exaCreatePixmapWithPrepare(ScreenPtr pScreen, int w, int h, int depth,
--		unsigned usage_hint)
--{
--    PixmapPtr pPixmap;
--    ExaScreenPriv(pScreen);
--
--    /* This swaps between this function and the real upper layer function.
--     * Normally this would swap to the fb layer pointer, this is a very special case.
--     */
--    swap(pExaScr, pScreen, CreatePixmap);
--    pPixmap = pScreen->CreatePixmap(pScreen, w, h, depth, usage_hint);
--    swap(pExaScr, pScreen, CreatePixmap);
--
--    if (!pPixmap)
--	return NULL;
--
--    /* Note the usage of ExaDoPrepareAccess, this allowed because:
--     * The pixmap is new, so not offscreen in the classic exa case.
--     * For EXA_HANDLES_PIXMAPS the driver will handle whatever is needed.
--     * We want to signal that the pixmaps will be used as destination.
--     */
--    ExaDoPrepareAccess(pPixmap, EXA_PREPARE_AUX_DEST);
--
--    return pPixmap;
--}
--
--static Bool
--exaDestroyPixmapWithFinish(PixmapPtr pPixmap)
--{
--    ScreenPtr pScreen = pPixmap->drawable.pScreen;
--    ExaScreenPriv(pScreen);
--    Bool ret;
--
--    exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_AUX_DEST);
--
--    /* This swaps between this function and the real upper layer function.
--     * Normally this would swap to the fb layer pointer, this is a very special case.
--     */
--    swap(pExaScr, pScreen, DestroyPixmap);
--    ret = pScreen->DestroyPixmap(pPixmap);
--    swap(pExaScr, pScreen, DestroyPixmap);
--
--    return ret;
--}
--
- static void
- exaValidateGC(GCPtr pGC,
- 		unsigned long changes,
-@@ -542,20 +491,9 @@ exaValidateGC(GCPtr pGC,
- 
-     ScreenPtr pScreen = pDrawable->pScreen;
-     ExaScreenPriv(pScreen);
--    CreatePixmapProcPtr old_ptr = NULL;
--    DestroyPixmapProcPtr old_ptr2 = NULL;
-+    ExaGCPriv(pGC);
-     PixmapPtr pTile = NULL;
--    EXA_GC_PROLOGUE(pGC);
--
--    /* save the "fb" pointer. */
--    old_ptr = pExaScr->SavedCreatePixmap;
--    /* create a new upper layer pointer. */
--    wrap(pExaScr, pScreen, CreatePixmap, exaCreatePixmapWithPrepare);
--
--    /* save the "fb" pointer. */
--    old_ptr2 = pExaScr->SavedDestroyPixmap;
--    /* create a new upper layer pointer. */
--    wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmapWithFinish);
-+    Bool finish_current_tile = FALSE;
- 
-     /* Either of these conditions is enough to trigger access to a tile pixmap. */
-     /* With pGC->tileIsPixel == 1, you run the risk of dereferencing an invalid tile pixmap pointer. */
-@@ -569,8 +507,10 @@ exaValidateGC(GCPtr pGC,
- 	 */
- 	if (pTile && pTile->drawable.depth != pDrawable->depth && !(changes & GCTile)) {
- 	    PixmapPtr pRotatedTile = fbGetRotatedPixmap(pGC);
--	    if (pRotatedTile->drawable.depth == pDrawable->depth)
-+	    if (pRotatedTile && pRotatedTile->drawable.depth == pDrawable->depth)
- 		pTile = pRotatedTile;
-+	    else
-+		finish_current_tile = TRUE; /* CreatePixmap will be called. */
- 	}
-     }
- 
-@@ -579,42 +519,39 @@ exaValidateGC(GCPtr pGC,
-     if (pTile)
- 	exaPrepareAccess(&pTile->drawable, EXA_PREPARE_SRC);
- 
-+    /* Calls to Create/DestroyPixmap have to be identified as special. */
-+    pExaScr->fallback_counter++;
-+    swap(pExaGC, pGC, funcs);
-     (*pGC->funcs->ValidateGC)(pGC, changes, pDrawable);
-+    swap(pExaGC, pGC, funcs);
-+    pExaScr->fallback_counter--;
- 
-     if (pTile)
- 	exaFinishAccess(&pTile->drawable, EXA_PREPARE_SRC);
-+    if (finish_current_tile && pGC->tile.pixmap)
-+	exaFinishAccess(&pGC->tile.pixmap->drawable, EXA_PREPARE_AUX_DEST);
-     if (pGC->stipple)
--        exaFinishAccess(&pGC->stipple->drawable, EXA_PREPARE_MASK);
--
--    /* switch back to the normal upper layer. */
--    unwrap(pExaScr, pScreen, CreatePixmap);
--    /* restore copy of fb layer pointer. */
--    pExaScr->SavedCreatePixmap = old_ptr;
--
--    /* switch back to the normal upper layer. */
--    unwrap(pExaScr, pScreen, DestroyPixmap);
--    /* restore copy of fb layer pointer. */
--    pExaScr->SavedDestroyPixmap = old_ptr2;
--
--    EXA_GC_EPILOGUE(pGC);
-+	exaFinishAccess(&pGC->stipple->drawable, EXA_PREPARE_MASK);
- }
- 
- /* Is exaPrepareAccessGC() needed? */
- static void
- exaDestroyGC(GCPtr pGC)
- {
--    EXA_GC_PROLOGUE (pGC);
-+    ExaGCPriv(pGC);
-+    swap(pExaGC, pGC, funcs);
-     (*pGC->funcs->DestroyGC)(pGC);
--    EXA_GC_EPILOGUE (pGC);
-+    swap(pExaGC, pGC, funcs);
- }
- 
- static void
- exaChangeGC (GCPtr pGC,
- 		unsigned long mask)
- {
--    EXA_GC_PROLOGUE (pGC);
-+    ExaGCPriv(pGC);
-+    swap(pExaGC, pGC, funcs);
-     (*pGC->funcs->ChangeGC) (pGC, mask);
--    EXA_GC_EPILOGUE (pGC);
-+    swap(pExaGC, pGC, funcs);
- }
- 
- static void
-@@ -622,9 +559,10 @@ exaCopyGC (GCPtr pGCSrc,
- 	      unsigned long mask,
- 	      GCPtr	 pGCDst)
- {
--    EXA_GC_PROLOGUE (pGCDst);
-+    ExaGCPriv(pGCDst);
-+    swap(pExaGC, pGCDst, funcs);
-     (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
--    EXA_GC_EPILOGUE (pGCDst);
-+    swap(pExaGC, pGCDst, funcs);
- }
- 
- static void
-@@ -633,25 +571,28 @@ exaChangeClip (GCPtr pGC,
- 		pointer pvalue,
- 		int nrects)
- {
--    EXA_GC_PROLOGUE (pGC);
-+    ExaGCPriv(pGC);
-+    swap(pExaGC, pGC, funcs);
-     (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
--    EXA_GC_EPILOGUE (pGC);
-+    swap(pExaGC, pGC, funcs);
- }
- 
- static void
- exaCopyClip(GCPtr pGCDst, GCPtr pGCSrc)
- {
--    EXA_GC_PROLOGUE (pGCDst);
-+    ExaGCPriv(pGCDst);
-+    swap(pExaGC, pGCDst, funcs);
-     (*pGCDst->funcs->CopyClip)(pGCDst, pGCSrc);
--    EXA_GC_EPILOGUE (pGCDst);
-+    swap(pExaGC, pGCDst, funcs);
- }
- 
- static void
- exaDestroyClip(GCPtr pGC)
- {
--    EXA_GC_PROLOGUE (pGC);
-+    ExaGCPriv(pGC);
-+    swap(pExaGC, pGC, funcs);
-     (*pGC->funcs->DestroyClip)(pGC);
--    EXA_GC_EPILOGUE (pGC);
-+    swap(pExaGC, pGC, funcs);
- }
- 
- /**
-@@ -682,18 +623,6 @@ exaChangeWindowAttributes(WindowPtr pWin, unsigned long mask)
-     Bool ret;
-     ScreenPtr pScreen = pWin->drawable.pScreen;
-     ExaScreenPriv(pScreen);
--    CreatePixmapProcPtr old_ptr = NULL;
--    DestroyPixmapProcPtr old_ptr2 = NULL;
--
--    /* save the "fb" pointer. */
--    old_ptr = pExaScr->SavedCreatePixmap;
--    /* create a new upper layer pointer. */
--    wrap(pExaScr, pScreen, CreatePixmap, exaCreatePixmapWithPrepare);
--
--    /* save the "fb" pointer. */
--    old_ptr2 = pExaScr->SavedDestroyPixmap;
--    /* create a new upper layer pointer. */
--    wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmapWithFinish);
- 
-     if ((mask & CWBackPixmap) && pWin->backgroundState == BackgroundPixmap) 
- 	exaPrepareAccess(&pWin->background.pixmap->drawable, EXA_PREPARE_SRC);
-@@ -701,25 +630,17 @@ exaChangeWindowAttributes(WindowPtr pWin, unsigned long mask)
-     if ((mask & CWBorderPixmap) && pWin->borderIsPixel == FALSE)
- 	exaPrepareAccess(&pWin->border.pixmap->drawable, EXA_PREPARE_MASK);
- 
-+    pExaScr->fallback_counter++;
-     swap(pExaScr, pScreen, ChangeWindowAttributes);
-     ret = pScreen->ChangeWindowAttributes(pWin, mask);
-     swap(pExaScr, pScreen, ChangeWindowAttributes);
-+    pExaScr->fallback_counter--;
- 
-     if ((mask & CWBackPixmap) && pWin->backgroundState == BackgroundPixmap) 
- 	exaFinishAccess(&pWin->background.pixmap->drawable, EXA_PREPARE_SRC);
-     if ((mask & CWBorderPixmap) && pWin->borderIsPixel == FALSE)
- 	exaFinishAccess(&pWin->border.pixmap->drawable, EXA_PREPARE_MASK);
- 
--    /* switch back to the normal upper layer. */
--    unwrap(pExaScr, pScreen, CreatePixmap);
--    /* restore copy of fb layer pointer. */
--    pExaScr->SavedCreatePixmap = old_ptr;
--
--    /* switch back to the normal upper layer. */
--    unwrap(pExaScr, pScreen, DestroyPixmap);
--    /* restore copy of fb layer pointer. */
--    pExaScr->SavedDestroyPixmap = old_ptr2;
--
-     return ret;
- }
- 
-diff --git a/exa/exa_accel.c b/exa/exa_accel.c
-index 7e2dd70..4f94ae8 100644
---- a/exa/exa_accel.c
-+++ b/exa/exa_accel.c
-@@ -51,7 +51,8 @@ exaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n,
-     int		    partX1, partX2;
-     int		    off_x, off_y;
- 
--    if (pExaScr->swappedOut ||
-+    if (pExaScr->fallback_counter ||
-+	pExaScr->swappedOut ||
- 	pGC->fillStyle != FillSolid ||
- 	pExaPixmap->accel_blocked)
-     {
-@@ -153,7 +154,7 @@ exaDoPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
-     int bpp = pDrawable->bitsPerPixel;
-     Bool ret = TRUE;
- 
--    if (pExaPixmap->accel_blocked || !pExaScr->info->UploadToScreen)
-+    if (pExaScr->fallback_counter || pExaPixmap->accel_blocked || !pExaScr->info->UploadToScreen)
- 	return FALSE;
- 
-     /* Don't bother with under 8bpp, XYPixmaps. */
-@@ -568,7 +569,8 @@ exaCopyNtoN (DrawablePtr    pSrcDrawable,
- {
-     ExaScreenPriv(pDstDrawable->pScreen);
- 
--    if (pExaScr->fallback_flags & EXA_FALLBACK_COPYWINDOW)
-+    if (pExaScr->fallback_counter ||
-+	    (pExaScr->fallback_flags & EXA_FALLBACK_COPYWINDOW))
- 	return;
- 
-     if (exaHWCopyNtoN(pSrcDrawable, pDstDrawable, pGC, pbox, nbox, dx, dy, reverse, upsidedown))
-@@ -590,7 +592,7 @@ exaCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC,
- {
-     ExaScreenPriv (pDstDrawable->pScreen);
- 
--    if (pExaScr->swappedOut) {
-+    if (pExaScr->fallback_counter || pExaScr->swappedOut) {
-         return  ExaCheckCopyArea(pSrcDrawable, pDstDrawable, pGC,
-                                  srcx, srcy, width, height, dstx, dsty);
-     }
-@@ -604,13 +606,14 @@ static void
- exaPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
- 	     DDXPointPtr ppt)
- {
-+    ExaScreenPriv (pDrawable->pScreen);
-     int i;
-     xRectangle *prect;
- 
-     /* If we can't reuse the current GC as is, don't bother accelerating the
-      * points.
-      */
--    if (pGC->fillStyle != FillSolid) {
-+    if (pExaScr->fallback_counter || pGC->fillStyle != FillSolid) {
- 	ExaCheckPolyPoint(pDrawable, pGC, mode, npt, ppt);
- 	return;
-     }
-@@ -639,10 +642,16 @@ static void
- exaPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
- 	     DDXPointPtr ppt)
- {
-+    ExaScreenPriv (pDrawable->pScreen);
-     xRectangle *prect;
-     int x1, x2, y1, y2;
-     int i;
- 
-+    if (pExaScr->fallback_counter) {
-+	ExaCheckPolylines(pDrawable, pGC, mode, npt, ppt);
-+	return;
-+    }
-+
-     /* Don't try to do wide lines or non-solid fill style. */
-     if (pGC->lineWidth != 0 || pGC->lineStyle != LineSolid ||
- 	pGC->fillStyle != FillSolid) {
-@@ -700,12 +709,13 @@ static void
- exaPolySegment (DrawablePtr pDrawable, GCPtr pGC, int nseg,
- 		xSegment *pSeg)
- {
-+    ExaScreenPriv (pDrawable->pScreen);
-     xRectangle *prect;
-     int i;
- 
-     /* Don't try to do wide lines or non-solid fill style. */
--    if (pGC->lineWidth != 0 || pGC->lineStyle != LineSolid ||
--	pGC->fillStyle != FillSolid)
-+    if (pExaScr->fallback_counter || pGC->lineWidth != 0 ||
-+	pGC->lineStyle != LineSolid || pGC->fillStyle != FillSolid)
-     {
- 	ExaCheckPolySegment(pDrawable, pGC, nseg, pSeg);
- 	return;
-@@ -782,7 +792,8 @@ exaPolyFillRect(DrawablePtr pDrawable,
- 
-     exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff);
- 
--    if (pExaScr->swappedOut || pExaPixmap->accel_blocked)
-+    if (pExaScr->fallback_counter || pExaScr->swappedOut ||
-+	    pExaPixmap->accel_blocked)
-     {
- 	goto fallback;
-     }
-@@ -956,12 +967,18 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
- 			  -pPixmap->screen_x, -pPixmap->screen_y);
- #endif
- 
-+    if (pExaScr->fallback_counter) {
-+	pExaScr->fallback_flags |= EXA_FALLBACK_COPYWINDOW;
-+	goto fallback;
-+    }
-+
-     pExaScr->fallback_flags |= EXA_ACCEL_COPYWINDOW;
-     miCopyRegion (&pPixmap->drawable, &pPixmap->drawable,
- 		  NULL,
- 		  &rgnDst, dx, dy, exaCopyNtoN, 0, NULL);
-     pExaScr->fallback_flags &= ~EXA_ACCEL_COPYWINDOW;
- 
-+fallback:
-     REGION_UNINIT(pWin->drawable.pScreen, &rgnDst);
- 
-     if (pExaScr->fallback_flags & EXA_FALLBACK_COPYWINDOW) {
-@@ -984,7 +1001,7 @@ exaFillRegionSolid (DrawablePtr	pDrawable, RegionPtr pRegion, Pixel pixel,
-     exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff);
-     REGION_TRANSLATE(pScreen, pRegion, xoff, yoff);
- 
--    if (pExaPixmap->accel_blocked)
-+    if (pExaScr->fallback_counter || pExaPixmap->accel_blocked)
- 	goto out;
- 
-     if (pExaScr->do_migration) {
-@@ -1080,7 +1097,8 @@ exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
-     pPixmap = exaGetDrawablePixmap (pDrawable);
-     pExaPixmap = ExaGetPixmapPriv (pPixmap);
- 
--    if (pExaPixmap->accel_blocked || pTileExaPixmap->accel_blocked)
-+    if (pExaScr->fallback_counter || pExaPixmap->accel_blocked ||
-+	    pTileExaPixmap->accel_blocked)
- 	return FALSE;
- 
-     if (pExaScr->do_migration) {
-@@ -1238,7 +1256,7 @@ exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
-     int xoff, yoff;
-     Bool ok;
- 
--    if (pExaScr->swappedOut)
-+    if (pExaScr->fallback_counter || pExaScr->swappedOut)
- 	goto fallback;
- 
-     exaGetDrawableDeltas (pDrawable, pPix, &xoff, &yoff);
-diff --git a/exa/exa_classic.c b/exa/exa_classic.c
-index 1eff570..12f3987 100644
---- a/exa/exa_classic.c
-+++ b/exa/exa_classic.c
-@@ -137,6 +137,10 @@ exaCreatePixmap_classic(ScreenPtr pScreen, int w, int h, int depth,
-     exaSetAccelBlock(pExaScr, pExaPixmap,
-                      w, h, bpp);
- 
-+    /* During a fallback we must prepare access. */
-+    if (pExaScr->fallback_counter)
-+	exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_AUX_DEST);
-+
-     return pPixmap;
- }
- 
-@@ -216,6 +220,10 @@ exaDestroyPixmap_classic (PixmapPtr pPixmap)
-     {
- 	ExaPixmapPriv (pPixmap);
- 
-+	/* During a fallback we must finish access, but we don't know the index. */
-+	if (pExaScr->fallback_counter)
-+	    exaFinishAccess(&pPixmap->drawable, -1);
-+
- 	if (pExaPixmap->area)
- 	{
- 	    DBG_PIXMAP(("-- 0x%p (0x%x) (%dx%d)\n",
-diff --git a/exa/exa_driver.c b/exa/exa_driver.c
-index a9165a1..f55c300 100644
---- a/exa/exa_driver.c
-+++ b/exa/exa_driver.c
-@@ -115,6 +115,10 @@ exaCreatePixmap_driver(ScreenPtr pScreen, int w, int h, int depth,
-     exaSetAccelBlock(pExaScr, pExaPixmap,
-                      w, h, bpp);
- 
-+    /* During a fallback we must prepare access. */
-+    if (pExaScr->fallback_counter)
-+	exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_AUX_DEST);
-+
-     return pPixmap;
- }
- 
-@@ -187,6 +191,10 @@ exaDestroyPixmap_driver (PixmapPtr pPixmap)
-     {
- 	ExaPixmapPriv (pPixmap);
- 
-+	/* During a fallback we must finish access, but we don't know the index. */
-+	if (pExaScr->fallback_counter)
-+	    exaFinishAccess(&pPixmap->drawable, -1);
-+
- 	if (pExaPixmap->driverPriv)
- 	    pExaScr->info->DestroyPixmap(pScreen, pExaPixmap->driverPriv);
- 	pExaPixmap->driverPriv = NULL;
-diff --git a/exa/exa_mixed.c b/exa/exa_mixed.c
-index ff02f27..47adad7 100644
---- a/exa/exa_mixed.c
-+++ b/exa/exa_mixed.c
-@@ -97,6 +97,10 @@ exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
-     } else
- 	pExaPixmap->offscreen = FALSE;
- 
-+    /* During a fallback we must prepare access. */
-+    if (pExaScr->fallback_counter)
-+	exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_AUX_DEST);
-+
-     return pPixmap;
- }
- 
-@@ -188,6 +192,10 @@ exaDestroyPixmap_mixed(PixmapPtr pPixmap)
-     {
- 	ExaPixmapPriv (pPixmap);
- 
-+	/* During a fallback we must finish access, but we don't know the index. */
-+	if (pExaScr->fallback_counter)
-+	    exaFinishAccess(&pPixmap->drawable, -1);
-+
- 	if (pExaPixmap->driverPriv)
- 	    pExaScr->info->DestroyPixmap(pScreen, pExaPixmap->driverPriv);
- 	pExaPixmap->driverPriv = NULL;
-diff --git a/exa/exa_priv.h b/exa/exa_priv.h
-index 1aec8e9..7d035d4 100644
---- a/exa/exa_priv.h
-+++ b/exa/exa_priv.h
-@@ -197,6 +197,7 @@ typedef struct {
- 
-     /* Holds information on fallbacks that cannot be relayed otherwise. */
-     unsigned int fallback_flags;
-+    unsigned int fallback_counter;
- 
-     ExaGlyphCacheRec             glyphCaches[EXA_NUM_GLYPH_CACHES];
- } ExaScreenPrivRec, *ExaScreenPrivPtr;
-@@ -240,13 +241,21 @@ extern DevPrivateKey exaGCPrivateKey;
-     real->mem = tmp; \
- }
- 
--#define EXA_GC_PROLOGUE(_gc_) \
-+#define EXA_PRE_FALLBACK(_screen_) \
-+    ExaScreenPriv(_screen_); \
-+    pExaScr->fallback_counter++;
-+
-+#define EXA_POST_FALLBACK(_screen_) \
-+    pExaScr->fallback_counter--;
-+
-+#define EXA_PRE_FALLBACK_GC(_gc_) \
-+    ExaScreenPriv(_gc_->pScreen); \
-     ExaGCPriv(_gc_); \
--    swap(pExaGC, _gc_, funcs); \
-+    pExaScr->fallback_counter++; \
-     swap(pExaGC, _gc_, ops);
- 
--#define EXA_GC_EPILOGUE(_gc_) \
--    swap(pExaGC, _gc_, funcs); \
-+#define EXA_POST_FALLBACK_GC(_gc_) \
-+    pExaScr->fallback_counter--; \
-     swap(pExaGC, _gc_, ops);
- 


Reply to: