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

Re: xineramify_xscreensaver.diff?



[There was no need to mail me privately about this; the debian-x mailing
list is a perfectly reasonable forum for such queries.]

On Mon, May 26, 2003 at 02:36:35AM -0700, Jamie Zawinski wrote:
> You wrote:
> >
> > -  * debian/patches/000_stolen_from_HEAD_xineramify_xscreensaver.diff (new):
> > -    + New patch from XFree86 HEAD to add Xinerama support to xscreensaver.
> 
> Nobody has ever sent me such a patch for xscreensaver -- what does it
> do?  (There has been Xinerama support in xscreensaver since, I think,
> 1998.)

I neither wrote this patch, nor am I the person who borrowed the changes
in question from XFree86 CVS HEAD.

I hadn't previously scrutinized this patch, but it appears to add
Xinerama/"PanoramiX" support to the XScreenSaver protocol extension that
is part of the Xext shared library, and has nothing to do with
"xscreensaver", the application which is, I am given to understand by
the prominent declarations all over it, written and copyrighted by you,
Jamie Zawinski.

It surprises me that you were apparently unaware that the string
"xscreensaver" refers to more than just your own software.  If that is
true, you should probably also know that this determination of name was
not made by the Debian Project, but, I believe, by the X Consortium a
decade ago or more.

> I poked around on debian.org, but I can't figure out if there exists any
> way to see the ways in which you've modified my program without actually
> installing Debian.  Is there?

* The text you're quoting is a changelog entry from a Debian-format
  package that was never prepared for, or released to, the Debian
  distribution.
* *I* haven't modified your program in any way.  As far as I can tell
  from browsing the patch, it doesn't either.  XFree86 and xscreensaver
  are separately packaged in the Debian Project, which only makes sense
  as they have different upstream sources.  Perhaps Daniel Stone, who
  wrote the above entry, is confused about the nature of the patch, or
  did not explain it clearly enough.
* When packages are actually part of the Debian distribution (whether
  the stable, testing, or unstable branches), their source code can be
  found via the query interface at:
    http://www.debian.org/distrib/packages

The patch in question is attached.  As you can see, it modifies only the
source code of the XFree86 distribution.

-- 
G. Branden Robinson                |    Kissing girls is a goodness.  It is
Debian GNU/Linux                   |    a growing closer.  It beats the
branden@debian.org                 |    hell out of card games.
http://people.debian.org/~branden/ |    -- Robert Heinlein
This patch makes xscreensaver Xinerama-aware, and vice-versa.

diff -urN xc.orig/programs/Xserver/Xext/panoramiX.c xc/programs/Xserver/Xext/panoramiX.c
--- xc.orig/programs/Xserver/Xext/panoramiX.c	2002-08-01 10:30:34.000000000 +1000
+++ xc/programs/Xserver/Xext/panoramiX.c	2003-04-09 04:52:50.000000000 +1000
@@ -23,7 +23,7 @@
 dealings in this Software without prior written authorization from Digital
 Equipment Corporation.
 ******************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/panoramiX.c,v 3.32 2002/08/01 00:30:34 mvojkovi Exp $ */
+/* $XFree86: xc/programs/Xserver/Xext/panoramiX.c,v 3.33 2003/03/23 04:56:02 mvojkovi Exp $ */
 
 #define NEED_REPLIES
 #include <stdio.h>
@@ -764,7 +764,7 @@
     int 	i, j, k;
     VisualPtr   pVisual, pVisual2;
     ScreenPtr   pScreen, pScreen2;
-    PanoramiXRes *root, *defmap;
+    PanoramiXRes *root, *defmap, *saver;
 
     if(!PanoramiXVisualTable)
 	PanoramiXVisualTable = xcalloc(256 * MAXSCREENS, sizeof(XID));
@@ -866,14 +866,22 @@
     root->type = XRT_WINDOW;
     defmap = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes));
     defmap->type = XRT_COLORMAP;
+    saver = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes));
+    saver->type = XRT_WINDOW;
+
 
     for (i =  0; i < PanoramiXNumScreens; i++) {
 	root->info[i].id = WindowTable[i]->drawable.id;
 	root->u.win.class = InputOutput;
+        root->u.win.root = TRUE;
+        saver->info[i].id = savedScreenInfo[i].wid;
+        saver->u.win.class = InputOutput;
+        saver->u.win.root = TRUE;
 	defmap->info[i].id = (screenInfo.screens[i])->defColormap;
     }
 
     AddResource(root->info[0].id, XRT_WINDOW, root);
+    AddResource(saver->info[0].id, XRT_WINDOW, saver);
     AddResource(defmap->info[0].id, XRT_COLORMAP, defmap);
 }
 
diff -urN xc.orig/programs/Xserver/Xext/panoramiX.h xc/programs/Xserver/Xext/panoramiX.h
--- xc.orig/programs/Xserver/Xext/panoramiX.h	2001-01-03 13:54:17.000000000 +1100
+++ xc/programs/Xserver/Xext/panoramiX.h	2003-04-09 04:52:50.000000000 +1000
@@ -19,7 +19,7 @@
 *   or  in  FAR 52.227-19, as applicable.                       *
 *                                                               *
 *****************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/panoramiX.h,v 1.5 2001/01/03 02:54:17 keithp Exp $ */
+/* $XFree86: xc/programs/Xserver/Xext/panoramiX.h,v 1.6 2003/03/23 04:56:02 mvojkovi Exp $ */
 
 /* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */
 
@@ -52,6 +52,7 @@
 	struct {
 	    char   visibility;
 	    char   class;
+            char   root;
 	} win;
 	struct {
 	    Bool shared;
diff -urN xc.orig/programs/Xserver/Xext/panoramiXprocs.c xc/programs/Xserver/Xext/panoramiXprocs.c
--- xc.orig/programs/Xserver/Xext/panoramiXprocs.c	2002-04-11 07:38:53.000000000 +1000
+++ xc/programs/Xserver/Xext/panoramiXprocs.c	2003-04-09 04:52:50.000000000 +1000
@@ -26,7 +26,7 @@
 
 /* Massively rewritten by Mark Vojkovich <markv@valinux.com> */
 
-/* $XFree86: xc/programs/Xserver/Xext/panoramiXprocs.c,v 3.33 2002/04/10 21:38:53 mvojkovi Exp $ */
+/* $XFree86: xc/programs/Xserver/Xext/panoramiXprocs.c,v 3.34 2003/03/23 04:56:02 mvojkovi Exp $ */
 
 #include <stdio.h>
 #include "X.h"
@@ -131,6 +131,7 @@
     newWin->type = XRT_WINDOW;
     newWin->u.win.visibility = VisibilityNotViewable;
     newWin->u.win.class = stuff->class;
+    newWin->u.win.root = FALSE;
     newWin->info[0].id = stuff->wid;
     for(j = 1; j < PanoramiXNumScreens; j++)
         newWin->info[j].id = FakeClientID(client->index);
@@ -140,7 +141,8 @@
     orig_visual = stuff->visual;
     orig_x = stuff->x;
     orig_y = stuff->y;
-    parentIsRoot = (stuff->parent == WindowTable[0]->drawable.id);
+    parentIsRoot = (stuff->parent == WindowTable[0]->drawable.id) ||
+                   (stuff->parent == savedScreenInfo[0].wid);
     FOR_NSCREENS_BACKWARD(j) {
         stuff->wid = newWin->info[j].id;
         stuff->parent = parent->info[j].id;
@@ -329,7 +331,8 @@
 
     x = stuff->x;
     y = stuff->y;
-    parentIsRoot = (stuff->parent == WindowTable[0]->drawable.id);
+    parentIsRoot = (stuff->parent == WindowTable[0]->drawable.id) ||
+                   (stuff->parent == savedScreenInfo[0].wid);
     FOR_NSCREENS_BACKWARD(j) {
 	stuff->window = win->info[j].id;
 	stuff->parent = parent->info[j].id;
@@ -468,7 +471,9 @@
 	}
     }
 
-    if(pWin->parent && (pWin->parent == WindowTable[0])) {
+    if(pWin->parent && ((pWin->parent == WindowTable[0]) ||
+                        (pWin->parent->drawable.id == savedScreenInfo[0].wid)))
+    {
 	if ((Mask)stuff->mask & CWX) {
 	    x_offset = 0;
 	    x = *((CARD32 *)&stuff[1]);
@@ -548,7 +553,9 @@
         WindowPtr pWin = (WindowPtr)pDraw;
 	rep.x = pWin->origin.x - wBorderWidth (pWin);
 	rep.y = pWin->origin.y - wBorderWidth (pWin);
-	if(pWin->parent == WindowTable[0]) {
+	if((pWin->parent == WindowTable[0]) || 
+           (pWin->parent->drawable.id == savedScreenInfo[0].wid))
+        {
 	   rep.x += panoramiXdataPtr[0].x;
 	   rep.y += panoramiXdataPtr[0].y;
 	}
@@ -582,7 +589,9 @@
     rep.sameScreen = xTrue;
     rep.child = None;
 
-    if(pWin == WindowTable[0]) {
+    if((pWin == WindowTable[0]) || 
+       (pWin->drawable.id == savedScreenInfo[0].wid))
+    { 
 	x = stuff->srcX - panoramiXdataPtr[0].x;
 	y = stuff->srcY - panoramiXdataPtr[0].y;
     } else {
@@ -622,7 +631,9 @@
     }
     rep.dstX = x - pDst->drawable.x;
     rep.dstY = y - pDst->drawable.y;
-    if(pDst == WindowTable[0]) {
+    if((pDst == WindowTable[0]) || 
+       (pDst->drawable.id == savedScreenInfo[0].wid))
+    {
 	rep.dstX += panoramiXdataPtr[0].x;
 	rep.dstY += panoramiXdataPtr[0].y;
     }
@@ -947,7 +958,7 @@
 
     x = stuff->x;
     y = stuff->y;
-    isRoot = (stuff->window == WindowTable[0]->drawable.id);
+    isRoot = win->u.win.root;
     FOR_NSCREENS_BACKWARD(j) {
 	stuff->window = win->info[j].id;
 	if(isRoot) {
@@ -1002,11 +1013,9 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;
 
-    if((dst->type == XRT_WINDOW) &&
-       (stuff->dstDrawable == WindowTable[0]->drawable.id))
+    if((dst->type == XRT_WINDOW) && dst->u.win.root)
 	dstIsRoot = TRUE;
-    if((src->type == XRT_WINDOW) &&
-       (stuff->srcDrawable == WindowTable[0]->drawable.id))
+    if((src->type == XRT_WINDOW) && src->u.win.root)
 	srcIsRoot = TRUE;
 
     srcx = stuff->srcX; srcy = stuff->srcY;
@@ -1152,11 +1161,9 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;
 
-    if((dst->type == XRT_WINDOW) &&
-       (stuff->dstDrawable == WindowTable[0]->drawable.id))
+    if((dst->type == XRT_WINDOW) && dst->u.win.root)
 	dstIsRoot = TRUE;
-    if((src->type == XRT_WINDOW) &&
-       (stuff->srcDrawable == WindowTable[0]->drawable.id))
+    if((src->type == XRT_WINDOW) && src->u.win.root)
 	srcIsRoot = TRUE;
 
     srcx = stuff->srcX; srcy = stuff->srcY;
@@ -1246,8 +1253,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
     npoint = ((client->req_len << 2) - sizeof(xPolyPointReq)) >> 2;
     if (npoint > 0) {
         origPts = (xPoint *) ALLOCATE_LOCAL(npoint * sizeof(xPoint));
@@ -1305,8 +1311,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
     npoint = ((client->req_len << 2) - sizeof(xPolyLineReq)) >> 2;
     if (npoint > 0){
         origPts = (xPoint *) ALLOCATE_LOCAL(npoint * sizeof(xPoint));
@@ -1364,8 +1369,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     nsegs = (client->req_len << 2) - sizeof(xPolySegmentReq);
     if(nsegs & 4) return BadLength;
@@ -1427,8 +1431,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     nrects = (client->req_len << 2) - sizeof(xPolyRectangleReq);
     if(nrects & 4) return BadLength;
@@ -1488,8 +1491,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     narcs = (client->req_len << 2) - sizeof(xPolyArcReq);
     if(narcs % sizeof(xArc)) return BadLength;
@@ -1547,8 +1549,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     count = ((client->req_len << 2) - sizeof(xFillPolyReq)) >> 2;
     if (count > 0){
@@ -1607,8 +1608,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     things = (client->req_len << 2) - sizeof(xPolyFillRectangleReq);
     if(things & 4) return BadLength;
@@ -1667,8 +1667,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     narcs = (client->req_len << 2) - sizeof(xPolyFillArcReq);
     IF_RETURN((narcs % sizeof(xArc)), BadLength);
@@ -1726,8 +1725,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     orig_x = stuff->dstX;
     orig_y = stuff->dstY;
@@ -1786,8 +1784,7 @@
     format = stuff->format;
     planemask = stuff->planeMask;
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     if(isRoot) {
       if( /* check for being onscreen */
@@ -1919,8 +1916,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     orig_x = stuff->x;
     orig_y = stuff->y;
@@ -1959,8 +1955,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     orig_x = stuff->x;
     orig_y = stuff->y;
@@ -1999,8 +1994,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     orig_x = stuff->x;
     orig_y = stuff->y;
@@ -2039,8 +2033,7 @@
 		client, stuff->gc, XRT_GC, SecurityReadAccess)))
 	return BadGC;    
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     orig_x = stuff->x;
     orig_y = stuff->y;
diff -urN xc.orig/programs/Xserver/Xext/saver.c xc/programs/Xserver/Xext/saver.c
--- xc.orig/programs/Xserver/Xext/saver.c	2001-08-23 23:01:36.000000000 +1000
+++ xc/programs/Xserver/Xext/saver.c	2003-04-09 04:52:50.000000000 +1000
@@ -1,6 +1,6 @@
 /*
  * $XConsortium: saver.c,v 1.12 94/04/17 20:59:36 dpw Exp $
- * $XFree86: xc/programs/Xserver/Xext/saver.c,v 3.4 2001/08/23 13:01:36 alanh Exp $
+ * $XFree86: xc/programs/Xserver/Xext/saver.c,v 3.5 2003/03/23 04:56:02 mvojkovi Exp $
  *
 Copyright (c) 1992  X Consortium
 
@@ -45,6 +45,11 @@
 #include "gcstruct.h"
 #include "cursorstr.h"
 #include "colormapst.h"
+#ifdef PANORAMIX
+#include "panoramiX.h"
+#include "panoramiXsrv.h"
+#endif
+
 
 #ifdef IN_MODULE
 #include <xf86_ansic.h>
@@ -696,7 +701,10 @@
 	    ret = TRUE;
 	
     }
-    SendScreenSaverNotify (pScreen, state, force);
+#ifdef PANORAMIX
+    if(noPanoramiXExtension || !pScreen->myNum)
+#endif
+       SendScreenSaverNotify (pScreen, state, force);
     return ret;
 }
 
@@ -810,8 +818,7 @@
 }
 
 static int
-ProcScreenSaverSetAttributes (client)
-    register ClientPtr	client;
+ScreenSaverSetAttributes (ClientPtr client)
 {
     REQUEST(xScreenSaverSetAttributesReq);
     DrawablePtr			pDraw;
@@ -1191,8 +1198,7 @@
 }
 
 static int
-ProcScreenSaverUnsetAttributes (client)
-    register ClientPtr	client;
+ScreenSaverUnsetAttributes (ClientPtr client)
 {
     REQUEST(xScreenSaverSetAttributesReq);
     DrawablePtr			pDraw;
@@ -1212,6 +1218,110 @@
     return Success;
 }
 
+static int
+ProcScreenSaverSetAttributes (ClientPtr client)
+{
+#ifdef PANORAMIX
+    if(!noPanoramiXExtension) {
+       REQUEST(xScreenSaverSetAttributesReq);
+       PanoramiXRes *draw;
+       PanoramiXRes *backPix = NULL;
+       PanoramiXRes *bordPix = NULL;
+       PanoramiXRes *cmap    = NULL;
+       int i, status = 0, len;
+       int  pback_offset = 0, pbord_offset = 0, cmap_offset = 0;
+       XID orig_visual, tmp;
+
+       REQUEST_AT_LEAST_SIZE (xScreenSaverSetAttributesReq);
+
+       if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
+                   client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+           return BadDrawable;
+
+       len = stuff->length -  (sizeof(xScreenSaverSetAttributesReq) >> 2);
+       if (Ones(stuff->mask) != len)
+           return BadLength;
+
+       if((Mask)stuff->mask & CWBackPixmap) {
+          pback_offset = Ones((Mask)stuff->mask & (CWBackPixmap - 1));
+          tmp = *((CARD32 *) &stuff[1] + pback_offset);
+          if ((tmp != None) && (tmp != ParentRelative)) {
+             if(!(backPix = (PanoramiXRes*) SecurityLookupIDByType(
+                  client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+                return BadPixmap;
+          }
+       }
+
+       if ((Mask)stuff->mask & CWBorderPixmap) {
+          pbord_offset = Ones((Mask)stuff->mask & (CWBorderPixmap - 1));
+          tmp = *((CARD32 *) &stuff[1] + pbord_offset);
+          if (tmp != CopyFromParent) {
+             if(!(bordPix = (PanoramiXRes*) SecurityLookupIDByType(
+                  client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+                return BadPixmap;
+          }
+       }
+
+       if ((Mask)stuff->mask & CWColormap) {
+           cmap_offset = Ones((Mask)stuff->mask & (CWColormap - 1));
+           tmp = *((CARD32 *) &stuff[1] + cmap_offset);
+           if ((tmp != CopyFromParent) && (tmp != None)) {
+             if(!(cmap = (PanoramiXRes*) SecurityLookupIDByType(
+                  client, tmp, XRT_COLORMAP, SecurityReadAccess)))
+                 return BadColor;
+           }
+       }
+
+       orig_visual = stuff->visualID;
+
+       FOR_NSCREENS_BACKWARD(i) {
+          stuff->drawable = draw->info[i].id;  
+          if (backPix)
+             *((CARD32 *) &stuff[1] + pback_offset) = backPix->info[i].id;
+          if (bordPix)
+             *((CARD32 *) &stuff[1] + pbord_offset) = bordPix->info[i].id;
+          if (cmap)
+             *((CARD32 *) &stuff[1] + cmap_offset) = cmap->info[i].id;
+
+          if (orig_visual != CopyFromParent) 
+            stuff->visualID = 
+                     PanoramiXVisualTable[(orig_visual*MAXSCREENS) + i];
+
+          status = ScreenSaverSetAttributes(client);
+       }
+
+       return status;
+    }
+#endif
+
+    return ScreenSaverSetAttributes(client);
+}
+
+static int
+ProcScreenSaverUnsetAttributes (ClientPtr client)
+{
+#ifdef PANORAMIX
+    if(!noPanoramiXExtension) {
+       REQUEST(xScreenSaverUnsetAttributesReq);
+       PanoramiXRes *draw;
+       int i;
+
+       if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
+                   client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+           return BadDrawable;
+
+       for(i = PanoramiXNumScreens - 1; i > 0; i--) {
+            stuff->drawable = draw->info[i].id;
+            ScreenSaverUnsetAttributes(client);
+       }
+
+       stuff->drawable = draw->info[0].id;
+    }
+#endif
+
+    return ScreenSaverUnsetAttributes(client);
+}
+
 static DISPATCH_PROC((*NormalVector[])) = {
     ProcScreenSaverQueryVersion,
     ProcScreenSaverQueryInfo,
diff -urN xc.orig/programs/Xserver/Xext/shm.c xc/programs/Xserver/Xext/shm.c
--- xc.orig/programs/Xserver/Xext/shm.c	2002-04-04 05:51:11.000000000 +1000
+++ xc/programs/Xserver/Xext/shm.c	2003-04-09 04:52:50.000000000 +1000
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.36 2002/04/03 19:51:11 herrb Exp $ */
+/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.37 2003/03/23 04:56:02 mvojkovi Exp $ */
 /************************************************************
 
 Copyright 1989, 1998  The Open Group
@@ -572,8 +572,7 @@
                 client, stuff->gc, XRT_GC, SecurityReadAccess)))
         return BadGC;
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     orig_x = stuff->dstX;
     orig_y = stuff->dstY;
@@ -633,8 +632,7 @@
     format = stuff->format;
     planemask = stuff->planeMask;
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-		(stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     if(isRoot) {
       if( /* check for being onscreen */
diff -urN xc.orig/programs/Xserver/Xext/xvdisp.c xc/programs/Xserver/Xext/xvdisp.c
--- xc.orig/programs/Xserver/Xext/xvdisp.c	2001-11-19 10:55:48.000000000 +1100
+++ xc/programs/Xserver/Xext/xvdisp.c	2003-04-09 04:52:50.000000000 +1000
@@ -21,7 +21,7 @@
 SOFTWARE.
 
 ******************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/xvdisp.c,v 1.25 2001/11/18 23:55:48 mvojkovi Exp $ */
+/* $XFree86: xc/programs/Xserver/Xext/xvdisp.c,v 1.26 2003/03/23 04:56:02 mvojkovi Exp $ */
 
 /*
 ** File: 
@@ -1939,8 +1939,7 @@
                 client, stuff->port, XvXRTPort, SecurityReadAccess)))
         return _XvBadPort;
  
-    isRoot = (draw->type == XRT_WINDOW) &&
-                (stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     x = stuff->drw_x;
     y = stuff->drw_y;
@@ -1987,8 +1986,7 @@
 		client, stuff->port, XvXRTPort, SecurityReadAccess)))
 	return _XvBadPort;
  
-    isRoot = (draw->type == XRT_WINDOW) &&
-                (stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     x = stuff->drw_x;
     y = stuff->drw_y;
@@ -2033,8 +2031,7 @@
                 client, stuff->port, XvXRTPort, SecurityReadAccess)))
         return _XvBadPort;
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-                (stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     x = stuff->drw_x;
     y = stuff->drw_y;
@@ -2079,8 +2076,7 @@
                 client, stuff->port, XvXRTPort, SecurityReadAccess)))
         return _XvBadPort;
 
-    isRoot = (draw->type == XRT_WINDOW) &&
-                (stuff->drawable == WindowTable[0]->drawable.id);
+    isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
 
     x = stuff->drw_x;
     y = stuff->drw_y;
diff -urN xc.orig/programs/Xserver/hw/xfree86/loader/extsym.c xc/programs/Xserver/hw/xfree86/loader/extsym.c
--- xc.orig/programs/Xserver/hw/xfree86/loader/extsym.c	2001-11-18 03:05:59.000000000 +1100
+++ xc/programs/Xserver/hw/xfree86/loader/extsym.c	2003-04-09 04:52:50.000000000 +1000
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.6 2001/11/17 16:05:59 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.7 2003/03/23 05:14:35 mvojkovi Exp $ */
 
 /*
  *
@@ -42,6 +42,7 @@
 extern Bool noPanoramiXExtension;
 extern int PanoramiXNumScreens;
 extern PanoramiXData *panoramiXdataPtr;
+extern XID *PanoramiXVisualTable;
 extern unsigned long XRT_WINDOW;
 extern unsigned long XRT_PIXMAP;
 extern unsigned long XRT_GC;
@@ -67,6 +68,7 @@
  SYMVAR(noPanoramiXExtension)
  SYMVAR(PanoramiXNumScreens)
  SYMVAR(panoramiXdataPtr)
+ SYMVAR(PanoramiXVisualTable)
  SYMVAR(XRT_WINDOW)
  SYMVAR(XRT_PIXMAP)
  SYMVAR(XRT_GC)

Attachment: pgpiJFqGBxOfu.pgp
Description: PGP signature


Reply to: