ChangeLog                                                                    | 
 134 ++++++
 Xext/shm.c                                                                   | 
  94 +---
 Xext/shmint.h                                                                | 
   3 
 Xext/xevie.c                                                                 | 
  31 +
 Xext/xselinux.c                                                              | 
  21 
 configure.ac                                                                 | 
   8 
 debian/changelog                                                             | 
  10 
 debian/patches/50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch | 
  31 -
 debian/patches/series                                                        | 
   1 
 debian/videoabiver                                                           | 
   2 
 dix/dispatch.c                                                               | 
   2 
 doc/Xserver.man.pre                                                          | 
   2 
 exa/exa.c                                                                    | 
   7 
 exa/exa_accel.c                                                              | 
  92 ----
 exa/exa_priv.h                                                               | 
   9 
 glx/glxdriswrast.c                                                           | 
   2 
 glx/glxext.c                                                                 | 
  37 +
 hw/xfree86/ddc/print_edid.c                                                  | 
   3 
 hw/xfree86/doc/man/Xorg.man.pre                                              | 
   2 
 hw/xfree86/modes/xf86Crtc.c                                                  | 
   2 
 hw/xfree86/xaa/xaaFillPoly.c                                                 | 
   8 
 mi/miexpose.c                                                                | 
   4 
 randr/rrcrtc.c                                                               | 
  11 
 randr/rrproperty.c                                                           | 
  58 ++
 randr/rrsdispatch.c                                                          | 
 215 +++++++---
 25 files changed, 467 insertions(+), 322 deletions(-)

New commits:
commit 0dc817c9892cdd50884617d1144c35c5626f052a
Author: Julien Cristau <[EMAIL PROTECTED]>
Date:   Thu Sep 4 02:06:08 2008 +0200

    Prepare changelog for upload

diff --git a/debian/changelog b/debian/changelog
index 35a4edd..693c505 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.5.0-1) UNRELEASED; urgency=low
+xorg-server (2:1.5.0-1) experimental; urgency=low
 
   * New upstream release.
   * Kill patch 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch,
@@ -6,7 +6,7 @@ xorg-server (2:1.5.0-1) UNRELEASED; urgency=low
   * Bump videoabiver to 4 to match ABI_VIDEODRV_VERSION.  Yes, that means
     rebuilding video drivers; sorry about that.
 
- -- Julien Cristau <[EMAIL PROTECTED]>  Thu, 04 Sep 2008 01:43:18 +0200
+ -- Julien Cristau <[EMAIL PROTECTED]>  Thu, 04 Sep 2008 02:05:47 +0200
 
 xorg-server (2:1.4.99.906-2) experimental; urgency=low
 

commit ba41f133c155084db9cebc29ed2c5e8a27b1933b
Author: Julien Cristau <[EMAIL PROTECTED]>
Date:   Thu Sep 4 02:00:22 2008 +0200

    Bump videoabiver to 4 to match ABI_VIDEODRV_VERSION.
    
    Yes, that means rebuilding video drivers; sorry about that.

diff --git a/debian/changelog b/debian/changelog
index bba7ab1..35a4edd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,8 @@ xorg-server (2:1.5.0-1) UNRELEASED; urgency=low
   * New upstream release.
   * Kill patch 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch,
     1.2 requests are properly swapped now.
+  * Bump videoabiver to 4 to match ABI_VIDEODRV_VERSION.  Yes, that means
+    rebuilding video drivers; sorry about that.
 
  -- Julien Cristau <[EMAIL PROTECTED]>  Thu, 04 Sep 2008 01:43:18 +0200
 
diff --git a/debian/videoabiver b/debian/videoabiver
index 8c26915..b8626c4 100644
--- a/debian/videoabiver
+++ b/debian/videoabiver
@@ -1 +1 @@
-2.9
+4

commit 76009338832ec651e82b23fbb7d886d8c8a8ed7d
Author: Julien Cristau <[EMAIL PROTECTED]>
Date:   Thu Sep 4 01:47:00 2008 +0200

    New upstream release.
    
    Update changelogs.
    Kill patch 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch,
    1.2 requests are properly swapped now.

diff --git a/ChangeLog b/ChangeLog
index 17f76f7..9f9199d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,137 @@
+commit 05fb2f9e1249d0b91bf4318cec4fb309217adff4
+Author: Adam Jackson <[EMAIL PROTECTED]>
+Date:   Wed Sep 3 19:14:22 2008 -0400
+
+    xserver 1.5.0
+    
+    Drinkin' island is inside each of us, my son.
+
+commit f385303cd0242e3a7fded15f8b5c3d610c13ee41
+Author: Adam Jackson <[EMAIL PROTECTED]>
+Date:   Tue Sep 2 15:43:15 2008 -0400
+
+    Fix strict-aliasing silliness in XAA.
+    (cherry picked from commit 613ce0955032fb032de0a3940752828d314f057a)
+
+commit 6cb7f595b97e9442a79660bc639b2fc91842e19a
+Author: Adam Jackson <[EMAIL PROTECTED]>
+Date:   Wed Sep 3 14:59:24 2008 -0400
+
+    Disable DRI2 by default.
+
+commit ed2248f673ed8993e678818c388203346a3614e0
+Author: Adam Jackson <[EMAIL PROTECTED]>
+Date:   Wed Sep 3 14:58:43 2008 -0400
+
+    Disable XTrap build by default.
+
+commit 9bb4990c917cc512d39b5889e7bcecb5cfcbeb56
+Author: Julien Cristau <[EMAIL PROTECTED]>
+Date:   Mon Sep 1 19:45:30 2008 +0200
+
+    Xevie: swap replies as necessary
+    (cherry picked from commit b5cdcfa55c399e83d51242e93d4f25d8bc4fec1f)
+
+commit bcea1095da2d29f5812bd1adabac334cfca60355
+Author: Thorvald Natvig <[EMAIL PROTECTED]>
+Date:   Mon Sep 1 19:36:56 2008 +0200
+
+    Xevie: always initialize rep.length (bug#17394)
+    
+    The XEvIE extension doesn't clear the rep.length field for any reply but
+    the version check. Hence, if there is junk data in it and that is sent
+    to the client, it hangs.
+    
+    X.Org bug#17394 (http://bugs.freedesktop.org/show_bug.cgi?id=17394)
+    (cherry picked from commit d3ae193f4ac87530f2745f8cb5e7b70dd516881e)
+
+commit 67ed1f23fe29affe14587fbb809d0e95197db78b
+Author: Julien Cristau <[EMAIL PROTECTED]>
+Date:   Thu Aug 21 01:32:03 2008 +0200
+
+    Add swapped dispatch for randr 1.2 requests
+    (cherry picked from commit 01264f17925005969c3b71ca945fc1014bcd8c8e)
+
+commit 62524d9d7648cfd9e2d7d6a3312ff20722d7f6a5
+Author: Thomas Bodzar <[EMAIL PROTECTED]>
+Date:   Sat Aug 30 15:34:29 2008 +0200
+
+    Xorg.man: typo (the the).
+    (cherry picked from commit 229e60db8f95232afc8cdcb7cd0572d117c84b90)
+
+commit 57fa9fd4a59be14f4c77c3dac501ef40ff656752
+Author: Matthieu Herrb <[EMAIL PROTECTED]>
+Date:   Sat Aug 30 15:35:32 2008 +0200
+
+    Xserver.man: Typo (the the).
+    (cherry picked from commit d01c5ca7935a8340a3cd68c325da6dfec005c952)
+
+commit 7f42ed6ca938d0dee66bdfd6237b6632a4f7ab0d
+Author: Daniel Drake <[EMAIL PROTECTED]>
+Date:   Tue Sep 2 16:20:40 2008 -0400
+
+    Don't try to destroy a NULL pixmap.
+    (cherry picked from commit 4e1f9f51a9eea115ce2a073824e9c5cef4e2f364)
+
+commit 48744d20b1d23b731604db10dda85a10f62664dc
+Author: Maarten Maathuis <[EMAIL PROTECTED]>
+Date:   Sun Aug 31 18:07:22 2008 +0200
+
+    xf86Crtc: Set mode to NULL, so nothing bad happens if crtc == NULL.
+    
+    - Fix is courtesy of math_b.
+
+commit 580e96d6d4355acae6314105a3a8e4c7a4d6e3ea
+Author: Xavier Bestel <[EMAIL PROTECTED]>
+Date:   Tue Jul 29 13:06:10 2008 -0400
+
+    Cosmetic fix to EDID decoding.
+    (cherry picked from commit bb2cacd33eb85f39b9e7fa554545611957df677d)
+
+commit d0ef93430505d110e0d3c0552dad3361db33b369
+Author: Fredrik Höglund <[EMAIL PROTECTED]>
+Date:   Mon Aug 18 19:27:34 2008 +0200
+
+    Fix the tile offset in miPaintWindow for ParentRelative windows.
+    (cherry picked from commit 244a635fcdc9e0a7212d51b26d74f49d8e1b071f)
+
+commit 05472534cfefe6057b908cc7d698967eecb5dde4
+Author: Daniel Drake <[EMAIL PROTECTED]>
+Date:   Thu Jul 24 21:06:34 2008 -0500
+
+    Don't abort if swrast library is not present
+    
+    GLX is enabled by default, but the current swrast behaviour causes X
+    to abort with fatal error if the swrast dri library dlopen fails.
+    
+    Handle the case where the swrast library is not present, and do not
+    register the GLX extension unless at least one screen has a usable
+    GL provider.
+    (cherry picked from commit eff25430b4a391409e39337962ff7697165d23c7)
+
+commit 4652c51e92ab21df020f83be3dc1ca1c897f6cf9
+Author: Adam Jackson <[EMAIL PROTECTED]>
+Date:   Wed Aug 27 16:05:47 2008 -0400
+
+    Reimplement ShmPutImage.
+    
+    There's no reason to not just dispatch this straight into the GC.  As a
+    bonus, if you do so, damage wraps correctly, and thus swcursor works.
+    The side effect is it's no longer possible to override ShmPutImage with
+    ShmRegisterFuncs().
+    
+    Also remove the (broken) damage tracking for same from EXA, since it didn't
+    work right, and is now superfluous.
+    
+    (cherry picked from commit ee7c684f21d220d5e046bab31ae617a7d64d60f6)
+
+commit ef0780b7384b1d8257698b07091dd5214d64c4c1
+Author: Eamon Walsh <[EMAIL PROTECTED]>
+Date:   Thu Aug 28 23:45:17 2008 -0400
+
+    Attempt getpeercon() on remote sockets as well as local ones.
+    (cherry picked from commit 60ad8d5d05485339e89d7f1f9f1ded75de7c7ea1)
+
 commit 78f50cd5758d778a5b01aa607c04919b69a5a47f
 Author: Kristian Høgsberg <[EMAIL PROTECTED]>
 Date:   Tue Aug 26 10:58:35 2008 -0400
diff --git a/debian/changelog b/debian/changelog
index 1416643..bba7ab1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xorg-server (2:1.5.0-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+  * Kill patch 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch,
+    1.2 requests are properly swapped now.
+
+ -- Julien Cristau <[EMAIL PROTECTED]>  Thu, 04 Sep 2008 01:43:18 +0200
+
 xorg-server (2:1.4.99.906-2) experimental; urgency=low
 
   * Pull from server-1.5-branch as of Aug 27th
diff --git 
a/debian/patches/50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch 
b/debian/patches/50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch
deleted file mode 100644
index d2b76e9..0000000
--- 
a/debian/patches/50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 40090eca032d602c78223abaa13ca4702db86b74 Mon Sep 17 00:00:00 2001
-From: Julien Cristau <[EMAIL PROTECTED]>
-Date: Sun, 24 Aug 2008 17:44:10 +0200
-Subject: [PATCH] Make RandRQueryVersion return 1.1 for swapped clients
-
-Don't pretend we support randr 1.2 when queried by swapped clients.
-The dispatch code for RandR 1.2 requests would return BadImplementation
-anyway.
----
- randr/rrdispatch.c |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c
-index 5525427..83deb6b 100644
---- a/randr/rrdispatch.c
-+++ b/randr/rrdispatch.c
-@@ -55,6 +55,11 @@ ProcRRQueryVersion (ClientPtr client)
-     rep.majorVersion = SERVER_RANDR_MAJOR;
-     rep.minorVersion = SERVER_RANDR_MINOR;
-     if (client->swapped) {
-+      /*
-+       * We return BadImplementation for swapped clients on 1.2 requests,
-+       * let's not do that
-+       */
-+      rep.minorVersion = 1;
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swapl(&rep.majorVersion, n);
--- 
-1.5.6.3
-
diff --git a/debian/patches/series b/debian/patches/series
index 921214e..93fe4ab 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,3 @@
 001_fedora_extramodes.patch
 #06_use_proc_instead_of_sysfs_for_pci_domains.diff
 13_debian_add_xkbpath_env_variable.diff
-50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch

commit 05fb2f9e1249d0b91bf4318cec4fb309217adff4
Author: Adam Jackson <[EMAIL PROTECTED]>
Date:   Wed Sep 3 19:14:22 2008 -0400

    xserver 1.5.0
    
    Drinkin' island is inside each of us, my son.

diff --git a/configure.ac b/configure.ac
index 6a0876b..0262274 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,8 +26,8 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-RELEASE_DATE="23 July 2008"
-AC_INIT([xorg-server], 1.4.99.906, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="3 September 2008"
+AC_INIT([xorg-server], 1.5.0, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([dist-bzip2 foreign])
 AM_MAINTAINER_MODE

commit f385303cd0242e3a7fded15f8b5c3d610c13ee41
Author: Adam Jackson <[EMAIL PROTECTED]>
Date:   Tue Sep 2 15:43:15 2008 -0400

    Fix strict-aliasing silliness in XAA.
    (cherry picked from commit 613ce0955032fb032de0a3940752828d314f057a)

diff --git a/hw/xfree86/xaa/xaaFillPoly.c b/hw/xfree86/xaa/xaaFillPoly.c
index 23c2781..6f11e35 100644
--- a/hw/xfree86/xaa/xaaFillPoly.c
+++ b/hw/xfree86/xaa/xaaFillPoly.c
@@ -131,8 +131,8 @@ XAAIsEasyPolygon(
     *bottomY = 0;
 
     origin -= (origin & 0x8000) << 1;
-    vertex1 = *((int *) &extents->x1) - origin;
-    vertex2 = *((int *) &extents->x2) - origin /* - 0x00010001 */;
+    vertex1 = extents->x1 - origin;
+    vertex2 = extents->x2 - origin /* - 0x00010001 */;
                      /* I think this was an error in cfb ^ */
 
     if (shape == Convex) {
@@ -714,7 +714,7 @@ XAAFillPolygonStippled(
        return;
     }
 
-    origin = *((int *)&pDraw->x);
+    origin = pDraw->x;
 
     switch( XAAIsEasyPolygon(ptsIn, count, &pGC->pCompositeClip->extents,
                 origin, &topPoint, &y, &maxy, shape) ) {
@@ -867,7 +867,7 @@ XAAFillPolygonTiled(
        return;
     }
 
-    origin = *((int *)&pDraw->x);
+    origin = pDraw->x;
 
     switch( XAAIsEasyPolygon(ptsIn, count, &pGC->pCompositeClip->extents,
                 origin, &topPoint, &y, &maxy, shape) ) {

commit 6cb7f595b97e9442a79660bc639b2fc91842e19a
Author: Adam Jackson <[EMAIL PROTECTED]>
Date:   Wed Sep 3 14:59:24 2008 -0400

    Disable DRI2 by default.

diff --git a/configure.ac b/configure.ac
index d324bd5..6a0876b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -536,7 +536,7 @@ AC_ARG_ENABLE(xdmcp,          
AS_HELP_STRING([--disable-xdmcp], [Build XDMCP ext
 AC_ARG_ENABLE(xdm-auth-1,     AS_HELP_STRING([--disable-xdm-auth-1], [Build 
XDM-Auth-1 extension (default: auto)]), [XDMAUTH=$enableval], [XDMAUTH=auto])
 AC_ARG_ENABLE(glx,            AS_HELP_STRING([--disable-glx], [Build GLX 
extension (default: enabled)]), [GLX=$enableval], [GLX=yes])
 AC_ARG_ENABLE(dri,            AS_HELP_STRING([--enable-dri], [Build DRI 
extension (default: auto)]), [DRI=$enableval])
-AC_ARG_ENABLE(dri2,           AS_HELP_STRING([--enable-dri2], [Build DRI2 
extension (default: auto)]), [DRI2=$enableval])
+AC_ARG_ENABLE(dri2,           AS_HELP_STRING([--enable-dri2], [Build DRI2 
extension (default: no)]), [DRI2=$enableval], [DRI2=no])
 AC_ARG_ENABLE(xinerama,              AS_HELP_STRING([--disable-xinerama], 
[Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], 
[XINERAMA=yes])
 AC_ARG_ENABLE(xf86vidmode,    AS_HELP_STRING([--disable-xf86vidmode], [Build 
XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], 
[XF86VIDMODE=auto])
 AC_ARG_ENABLE(xf86misc,       AS_HELP_STRING([--disable-xf86misc], [Build 
XF86Misc extension (default: auto)]), [XF86MISC=$enableval], [XF86MISC=auto])

commit ed2248f673ed8993e678818c388203346a3614e0
Author: Adam Jackson <[EMAIL PROTECTED]>
Date:   Wed Sep 3 14:58:43 2008 -0400

    Disable XTrap build by default.

diff --git a/configure.ac b/configure.ac
index efef454..d324bd5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -526,7 +526,7 @@ AC_ARG_ENABLE(registry,       
AS_HELP_STRING([--disable-registry], [Build string
 AC_ARG_ENABLE(composite,      AS_HELP_STRING([--disable-composite], [Build 
Composite extension (default: enabled)]), [COMPOSITE=$enableval], 
[COMPOSITE=yes])
 AC_ARG_ENABLE(mitshm,         AS_HELP_STRING([--disable-shm], [Build SHM 
extension (default: enabled)]), [MITSHM=$enableval], [MITSHM=yes])
 AC_ARG_ENABLE(xres,           AS_HELP_STRING([--disable-xres], [Build XRes 
extension (default: enabled)]), [RES=$enableval], [RES=yes])
-AC_ARG_ENABLE(xtrap,          AS_HELP_STRING([--disable-xtrap], [Build XTrap 
extension (default: enabled)]), [XTRAP=$enableval], [XTRAP=yes])
+AC_ARG_ENABLE(xtrap,          AS_HELP_STRING([--enable-xtrap], [Build XTrap 
extension (default: no)]), [XTRAP=$enableval], [XTRAP=no])
 AC_ARG_ENABLE(record,         AS_HELP_STRING([--disable-record], [Build Record 
extension (default: disabled)]), [RECORD=$enableval], [RECORD=no])
 AC_ARG_ENABLE(xv,             AS_HELP_STRING([--disable-xv], [Build Xv 
extension (default: enabled)]), [XV=$enableval], [XV=yes])
 AC_ARG_ENABLE(xvmc,           AS_HELP_STRING([--disable-xvmc], [Build XvMC 
extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes])

commit 9bb4990c917cc512d39b5889e7bcecb5cfcbeb56
Author: Julien Cristau <[EMAIL PROTECTED]>
Date:   Mon Sep 1 19:45:30 2008 +0200

    Xevie: swap replies as necessary
    (cherry picked from commit b5cdcfa55c399e83d51242e93d4f25d8bc4fec1f)

diff --git a/Xext/xevie.c b/Xext/xevie.c
index 3fbe04d..1d51fd8 100644
--- a/Xext/xevie.c
+++ b/Xext/xevie.c
@@ -156,6 +156,7 @@ static
 int ProcXevieQueryVersion (register ClientPtr client)
 {
     xXevieQueryVersionReply rep;
+    int n;
 
     REQUEST_SIZE_MATCH (xXevieQueryVersionReq);
     rep.type = X_Reply;
@@ -163,6 +164,12 @@ int ProcXevieQueryVersion (register ClientPtr client)
     rep.sequence_number = client->sequence;
     rep.server_major_version = XEVIE_MAJOR_VERSION;
     rep.server_minor_version = XEVIE_MINOR_VERSION;
+    if (client->swapped) {
+       swaps(&rep.sequence_number, n);
+       swapl(&rep.length, n);
+       swaps(&rep.server_major_version, n);
+       swaps(&rep.server_minor_version, n);
+    }
     WriteToClient (client, sizeof (xXevieQueryVersionReply), (char *)&rep);
     return client->noClientException;
 }
@@ -171,6 +178,7 @@ static
 int ProcXevieStart (register ClientPtr client)
 {
     xXevieStartReply rep;
+    int n;
 
     REQUEST_SIZE_MATCH (xXevieStartReq);
     rep.pad1 = 0;
@@ -205,6 +213,10 @@ int ProcXevieStart (register ClientPtr client)
     rep.length = 0;
     rep.type = X_Reply;
     rep.sequence_number = client->sequence;
+    if (client->swapped) {
+       swaps(&rep.sequence_number, n);
+       swapl(&rep.length, n);
+    }
     WriteToClient (client, sizeof (xXevieStartReply), (char *)&rep);
     return client->noClientException;
 }
@@ -213,6 +225,7 @@ static
 int ProcXevieEnd (register ClientPtr client)
 {
     xXevieEndReply rep;
+    int n;
 
     REQUEST_SIZE_MATCH (xXevieEndReq);
     
@@ -227,6 +240,10 @@ int ProcXevieEnd (register ClientPtr client)
     rep.length = 0;
     rep.type = X_Reply;
     rep.sequence_number = client->sequence;
+    if (client->swapped) {
+       swaps(&rep.sequence_number, n);
+       swapl(&rep.length, n);
+    }
     WriteToClient (client, sizeof (xXevieEndReply), (char *)&rep);
     return client->noClientException;
 }
@@ -238,6 +255,7 @@ int ProcXevieSend (register ClientPtr client)
     xXevieSendReply rep;
     xEvent *xE;
     static unsigned char lastDetail = 0, lastType = 0;
+    int n;
 
     REQUEST_SIZE_MATCH (xXevieSendReq);
     
@@ -248,6 +266,10 @@ int ProcXevieSend (register ClientPtr client)
     rep.length = 0;
     rep.type = X_Reply;
     rep.sequence_number = client->sequence;
+    if (client->swapped) {
+       swaps(&rep.sequence_number, n);
+       swapl(&rep.length, n);
+    }
     WriteToClient (client, sizeof (xXevieSendReply), (char *)&rep);
 
     switch(xE->u.u.type) {
@@ -285,6 +307,7 @@ int ProcXevieSelectInput (register ClientPtr client)
 {
     REQUEST (xXevieSelectInputReq);
     xXevieSelectInputReply rep;
+    int n;
 
     REQUEST_SIZE_MATCH (xXevieSelectInputReq);
 
@@ -295,6 +318,10 @@ int ProcXevieSelectInput (register ClientPtr client)
     rep.length = 0;
     rep.type = X_Reply;
     rep.sequence_number = client->sequence;
+    if (client->swapped) {
+       swaps(&rep.sequence_number, n);
+       swapl(&rep.length, n);
+    }
     WriteToClient (client, sizeof (xXevieSelectInputReply), (char *)&rep);
     return client->noClientException;
 }

commit bcea1095da2d29f5812bd1adabac334cfca60355
Author: Thorvald Natvig <[EMAIL PROTECTED]>
Date:   Mon Sep 1 19:36:56 2008 +0200

    Xevie: always initialize rep.length (bug#17394)
    
    The XEvIE extension doesn't clear the rep.length field for any reply but
    the version check. Hence, if there is junk data in it and that is sent
    to the client, it hangs.
    
    X.Org bug#17394 (http://bugs.freedesktop.org/show_bug.cgi?id=17394)
    (cherry picked from commit d3ae193f4ac87530f2745f8cb5e7b70dd516881e)

diff --git a/Xext/xevie.c b/Xext/xevie.c
index 5e20bd9..3fbe04d 100644
--- a/Xext/xevie.c
+++ b/Xext/xevie.c
@@ -202,6 +202,7 @@ int ProcXevieStart (register ClientPtr client)
     
     xevieModifiersOn = FALSE;
 
+    rep.length = 0;
     rep.type = X_Reply;
     rep.sequence_number = client->sequence;
     WriteToClient (client, sizeof (xXevieStartReply), (char *)&rep);
@@ -223,6 +224,7 @@ int ProcXevieEnd (register ClientPtr client)
         XevieEnd(xevieClientIndex);
     }
 
+    rep.length = 0;
     rep.type = X_Reply;
     rep.sequence_number = client->sequence;
     WriteToClient (client, sizeof (xXevieEndReply), (char *)&rep);
@@ -243,6 +245,7 @@ int ProcXevieSend (register ClientPtr client)
         return BadAccess;
 
     xE = (xEvent *)&stuff->event;
+    rep.length = 0;
     rep.type = X_Reply;
     rep.sequence_number = client->sequence;
     WriteToClient (client, sizeof (xXevieSendReply), (char *)&rep);
@@ -289,6 +292,7 @@ int ProcXevieSelectInput (register ClientPtr client)
         return BadAccess;
 
     xevieMask = stuff->event_mask;
+    rep.length = 0;
     rep.type = X_Reply;
     rep.sequence_number = client->sequence;
     WriteToClient (client, sizeof (xXevieSelectInputReply), (char *)&rep);

commit 67ed1f23fe29affe14587fbb809d0e95197db78b
Author: Julien Cristau <[EMAIL PROTECTED]>
Date:   Thu Aug 21 01:32:03 2008 +0200

    Add swapped dispatch for randr 1.2 requests
    (cherry picked from commit 01264f17925005969c3b71ca945fc1014bcd8c8e)

diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 7c22437..ec65a04 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -894,6 +894,7 @@ ProcRRGetCrtcGamma (ClientPtr client)
     RRCrtcPtr                  crtc;
     int                                n;
     unsigned long              len;
+    char                       *extra;
     
     REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq);
     crtc = LookupCrtc (client, stuff->crtc, DixReadAccess);
@@ -902,6 +903,12 @@ ProcRRGetCrtcGamma (ClientPtr client)
     
     len = crtc->gammaSize * 3 * 2;
     
+    if (crtc->gammaSize) {
+       extra = xalloc(len);
+       if (!extra)
+           return BadAlloc;
+    }
+
     reply.type = X_Reply;
     reply.sequenceNumber = client->sequence;
     reply.length = (len + 3) >> 2;
@@ -914,8 +921,10 @@ ProcRRGetCrtcGamma (ClientPtr client)
     WriteToClient (client, sizeof (xRRGetCrtcGammaReply), (char *) &reply);
     if (crtc->gammaSize)
     {
+       memcpy(extra, crtc->gammaRed, len);
        client->pSwapReplyFunc = (ReplySwapPtr)CopySwap16Write;
-       WriteSwappedDataToClient (client, len, (char *) crtc->gammaRed);
+       WriteSwappedDataToClient (client, len, extra);
+       xfree(extra);
     }
     return client->noClientException;
 }
diff --git a/randr/rrproperty.c b/randr/rrproperty.c
index 4617064..429246c 100644
--- a/randr/rrproperty.c
+++ b/randr/rrproperty.c
@@ -398,12 +398,13 @@ ProcRRListOutputProperties (ClientPtr client)
        int n;
        swaps (&rep.sequenceNumber, n);
        swapl (&rep.length, n);
+       swaps (&rep.nAtoms, n);
     }
     temppAtoms = pAtoms;
     for (prop = output->properties; prop; prop = prop->next)
        *temppAtoms++ = prop->propertyName;
 
-    WriteReplyToClient(client, sizeof(xRRListOutputPropertiesReply), &rep);
+    WriteToClient(client, sizeof(xRRListOutputPropertiesReply), (char*)&rep);
     if (numProps)
     {
         client->pSwapReplyFunc = (ReplySwapPtr)Swap32Write;
@@ -420,6 +421,7 @@ ProcRRQueryOutputProperty (ClientPtr client)
     xRRQueryOutputPropertyReply            rep;
     RROutputPtr                            output;
     RRPropertyPtr                  prop;
+    char *extra;
     
     REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq);
 
@@ -432,6 +434,11 @@ ProcRRQueryOutputProperty (ClientPtr client)
     if (!prop)
        return BadName;
     
+    if (prop->num_valid) {
+       extra = xalloc(prop->num_valid * sizeof(INT32));
+       if (!extra)
+           return BadAlloc;
+    }
     rep.type = X_Reply;
     rep.length = prop->num_valid;
     rep.sequenceNumber = client->sequence;
@@ -444,12 +451,14 @@ ProcRRQueryOutputProperty (ClientPtr client)
        swaps (&rep.sequenceNumber, n);
        swapl (&rep.length, n);
     }
-    WriteReplyToClient (client, sizeof (xRRQueryOutputPropertyReply), &rep);
+    WriteToClient (client, sizeof (xRRQueryOutputPropertyReply), (char*)&rep);
     if (prop->num_valid)
     {
+        memcpy(extra, prop->valid_values, prop->num_valid * sizeof(INT32));
         client->pSwapReplyFunc = (ReplySwapPtr)Swap32Write;
         WriteSwappedDataToClient(client, prop->num_valid * sizeof(INT32),
-                                prop->valid_values);
+                                extra);
+        xfree(extra);
     }
     return(client->noClientException);
 }
@@ -564,6 +573,7 @@ ProcRRGetOutputProperty (ClientPtr client)
     unsigned long              n, len, ind;
     RROutputPtr                        output;
     xRRGetOutputPropertyReply  reply;
+    char                       *extra;
 
     REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq);
     if (stuff->delete)
@@ -603,7 +613,16 @@ ProcRRGetOutputProperty (ClientPtr client)
        reply.bytesAfter = 0;
        reply.propertyType = None;
        reply.format = 0;
-       WriteReplyToClient(client, sizeof(xRRGetOutputPropertyReply), &reply);
+       if (client->swapped) {
+           int n;
+
+           swaps(&reply.sequenceNumber, n);
+           swapl(&reply.length, n);
+           swapl(&reply.propertyType, n);
+           swapl(&reply.bytesAfter, n);
+           swapl(&reply.nItems, n);
+       }
+       WriteToClient(client, sizeof(xRRGetOutputPropertyReply), &reply);
        return(client->noClientException);
     }
 
@@ -627,7 +646,16 @@ ProcRRGetOutputProperty (ClientPtr client)
        reply.length = 0;
        reply.nItems = 0;
        reply.propertyType = prop_value->type;
-       WriteReplyToClient(client, sizeof(xRRGetOutputPropertyReply), &reply);
+       if (client->swapped) {
+           int n;
+
+           swaps(&reply.sequenceNumber, n);
+           swapl(&reply.length, n);
+           swapl(&reply.propertyType, n);
+           swapl(&reply.bytesAfter, n);
+           swapl(&reply.nItems, n);
+       }
+       WriteToClient(client, sizeof(xRRGetOutputPropertyReply), &reply);
        return(client->noClientException);
     }
 
@@ -648,6 +676,11 @@ ProcRRGetOutputProperty (ClientPtr client)
 
     len = min(n - ind, 4 * stuff->longLength);
 
+    if (len) {
+       extra = xalloc(len);
+       if (!extra)
+           return BadAlloc;
+    }
     reply.bytesAfter = n - (ind + len);
     reply.format = prop_value->format;
     reply.length = (len + 3) >> 2;
@@ -670,16 +703,27 @@ ProcRRGetOutputProperty (ClientPtr client)
        RRDeliverEvent (output->pScreen, (xEvent *) &event, 
RROutputPropertyNotifyMask);
     }
 
-    WriteReplyToClient(client, sizeof(xGenericReply), &reply);
+    if (client->swapped) {
+       int n;
+
+       swaps(&reply.sequenceNumber, n);
+       swapl(&reply.length, n);
+       swapl(&reply.propertyType, n);
+       swapl(&reply.bytesAfter, n);
+       swapl(&reply.nItems, n);
+    }
+    WriteToClient(client, sizeof(xGenericReply), &reply);
     if (len)
     {
+       memcpy(extra, (char *)prop_value->data + ind, len);
        switch (reply.format) {
        case 32: client->pSwapReplyFunc = (ReplySwapPtr)CopySwap32Write; break;
        case 16: client->pSwapReplyFunc = (ReplySwapPtr)CopySwap16Write; break;
        default: client->pSwapReplyFunc = (ReplySwapPtr)WriteToClient; break;
        }
        WriteSwappedDataToClient(client, len,
-                                (char *)prop_value->data + ind);
+                                extra);
+       xfree(extra);
     }
 
     if (stuff->delete && (reply.bytesAfter == 0))
diff --git a/randr/rrsdispatch.c b/randr/rrsdispatch.c
index 4a6a6e4..80d16b7 100644
--- a/randr/rrsdispatch.c
+++ b/randr/rrsdispatch.c
@@ -84,191 +84,284 @@ SProcRRSelectInput (ClientPtr client)
 static int
 SProcRRGetScreenSizeRange (ClientPtr client)
 {
+    int n;
     REQUEST(xRRGetScreenSizeRangeReq);
-    
+
     REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->window, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRSetScreenSize (ClientPtr client)
 {
+    int n;
     REQUEST(xRRSetScreenSizeReq);
-    
+
     REQUEST_SIZE_MATCH(xRRSetScreenSizeReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->window, n);
+    swaps(&stuff->width, n);
+    swaps(&stuff->height, n);
+    swapl(&stuff->widthInMillimeters, n);
+    swapl(&stuff->heightInMillimeters, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRGetScreenResources (ClientPtr client)
 {
+    int n;
     REQUEST(xRRGetScreenResourcesReq);
-    
+
     REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->window, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRGetOutputInfo (ClientPtr client)
 {
+    int n;
     REQUEST(xRRGetOutputInfoReq);;
-    
+
     REQUEST_SIZE_MATCH(xRRGetOutputInfoReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->output, n);
+    swapl(&stuff->configTimestamp, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRListOutputProperties (ClientPtr client)
 {
+    int n;
     REQUEST(xRRListOutputPropertiesReq);
-    
+
     REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->output, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRQueryOutputProperty (ClientPtr client)
 {
+    int n;
     REQUEST(xRRQueryOutputPropertyReq);
-    
+
     REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->output, n);
+    swapl(&stuff->property, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRConfigureOutputProperty (ClientPtr client)
 {
+    int n;
     REQUEST(xRRConfigureOutputPropertyReq);
-    
-    REQUEST_SIZE_MATCH(xRRConfigureOutputPropertyReq);
-    (void) stuff;
-    return BadImplementation; 
+
+    swaps(&stuff->length, n);
+    swapl(&stuff->output, n);
+    swapl(&stuff->property, n);
+    SwapRestL(stuff);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRChangeOutputProperty (ClientPtr client)
 {
+    int n;
     REQUEST(xRRChangeOutputPropertyReq);
-    
-    REQUEST_SIZE_MATCH(xRRChangeOutputPropertyReq);
-    (void) stuff;
-    return BadImplementation; 
+
+    REQUEST_AT_LEAST_SIZE (xRRChangeOutputPropertyReq);
+    swaps(&stuff->length, n);
+    swapl(&stuff->output, n);
+    swapl(&stuff->property, n);
+    swapl(&stuff->type, n);
+    swapl(&stuff->nUnits, n);
+    switch(stuff->format) {
+       case 8:
+           break;
+       case 16:
+           SwapRestS(stuff);
+           break;
+       case 32:
+           SwapRestL(stuff);
+           break;
+       default:
+           client->errorValue = stuff->format;
+           return BadValue;
+    }
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRDeleteOutputProperty (ClientPtr client)
 {
+    int n;
     REQUEST(xRRDeleteOutputPropertyReq);
     
     REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->output, n);
+    swapl(&stuff->property, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRGetOutputProperty (ClientPtr client)
 {
+    int n;
     REQUEST(xRRGetOutputPropertyReq);
-    
+
     REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->output, n);
+    swapl(&stuff->property, n);
+    swapl(&stuff->type, n);
+    swapl(&stuff->longOffset, n);
+    swapl(&stuff->longLength, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRCreateMode (ClientPtr client)
 {
+    int n;
+    xRRModeInfo *modeinfo;
     REQUEST(xRRCreateModeReq);
-    
-    REQUEST_SIZE_MATCH(xRRCreateModeReq);
-    (void) stuff;
-    return BadImplementation; 
+
+    REQUEST_AT_LEAST_SIZE(xRRCreateModeReq);
+    swaps(&stuff->length, n);
+    swapl(&stuff->window, n);
+
+    modeinfo = &stuff->modeInfo;
+    swapl(&modeinfo->id, n);
+    swaps(&modeinfo->width, n);
+    swaps(&modeinfo->height, n);
+    swapl(&modeinfo->dotClock, n);
+    swaps(&modeinfo->hSyncStart, n);
+    swaps(&modeinfo->hSyncEnd, n);
+    swaps(&modeinfo->hTotal, n);
+    swaps(&modeinfo->vSyncStart, n);
+    swaps(&modeinfo->vSyncEnd, n);
+    swaps(&modeinfo->vTotal, n);
+    swaps(&modeinfo->nameLength, n);
+    swapl(&modeinfo->modeFlags, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRDestroyMode (ClientPtr client)
 {
+    int n;
     REQUEST(xRRDestroyModeReq);
-    
+
     REQUEST_SIZE_MATCH(xRRDestroyModeReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->mode, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRAddOutputMode (ClientPtr client)
 {
+    int n;
     REQUEST(xRRAddOutputModeReq);
-    
+
     REQUEST_SIZE_MATCH(xRRAddOutputModeReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->output, n);
+    swapl(&stuff->mode, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRDeleteOutputMode (ClientPtr client)
 {
+    int n;
     REQUEST(xRRDeleteOutputModeReq);
-    


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to