xserver: Branch 'randr-1.2' - 7 commits

Keith Packard keithp at kemper.freedesktop.org
Tue Nov 7 11:30:00 EET 2006


 Xext/security.c       |   12 ++++++------
 dix/dispatch.c        |    1 -
 dix/events.c          |    3 +--
 dix/getevents.c       |    8 +++++---
 hw/kdrive/vesa/vbe.c  |    2 +-
 hw/kdrive/vesa/vm86.c |   31 ++++++++++++++++---------------
 include/dixevents.h   |    4 ++++
 7 files changed, 33 insertions(+), 28 deletions(-)

New commits:
diff-tree 1dcda4f3c56214464c0b6123fea6daa69aae69fc (from c20d3bf7533da0bf26beaf7d8c359d18edbd70e8)
Author: Keith Packard <keithp at neko.keithp.com>
Date:   Tue Nov 7 01:29:51 2006 -0800

    Avoid dereferencing sprite.screen when Xinerama is not running. (#8925)
    
    With Xinerama support built into the X server but not in use,
    sprite.screen is NULL and yet the SyntheticMotion
    macro would dereference it. Avoid that by just passing sprite.screen
    to PostSyntheticMotion which can then dereference it when Xinerama is
    enabled.
    
    Also, define PostSyntheticMotion in dixevents.h and include dixevents.h in
    getevents.c

diff --git a/dix/events.c b/dix/events.c
index 3b1a0aa..ce053b3 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -327,11 +327,10 @@ static CARD8 criticalEvents[32] =
 
 #ifdef PANORAMIX
 static void ConfineToShape(RegionPtr shape, int *px, int *py);
-extern void PostSyntheticMotion(int x, int y, int screenNum, int time);
 static void PostNewCursor(void);
 
 #define SyntheticMotion(x, y) \
-    PostSyntheticMotion(x, y, sprite.screen->myNum, \
+    PostSyntheticMotion(x, y, sprite.screen, \
                         syncEvents.playingEvents ? \
                           syncEvents.time.milliseconds : \
                           currentTime.milliseconds);
diff --git a/dix/getevents.c b/dix/getevents.c
index b19a73f..1d95028 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -38,6 +38,7 @@
 
 #include "dixstruct.h"
 #include "globals.h"
+#include "dixevents.h"
 
 #include "mipointer.h"
 
@@ -758,7 +759,7 @@ SwitchCorePointer(DeviceIntPtr pDev)
  * to shift the pointer to get it inside the new bounds.
  */
 void
-PostSyntheticMotion(int x, int y, int screenNum, unsigned long time)
+PostSyntheticMotion(int x, int y, ScreenPtr pScreen, unsigned long time)
 {
     xEvent xE;
 
@@ -767,8 +768,8 @@ PostSyntheticMotion(int x, int y, int sc
        will translate from sprite screen to screen 0 upon reentry
        to the DIX layer. */
     if (!noPanoramiXExtension) {
-        x += panoramiXdataPtr[0].x - panoramiXdataPtr[screenNum].x;
-        y += panoramiXdataPtr[0].y - panoramiXdataPtr[screenNum].y;
+        x += panoramiXdataPtr[0].x - panoramiXdataPtr[pScreen->myNum].x;
+        y += panoramiXdataPtr[0].y - panoramiXdataPtr[pScreen->myNum].y;
     }
 #endif
 
@@ -776,6 +777,7 @@ PostSyntheticMotion(int x, int y, int sc
     xE.u.u.type = MotionNotify;
     xE.u.keyButtonPointer.rootX = x;
     xE.u.keyButtonPointer.rootY = y;
+    xE.u.keyButtonPointer.time = time;
 
     (*inputInfo.pointer->public.processInputProc)(&xE, inputInfo.pointer, 1);
 }
diff --git a/include/dixevents.h b/include/dixevents.h
index 2a9458f..c78fb0e 100644
--- a/include/dixevents.h
+++ b/include/dixevents.h
@@ -102,4 +102,8 @@ extern int ProcUngrabButton(ClientPtr /*
 
 extern int ProcRecolorCursor(ClientPtr /* client */);
 
+#ifdef PANORAMIX
+extern void PostSyntheticMotion(int x, int y, ScreenPtr pScreen, unsigned long time);
+#endif
+
 #endif /* DIXEVENTS_H */
diff-tree c20d3bf7533da0bf26beaf7d8c359d18edbd70e8 (from parents)
Merge: 028bbdc0417173803695808ba9f48498519273a3 3d39c02fe6aaa602c52f1d4f0ea6cd3bd000cf9f
Author: Keith Packard <keithp at neko.keithp.com>
Date:   Tue Nov 7 01:21:28 2006 -0800

    Merge branch 'origin' into randr-1.2

diff-tree 3d39c02fe6aaa602c52f1d4f0ea6cd3bd000cf9f (from 75fe0670eb1f71144246f1c20759d58788bbee00)
Author: Eamon Walsh <ewalsh at tycho.nsa.gov>
Date:   Mon Nov 6 21:25:52 2006 -0500

    More work on Bug #8875: revert previous fix and try using client argument
    instead of serverClient.  Also don't use totalClientSize as it is not
    initialized until after the first call to InitClient.

diff --git a/Xext/security.c b/Xext/security.c
index c5181ed..ac76279 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -1122,10 +1122,8 @@ CALLBACK(SecurityClientStateCallback)
     switch (client->clientState)
     {
     case ClientStateInitial:
-	if (client == serverClient) {
-	    TRUSTLEVEL(serverClient) = XSecurityClientTrusted;
-	    AUTHID(serverClient) = None;
-	}
+	TRUSTLEVEL(client) = XSecurityClientTrusted;
+	AUTHID(client) = None;
 	break;
 
     case ClientStateRunning:
diff --git a/dix/dispatch.c b/dix/dispatch.c
index 2e7fa79..d8e3ae7 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -3682,7 +3682,6 @@ extern unsigned totalClientSize;
 
 void InitClient(ClientPtr client, int i, pointer ospriv)
 {
-    bzero(client, totalClientSize);
     client->index = i;
     client->sequence = 0; 
     client->clientAsMask = ((Mask)i) << CLIENTOFFSET;
diff-tree 75fe0670eb1f71144246f1c20759d58788bbee00 (from 0539d9cf2423fc0bed6f5c413beba3080f8abd85)
Author: Eamon Walsh <ewalsh at tycho.nsa.gov>
Date:   Mon Nov 6 15:30:25 2006 -0500

    whitespace adjust

diff --git a/Xext/security.c b/Xext/security.c
index 2a73b60..c5181ed 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -1128,7 +1128,7 @@ CALLBACK(SecurityClientStateCallback)
 	}
 	break;
 
-	case ClientStateRunning:
+    case ClientStateRunning:
 	{ 
 	    XID authId = AuthorizationIDOfClient(client);
 	    SecurityAuthorizationPtr pAuth;
@@ -1148,8 +1148,8 @@ CALLBACK(SecurityClientStateCallback)
 	    }
 	    break;
 	}
-	case ClientStateGone:
-	case ClientStateRetained: /* client disconnected */
+    case ClientStateGone:
+    case ClientStateRetained: /* client disconnected */
 	{
 	    SecurityAuthorizationPtr pAuth;
 
@@ -1169,7 +1169,7 @@ CALLBACK(SecurityClientStateCallback)
 	    }	    
 	    break;
 	}
-	default: break; 
+    default: break; 
     }
 } /* SecurityClientStateCallback */
 
diff-tree 0539d9cf2423fc0bed6f5c413beba3080f8abd85 (from aa0261a98e9d5b1349b33e2639bd83c556dd4000)
Author: Eamon Walsh <ewalsh at tycho.nsa.gov>
Date:   Mon Nov 6 15:29:17 2006 -0500

    Bug #8875: Security extension causes Xorg to core dump on server reset

diff --git a/Xext/security.c b/Xext/security.c
index 54a2b3e..2a73b60 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -1122,8 +1122,10 @@ CALLBACK(SecurityClientStateCallback)
     switch (client->clientState)
     {
     case ClientStateInitial:
-	TRUSTLEVEL(serverClient) = XSecurityClientTrusted;
-	AUTHID(serverClient) = None;
+	if (client == serverClient) {
+	    TRUSTLEVEL(serverClient) = XSecurityClientTrusted;
+	    AUTHID(serverClient) = None;
+	}
 	break;
 
 	case ClientStateRunning:
diff-tree aa0261a98e9d5b1349b33e2639bd83c556dd4000 (from 6b2c65fdd169037c6ede250d4a8fec3d29a080ae)
Author: Juliusz Chroboczek <jch at pps.jussieu.fr>
Date:   Mon Nov 6 02:29:49 2006 +0100

    Improve vm86 error handling in Xvesa.

diff --git a/hw/kdrive/vesa/vm86.c b/hw/kdrive/vesa/vm86.c
index c4aadbd..d09a36d 100644
--- a/hw/kdrive/vesa/vm86.c
+++ b/hw/kdrive/vesa/vm86.c
@@ -235,13 +235,9 @@ Vm86DoInterrupt(Vm86InfoPtr vi, int num)
     OsBlockSignals ();
     code = vm86_loop(vi);
     OsReleaseSignals ();
-    if(code < 0) {
-	ErrorF("vm86 failed (errno %d)\n", errno);
+    if(code != 0)
 	return -1;
-    } else if(code != 0) {
-	ErrorF("vm86 returned 0x%04X\n", code);
-	return -1;
-    } else
+    else
 	return 0;
 }
 
@@ -269,14 +265,10 @@ Vm86DoPOST(Vm86InfoPtr vi)
     OsBlockSignals ();
     code = vm86_loop(vi);
     OsReleaseSignals ();
-    if(code < 0) {
-	ErrorF("vm86 failed (errno %d)\n", errno);
-	return -1;
-    } else if(code != 0) {
-	ErrorF("vm86 returned 0x%04X\n", code);
+    if(code != 0)
 	return -1;
-    } else
-	return 0;
+    else
+        return 0;
 }
 
 #define DEBUG_VBE 0
@@ -573,8 +565,17 @@ vm86_loop(Vm86InfoPtr vi)
             Vm86Debug(vi);
             return -1;
         default:
-            ErrorF("Unexpected result code 0x%X from vm86\n", code);
-            Vm86Debug(vi);
+            if(code < 0) {
+                if(errno == ENOSYS) {
+                    ErrorF("No vm86 support.  Are you running on AMD64?\n");
+                } else {
+                    ErrorF("vm86 failed (errno = %d).\n", errno);
+                    Vm86Debug(vi);
+                }
+            } else {
+                ErrorF("Unexpected result code 0x%X from vm86\n", code);
+                Vm86Debug(vi);
+            }
             return -1;
         }
     }
diff-tree 6b2c65fdd169037c6ede250d4a8fec3d29a080ae (from 8deaaa312ad7f9b492a2ae8ad17d74650112c25c)
Author: Juliusz Chroboczek <jch at pps.jussieu.fr>
Date:   Mon Nov 6 00:30:09 2006 +0100

    Fix typo in Xvesa: incorrect reporting of DAC capabilities.

diff --git a/hw/kdrive/vesa/vbe.c b/hw/kdrive/vesa/vbe.c
index 5fbd8ab..08f0b03 100644
--- a/hw/kdrive/vesa/vbe.c
+++ b/hw/kdrive/vesa/vbe.c
@@ -101,7 +101,7 @@ VbeReportVib(Vm86InfoPtr vi, VbeInfoBloc
     }
     ErrorF(")\n");
     ErrorF("DAC is %s, controller is %sVGA compatible%s\n",
-           (vib->Capabilities[0]&1)?"fixed":"switchable",
+           (vib->Capabilities[0]&1)?"switchable":"fixed",
            (vib->Capabilities[0]&2)?"not ":"",
            (vib->Capabilities[0]&3)?", RAMDAC causes snow":"");
     ErrorF("Total memory: %lu kilobytes\n", 64L*vib->TotalMemory);



More information about the xorg-commit mailing list