xserver: Branch 'server-1_1-branch' - 3 commits

Adam Jackson ajax at kemper.freedesktop.org
Fri Jul 7 00:32:40 EEST 2006


 GL/glx/indirect_util.c         |    4 ++--
 hw/xfree86/common/xf86Events.c |   11 -----------
 hw/xfree86/dri/xf86dri.c       |   37 ++++++++++++++++++++++++++++++-------
 3 files changed, 32 insertions(+), 20 deletions(-)

New commits:
diff-tree f54b21cc67b588984c1d05c471f56b0f758d86f7 (from a185d70f723c26ce6250f0a9d6d9c0dd7053ad67)
Author: Adam Jackson <ajax at benzedrine.nwnk.net>
Date:   Thu Jul 6 17:31:24 2006 -0400

    Delete a (now misleading) message from the crash handler.
    (cherry picked from d00aa6b8559d3e5f70c6558ce0abd12f7d758491 commit)

diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index 44ac688..2be314f 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Events.c,v 3.159 2003/11/22 04:22:11 dawes Exp $ */
 /*
  * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
  *
@@ -48,9 +47,6 @@
  * authorization from the copyright holder(s) and author(s).
  */
 
-/* $XConsortium: xf86Events.c /main/46 1996/10/25 11:36:30 kaleb $ */
-/* $XdotOrg: xserver/xorg/hw/xfree86/common/xf86Events.c,v 1.21 2005/11/08 06:33:28 jkj Exp $ */
-
 /* [JCH-96/01/21] Extended std reverse map to four buttons. */
 
 #ifdef HAVE_XORG_CONFIG_H
@@ -1482,13 +1478,6 @@ xf86SigHandler(int signo)
 #ifdef XF86BIGFONT
   XF86BigfontCleanup();
 #endif
-#if defined(XFree86LOADER)
-  if (xf86Initialising)
-      LoaderCheckUnresolved(LD_RESOLV_IFDONE);
-  ErrorF("\n"
-	 "   *** If unresolved symbols were reported above, they might not\n"
-	 "   *** be the reason for the server aborting.\n");
-#endif
 
   xorg_backtrace();
     
diff-tree a185d70f723c26ce6250f0a9d6d9c0dd7053ad67 (from c73edbe0bc30f57c664a3a021950721cf22f2faf)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Sat Jun 24 15:02:56 2006 +0200

    Bug #7213: Fix the XFree86-DRI extension for byte-swapped clients.
    
    These clients are by definition non-local and thus not direct rendering
    capable, but they still need the QueryVersion and QueryDirectRenderingCapable
    requests to find out cleanly.
    (cherry picked from 4426215a6e99f84550aaac23ac9c2018668bfbc1 commit)

diff --git a/hw/xfree86/dri/xf86dri.c b/hw/xfree86/dri/xf86dri.c
index 4b0e354..5e46036 100644
--- a/hw/xfree86/dri/xf86dri.c
+++ b/hw/xfree86/dri/xf86dri.c
@@ -81,6 +81,7 @@ static DISPATCH_PROC(ProcXF86DRIDispatch
 static DISPATCH_PROC(ProcXF86DRIAuthConnection);
 
 static DISPATCH_PROC(SProcXF86DRIQueryVersion);
+static DISPATCH_PROC(SProcXF86DRIQueryDirectRenderingCapable);
 static DISPATCH_PROC(SProcXF86DRIDispatch);
 
 static void XF86DRIResetProc(ExtensionEntry* extEntry);
@@ -142,6 +143,9 @@ ProcXF86DRIQueryVersion(
     if (client->swapped) {
     	swaps(&rep.sequenceNumber, n);
     	swapl(&rep.length, n);
+	swaps(&rep.majorVersion, n);
+	swaps(&rep.minorVersion, n);
+	swapl(&rep.patchVersion, n);
     }
     WriteToClient(client, sizeof(xXF86DRIQueryVersionReply), (char *)&rep);
     return (client->noClientException);
@@ -154,6 +158,7 @@ ProcXF86DRIQueryDirectRenderingCapable(
 {
     xXF86DRIQueryDirectRenderingCapableReply	rep;
     Bool isCapable;
+    register int n;
 
     REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
     REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq);
@@ -172,9 +177,14 @@ ProcXF86DRIQueryDirectRenderingCapable(
     }
     rep.isCapable = isCapable;
 
-    if (!LocalClient(client))
+    if (!LocalClient(client) || client->swapped)
 	rep.isCapable = 0;
 
+    if (client->swapped) {
+    	swaps(&rep.sequenceNumber, n);
+    	swapl(&rep.length, n);
+    }
+
     WriteToClient(client, 
 	sizeof(xXF86DRIQueryDirectRenderingCapableReply), (char *)&rep);
     return (client->noClientException);
@@ -627,22 +637,35 @@ SProcXF86DRIQueryVersion(
 }
 
 static int
+SProcXF86DRIQueryDirectRenderingCapable(
+    register ClientPtr client
+)
+{
+    register int n;
+    REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
+    swaps(&stuff->length, n);
+    swapl(&stuff->screen, n);
+    return ProcXF86DRIQueryDirectRenderingCapable(client);
+}
+
+static int
 SProcXF86DRIDispatch (
     register ClientPtr	client
 )
 {
     REQUEST(xReq);
 
-    /* It is bound to be non-local when there is byte swapping */
-    if (!LocalClient(client))
-	return DRIErrorBase + XF86DRIClientNotLocal;
-
-    /* only local clients are allowed DRI access */
+    /*
+     * Only local clients are allowed DRI access, but remote clients still need
+     * these requests to find out cleanly.
+     */
     switch (stuff->data)
     {
     case X_XF86DRIQueryVersion:
 	return SProcXF86DRIQueryVersion(client);
+    case X_XF86DRIQueryDirectRenderingCapable:
+	return SProcXF86DRIQueryDirectRenderingCapable(client);
     default:
-	return BadRequest;
+	return DRIErrorBase + XF86DRIClientNotLocal;
     }
 }
diff-tree c73edbe0bc30f57c664a3a021950721cf22f2faf (from 7c0b0372ad5901ea46ff9eab1d0e36698c663196)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Sat Jun 24 14:54:52 2006 +0200

    Fix byte swapping in some GLX requests.
    (cherry picked from a195a3debca02572d9f7d7a9976b5bf67acc5d08 commit)

diff --git a/GL/glx/indirect_util.c b/GL/glx/indirect_util.c
index c9d8600..bab0226 100644
--- a/GL/glx/indirect_util.c
+++ b/GL/glx/indirect_util.c
@@ -185,8 +185,8 @@ __glXSendReplySwap( ClientPtr client, co
     }
 
     __glXReply.length =         bswap_32( reply_ints );
-    __glXReply.type =           bswap_32( X_Reply );
-    __glXReply.sequenceNumber = bswap_32( client->sequence );
+    __glXReply.type =           X_Reply;
+    __glXReply.sequenceNumber = bswap_16( client->sequence );
     __glXReply.size =           bswap_32( elements );
     __glXReply.retval =         bswap_32( retval );
 



More information about the xorg-commit mailing list