Merge remote branch 'ajax/for-keithp'
This commit is contained in:
		
						commit
						02449ee24b
					
				| 
						 | 
				
			
			@ -53,6 +53,12 @@ Equipment Corporation.
 | 
			
		|||
#include "servermd.h"
 | 
			
		||||
#include "resource.h"
 | 
			
		||||
#include "picturestr.h"
 | 
			
		||||
#ifdef XFIXES
 | 
			
		||||
#include "xfixesint.h"
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef COMPOSITE
 | 
			
		||||
#include "compint.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "modinit.h"
 | 
			
		||||
#include "protocol-versions.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -581,6 +587,13 @@ void PanoramiXExtensionInit(int argc, char *argv[])
 | 
			
		|||
    ProcVector[X_StoreNamedColor] = PanoramiXStoreNamedColor;
 | 
			
		||||
 | 
			
		||||
    PanoramiXRenderInit ();
 | 
			
		||||
#ifdef XFIXES
 | 
			
		||||
    PanoramiXFixesInit ();
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef COMPOSITE
 | 
			
		||||
    PanoramiXCompositeInit ();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extern Bool CreateConnectionBlock(void);
 | 
			
		||||
| 
						 | 
				
			
			@ -882,6 +895,9 @@ static void PanoramiXResetProc(ExtensionEntry* extEntry)
 | 
			
		|||
    int		i;
 | 
			
		||||
 | 
			
		||||
    PanoramiXRenderReset ();
 | 
			
		||||
#ifdef XFIXES
 | 
			
		||||
    PanoramiXFixesReset ();
 | 
			
		||||
#endif
 | 
			
		||||
    screenInfo.numScreens = PanoramiXNumScreens;
 | 
			
		||||
    for (i = 256; i--; )
 | 
			
		||||
	ProcVector[i] = SavedProcVector[i];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@ extern _X_EXPORT unsigned long XRT_WINDOW;
 | 
			
		|||
extern _X_EXPORT unsigned long XRT_PIXMAP;
 | 
			
		||||
extern _X_EXPORT unsigned long XRT_GC;
 | 
			
		||||
extern _X_EXPORT unsigned long XRT_COLORMAP;
 | 
			
		||||
extern _X_EXPORT unsigned long XRT_PICTURE;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Drivers are allowed to wrap this function.  Each wrapper can decide that the
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -535,13 +535,6 @@ CompositeExtensionInit (void)
 | 
			
		|||
	if (GetPictureScreenIfSet(pScreen) == NULL)
 | 
			
		||||
	    return;
 | 
			
		||||
    }
 | 
			
		||||
#ifdef PANORAMIX
 | 
			
		||||
    /* Xinerama's rewriting of window drawing before Composite gets to it
 | 
			
		||||
     * breaks Composite.
 | 
			
		||||
     */
 | 
			
		||||
    if (!noPanoramiXExtension)
 | 
			
		||||
	return;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    CompositeClientWindowType = CreateNewResourceType
 | 
			
		||||
	(FreeCompositeClientWindow, "CompositeClientWindow");
 | 
			
		||||
| 
						 | 
				
			
			@ -582,3 +575,358 @@ CompositeExtensionInit (void)
 | 
			
		|||
    /* Initialization succeeded */
 | 
			
		||||
    noCompositeExtension = FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef PANORAMIX
 | 
			
		||||
#include "panoramiXsrv.h"
 | 
			
		||||
 | 
			
		||||
int (*PanoramiXSaveCompositeVector[CompositeNumberRequests]) (ClientPtr);
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
PanoramiXCompositeRedirectWindow (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    PanoramiXRes *win;
 | 
			
		||||
    int rc = 0, j;
 | 
			
		||||
    REQUEST(xCompositeRedirectWindowReq);
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH(xCompositeRedirectWindowReq);
 | 
			
		||||
 | 
			
		||||
    if ((rc = dixLookupResourceByType((void **)&win, stuff->window, XRT_WINDOW,
 | 
			
		||||
				      client, DixUnknownAccess))) {
 | 
			
		||||
	client->errorValue = stuff->window;
 | 
			
		||||
	return rc;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_FORWARD(j) {
 | 
			
		||||
	stuff->window = win->info[j].id;
 | 
			
		||||
	rc = (*PanoramiXSaveCompositeVector[stuff->compositeReqType]) (client);
 | 
			
		||||
	if (rc != Success) break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
PanoramiXCompositeRedirectSubwindows (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    PanoramiXRes *win;
 | 
			
		||||
    int rc = 0, j;
 | 
			
		||||
    REQUEST(xCompositeRedirectSubwindowsReq);
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH(xCompositeRedirectSubwindowsReq);
 | 
			
		||||
 | 
			
		||||
    if ((rc = dixLookupResourceByType((void **)&win, stuff->window, XRT_WINDOW,
 | 
			
		||||
				      client, DixUnknownAccess))) {
 | 
			
		||||
	client->errorValue = stuff->window;
 | 
			
		||||
	return rc;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_FORWARD(j) {
 | 
			
		||||
	stuff->window = win->info[j].id;
 | 
			
		||||
	rc = (*PanoramiXSaveCompositeVector[stuff->compositeReqType]) (client);
 | 
			
		||||
	if (rc != Success) break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
PanoramiXCompositeUnredirectWindow (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    PanoramiXRes *win;
 | 
			
		||||
    int rc = 0, j;
 | 
			
		||||
    REQUEST(xCompositeUnredirectWindowReq);
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH(xCompositeUnredirectWindowReq);
 | 
			
		||||
 | 
			
		||||
    if ((rc = dixLookupResourceByType((void **)&win, stuff->window, XRT_WINDOW,
 | 
			
		||||
				      client, DixUnknownAccess))) {
 | 
			
		||||
	client->errorValue = stuff->window;
 | 
			
		||||
	return rc;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_FORWARD(j) {
 | 
			
		||||
	stuff->window = win->info[j].id;
 | 
			
		||||
	rc = (*PanoramiXSaveCompositeVector[stuff->compositeReqType]) (client);
 | 
			
		||||
	if (rc != Success) break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
PanoramiXCompositeUnredirectSubwindows (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    PanoramiXRes *win;
 | 
			
		||||
    int rc = 0, j;
 | 
			
		||||
    REQUEST(xCompositeUnredirectSubwindowsReq);
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH(xCompositeUnredirectSubwindowsReq);
 | 
			
		||||
 | 
			
		||||
    if ((rc = dixLookupResourceByType((void **)&win, stuff->window, XRT_WINDOW,
 | 
			
		||||
				      client, DixUnknownAccess))) {
 | 
			
		||||
	client->errorValue = stuff->window;
 | 
			
		||||
	return rc;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_FORWARD(j) {
 | 
			
		||||
	stuff->window = win->info[j].id;
 | 
			
		||||
	rc = (*PanoramiXSaveCompositeVector[stuff->compositeReqType]) (client);
 | 
			
		||||
	if (rc != Success) break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
PanoramiXCompositeNameWindowPixmap (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    WindowPtr	    pWin;
 | 
			
		||||
    CompWindowPtr   cw;
 | 
			
		||||
    PixmapPtr	    pPixmap;
 | 
			
		||||
    int rc;
 | 
			
		||||
    PanoramiXRes *win, *newPix;
 | 
			
		||||
    int i;
 | 
			
		||||
    REQUEST(xCompositeNameWindowPixmapReq);
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq);
 | 
			
		||||
 | 
			
		||||
    if ((rc = dixLookupResourceByType((void **)&win, stuff->window, XRT_WINDOW,
 | 
			
		||||
				      client, DixUnknownAccess))) {
 | 
			
		||||
	client->errorValue = stuff->window;
 | 
			
		||||
	return rc;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    LEGAL_NEW_RESOURCE (stuff->pixmap, client);
 | 
			
		||||
 | 
			
		||||
    if(!(newPix = malloc(sizeof(PanoramiXRes))))
 | 
			
		||||
	return BadAlloc;
 | 
			
		||||
 | 
			
		||||
    newPix->type = XRT_PIXMAP;
 | 
			
		||||
    newPix->u.pix.shared = FALSE;
 | 
			
		||||
    newPix->info[0].id = stuff->pixmap;
 | 
			
		||||
 | 
			
		||||
    for (i = 1; i < PanoramiXNumScreens; i++)
 | 
			
		||||
	newPix->info[i].id = FakeClientID (client->index);
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS(i) {
 | 
			
		||||
	rc = dixLookupResourceByType ((void **) &pWin, win->info[i].id,
 | 
			
		||||
				      RT_WINDOW, client, DixGetAttrAccess);
 | 
			
		||||
	if (rc != Success)
 | 
			
		||||
	{
 | 
			
		||||
	    client->errorValue = stuff->window;
 | 
			
		||||
	    free (newPix);
 | 
			
		||||
	    return rc;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!pWin->viewable)
 | 
			
		||||
	{
 | 
			
		||||
	    free (newPix);
 | 
			
		||||
	    return BadMatch;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cw = GetCompWindow (pWin);
 | 
			
		||||
	if (!cw)
 | 
			
		||||
	{
 | 
			
		||||
	    free (newPix);
 | 
			
		||||
	    return BadMatch;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pPixmap = (*pWin->drawable.pScreen->GetWindowPixmap) (pWin);
 | 
			
		||||
	if (!pPixmap)
 | 
			
		||||
	{
 | 
			
		||||
	    free (newPix);
 | 
			
		||||
	    return BadMatch;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!AddResource (newPix->info[i].id, RT_PIXMAP,
 | 
			
		||||
			  (pointer) pPixmap))
 | 
			
		||||
	    return BadAlloc;
 | 
			
		||||
 | 
			
		||||
	++pPixmap->refcnt;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!AddResource (stuff->pixmap, XRT_PIXMAP, (pointer) newPix))
 | 
			
		||||
	return BadAlloc;
 | 
			
		||||
 | 
			
		||||
    return Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
PanoramiXCompositeGetOverlayWindow (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    REQUEST(xCompositeGetOverlayWindowReq);
 | 
			
		||||
    xCompositeGetOverlayWindowReply rep;
 | 
			
		||||
    WindowPtr pWin;
 | 
			
		||||
    ScreenPtr pScreen;
 | 
			
		||||
    CompScreenPtr cs;
 | 
			
		||||
    CompOverlayClientPtr pOc;
 | 
			
		||||
    int rc;
 | 
			
		||||
    PanoramiXRes *win, *overlayWin = NULL;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH(xCompositeGetOverlayWindowReq);
 | 
			
		||||
 | 
			
		||||
    if ((rc = dixLookupResourceByType((void **)&win, stuff->window, XRT_WINDOW,
 | 
			
		||||
				      client, DixUnknownAccess))) {
 | 
			
		||||
	client->errorValue = stuff->window;
 | 
			
		||||
	return rc;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    cs = GetCompScreen(screenInfo.screens[0]);
 | 
			
		||||
    if (!cs->pOverlayWin)
 | 
			
		||||
    {
 | 
			
		||||
	if(!(overlayWin = malloc(sizeof(PanoramiXRes))))
 | 
			
		||||
	    return BadAlloc;
 | 
			
		||||
 | 
			
		||||
	overlayWin->type = XRT_WINDOW;
 | 
			
		||||
	overlayWin->u.win.root = FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_BACKWARD(i) {
 | 
			
		||||
	rc = dixLookupResourceByType((pointer *)&pWin, win->info[i].id,
 | 
			
		||||
				     RT_WINDOW, client, DixGetAttrAccess);
 | 
			
		||||
	if (rc != Success)
 | 
			
		||||
	{
 | 
			
		||||
	    client->errorValue = stuff->window;
 | 
			
		||||
	    return rc;
 | 
			
		||||
	}
 | 
			
		||||
	pScreen = pWin->drawable.pScreen;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Create an OverlayClient structure to mark this client's
 | 
			
		||||
	 * interest in the overlay window
 | 
			
		||||
	 */
 | 
			
		||||
	pOc = compCreateOverlayClient(pScreen, client);
 | 
			
		||||
	if (pOc == NULL)
 | 
			
		||||
	    return BadAlloc;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Make sure the overlay window exists
 | 
			
		||||
	 */
 | 
			
		||||
	cs = GetCompScreen(pScreen);
 | 
			
		||||
	if (cs->pOverlayWin == NULL)
 | 
			
		||||
	    if (!compCreateOverlayWindow(pScreen))
 | 
			
		||||
	    {
 | 
			
		||||
		FreeResource (pOc->resource, RT_NONE);
 | 
			
		||||
		return BadAlloc;
 | 
			
		||||
	    }
 | 
			
		||||
 | 
			
		||||
	rc = XaceHook(XACE_RESOURCE_ACCESS, client,
 | 
			
		||||
		      cs->pOverlayWin->drawable.id,
 | 
			
		||||
		      RT_WINDOW, cs->pOverlayWin, RT_NONE, NULL,
 | 
			
		||||
		      DixGetAttrAccess);
 | 
			
		||||
	if (rc != Success)
 | 
			
		||||
	{
 | 
			
		||||
	    FreeResource (pOc->resource, RT_NONE);
 | 
			
		||||
	    return rc;
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (overlayWin)
 | 
			
		||||
    {
 | 
			
		||||
	FOR_NSCREENS(i) {
 | 
			
		||||
	    cs = GetCompScreen(screenInfo.screens[i]);
 | 
			
		||||
	    overlayWin->info[i].id = cs->pOverlayWin->drawable.id;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	AddResource(overlayWin->info[0].id, XRT_WINDOW, overlayWin);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    cs = GetCompScreen(screenInfo.screens[0]);
 | 
			
		||||
 | 
			
		||||
    rep.type = X_Reply;
 | 
			
		||||
    rep.sequenceNumber = client->sequence;
 | 
			
		||||
    rep.length = 0;
 | 
			
		||||
    rep.overlayWin = cs->pOverlayWin->drawable.id;
 | 
			
		||||
 | 
			
		||||
    if (client->swapped)
 | 
			
		||||
    {
 | 
			
		||||
	int n;
 | 
			
		||||
	swaps(&rep.sequenceNumber, n);
 | 
			
		||||
	swapl(&rep.length, n);
 | 
			
		||||
	swapl(&rep.overlayWin, n);
 | 
			
		||||
    }
 | 
			
		||||
    (void) WriteToClient(client, sz_xCompositeGetOverlayWindowReply, (char *)&rep);
 | 
			
		||||
 | 
			
		||||
    return Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
PanoramiXCompositeReleaseOverlayWindow (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    REQUEST(xCompositeReleaseOverlayWindowReq);
 | 
			
		||||
    WindowPtr pWin;
 | 
			
		||||
    ScreenPtr pScreen;
 | 
			
		||||
    CompOverlayClientPtr pOc;
 | 
			
		||||
    PanoramiXRes *win;
 | 
			
		||||
    int i, rc;
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH(xCompositeReleaseOverlayWindowReq);
 | 
			
		||||
 | 
			
		||||
    if ((rc = dixLookupResourceByType((void **)&win, stuff->window, XRT_WINDOW,
 | 
			
		||||
				      client, DixUnknownAccess))) {
 | 
			
		||||
	client->errorValue = stuff->window;
 | 
			
		||||
	return rc;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_BACKWARD(i) {
 | 
			
		||||
	if ((rc = dixLookupResourceByType((void **)&pWin, win->info[i].id,
 | 
			
		||||
					  XRT_WINDOW, client,
 | 
			
		||||
					  DixUnknownAccess))) {
 | 
			
		||||
	    client->errorValue = stuff->window;
 | 
			
		||||
	    return rc;
 | 
			
		||||
	}
 | 
			
		||||
	pScreen = pWin->drawable.pScreen;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Has client queried a reference to the overlay window
 | 
			
		||||
	 * on this screen? If not, generate an error.
 | 
			
		||||
	 */
 | 
			
		||||
	pOc = compFindOverlayClient (pWin->drawable.pScreen, client);
 | 
			
		||||
	if (pOc == NULL)
 | 
			
		||||
	    return BadMatch;
 | 
			
		||||
 | 
			
		||||
	/* The delete function will free the client structure */
 | 
			
		||||
	FreeResource (pOc->resource, RT_NONE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
PanoramiXCompositeInit (void)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < CompositeNumberRequests; i++)
 | 
			
		||||
	PanoramiXSaveCompositeVector[i] = ProcCompositeVector[i];
 | 
			
		||||
    /*
 | 
			
		||||
     * Stuff in Xinerama aware request processing hooks
 | 
			
		||||
     */
 | 
			
		||||
    ProcCompositeVector[X_CompositeRedirectWindow] =
 | 
			
		||||
	PanoramiXCompositeRedirectWindow;
 | 
			
		||||
    ProcCompositeVector[X_CompositeRedirectSubwindows] =
 | 
			
		||||
	PanoramiXCompositeRedirectSubwindows;
 | 
			
		||||
    ProcCompositeVector[X_CompositeUnredirectWindow] =
 | 
			
		||||
	PanoramiXCompositeUnredirectWindow;
 | 
			
		||||
    ProcCompositeVector[X_CompositeUnredirectSubwindows] =
 | 
			
		||||
	PanoramiXCompositeUnredirectSubwindows;
 | 
			
		||||
    ProcCompositeVector[X_CompositeNameWindowPixmap] =
 | 
			
		||||
	PanoramiXCompositeNameWindowPixmap;
 | 
			
		||||
    ProcCompositeVector[X_CompositeGetOverlayWindow] =
 | 
			
		||||
	PanoramiXCompositeGetOverlayWindow;
 | 
			
		||||
    ProcCompositeVector[X_CompositeReleaseOverlayWindow] =
 | 
			
		||||
	PanoramiXCompositeReleaseOverlayWindow;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
PanoramiXCompositeReset (void)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < CompositeNumberRequests; i++)
 | 
			
		||||
	ProcCompositeVector[i] = PanoramiXSaveCompositeVector[i];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -326,4 +326,7 @@ int
 | 
			
		|||
compConfigNotify(WindowPtr pWin, int x, int y, int w, int h,
 | 
			
		||||
		 int bw, WindowPtr pSib);
 | 
			
		||||
 | 
			
		||||
void PanoramiXCompositeInit (void);
 | 
			
		||||
void PanoramiXCompositeReset (void);
 | 
			
		||||
 | 
			
		||||
#endif /* _COMPINT_H_ */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,6 +48,10 @@
 | 
			
		|||
#include "compint.h"
 | 
			
		||||
#include "xace.h"
 | 
			
		||||
 | 
			
		||||
#ifdef PANORAMIX
 | 
			
		||||
#include "panoramiXsrv.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* 
 | 
			
		||||
 * Delete the given overlay client list element from its screen list.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -128,10 +132,19 @@ compCreateOverlayWindow (ScreenPtr pScreen)
 | 
			
		|||
    WindowPtr	    pWin;
 | 
			
		||||
    XID		    attrs[] = { None, TRUE }; /* backPixmap, overrideRedirect */
 | 
			
		||||
    int		    result;
 | 
			
		||||
    int		    w = pScreen->width;
 | 
			
		||||
    int		    h = pScreen->height;
 | 
			
		||||
 | 
			
		||||
#ifdef PANORAMIX
 | 
			
		||||
    if (!noPanoramiXExtension)
 | 
			
		||||
    {
 | 
			
		||||
	w = PanoramiXPixWidth;
 | 
			
		||||
	h = PanoramiXPixHeight;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    pWin = cs->pOverlayWin = 
 | 
			
		||||
	CreateWindow (cs->overlayWid, pRoot,
 | 
			
		||||
		      0, 0, pScreen->width, pScreen->height, 0, 
 | 
			
		||||
	CreateWindow (cs->overlayWid, pRoot, 0, 0, w, h, 0,
 | 
			
		||||
		      InputOutput, CWBackPixmap | CWOverrideRedirect, &attrs[0],
 | 
			
		||||
		      pRoot->drawable.depth, 
 | 
			
		||||
		      serverClient, pScreen->rootVisual, &result);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,6 +47,10 @@
 | 
			
		|||
 | 
			
		||||
#include "compint.h"
 | 
			
		||||
 | 
			
		||||
#ifdef PANORAMIX
 | 
			
		||||
#include "panoramiXsrv.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef COMPOSITE_DEBUG
 | 
			
		||||
static int
 | 
			
		||||
compCheckWindow (WindowPtr pWin, pointer data)
 | 
			
		||||
| 
						 | 
				
			
			@ -172,16 +176,26 @@ updateOverlayWindow(ScreenPtr pScreen)
 | 
			
		|||
	CompScreenPtr cs;
 | 
			
		||||
	WindowPtr pWin; /* overlay window */
 | 
			
		||||
	XID vlist[2];
 | 
			
		||||
	int w = pScreen->width;
 | 
			
		||||
	int h = pScreen->height;
 | 
			
		||||
 | 
			
		||||
#ifdef PANORAMIX
 | 
			
		||||
	if (!noPanoramiXExtension)
 | 
			
		||||
	{
 | 
			
		||||
	    w = PanoramiXPixWidth;
 | 
			
		||||
	    h = PanoramiXPixHeight;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	cs = GetCompScreen(pScreen);
 | 
			
		||||
	if ((pWin = cs->pOverlayWin) != NULL) {
 | 
			
		||||
		if ((pWin->drawable.width == pScreen->width) &&
 | 
			
		||||
			(pWin->drawable.height == pScreen->height))
 | 
			
		||||
		if ((pWin->drawable.width == w) &&
 | 
			
		||||
			(pWin->drawable.height == h))
 | 
			
		||||
			return Success;
 | 
			
		||||
 | 
			
		||||
		/* Let's resize the overlay window. */
 | 
			
		||||
		vlist[0] = pScreen->width;
 | 
			
		||||
		vlist[1] = pScreen->height;
 | 
			
		||||
		vlist[0] = w;
 | 
			
		||||
		vlist[1] = h;
 | 
			
		||||
		return ConfigureWindow(pWin, CWWidth | CWHeight, vlist, wClient(pWin));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1980,7 +1980,7 @@ if test "x$DMX" = xyes; then
 | 
			
		|||
	fi
 | 
			
		||||
	DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC"
 | 
			
		||||
	XDMX_CFLAGS="$DMXMODULES_CFLAGS"
 | 
			
		||||
	XDMX_LIBS="$FB_LIB $MI_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $XEXT_LIB $MAIN_LIB $DIX_LIB $OS_LIB $FIXES_LIB"
 | 
			
		||||
	XDMX_LIBS="$FB_LIB $MI_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $XEXT_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
 | 
			
		||||
	XDMX_SYS_LIBS="$DMXMODULES_LIBS"
 | 
			
		||||
	AC_SUBST([XDMX_CFLAGS])
 | 
			
		||||
	AC_SUBST([XDMX_LIBS])
 | 
			
		||||
| 
						 | 
				
			
			@ -2230,7 +2230,6 @@ hw/xfree86/os-support/misc/Makefile
 | 
			
		|||
hw/xfree86/os-support/linux/Makefile
 | 
			
		||||
hw/xfree86/os-support/sco/Makefile
 | 
			
		||||
hw/xfree86/os-support/solaris/Makefile
 | 
			
		||||
hw/xfree86/os-support/sysv/Makefile
 | 
			
		||||
hw/xfree86/parser/Makefile
 | 
			
		||||
hw/xfree86/ramdac/Makefile
 | 
			
		||||
hw/xfree86/shadowfb/Makefile
 | 
			
		||||
| 
						 | 
				
			
			@ -2238,7 +2237,6 @@ hw/xfree86/vbe/Makefile
 | 
			
		|||
hw/xfree86/vgahw/Makefile
 | 
			
		||||
hw/xfree86/x86emu/Makefile
 | 
			
		||||
hw/xfree86/xaa/Makefile
 | 
			
		||||
hw/xfree86/xf8_16bpp/Makefile
 | 
			
		||||
hw/xfree86/utils/Makefile
 | 
			
		||||
hw/xfree86/utils/cvt/Makefile
 | 
			
		||||
hw/xfree86/utils/gtf/Makefile
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,7 +68,6 @@ libglx_la_SOURCES = \
 | 
			
		|||
	indirect_program.c \
 | 
			
		||||
	indirect_table.h \
 | 
			
		||||
	indirect_texture_compression.c \
 | 
			
		||||
        g_disptab.h \
 | 
			
		||||
        glxbyteorder.h \
 | 
			
		||||
        glxcmds.c \
 | 
			
		||||
        glxcmdsswap.c \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,52 +0,0 @@
 | 
			
		|||
/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED */
 | 
			
		||||
#ifdef HAVE_DIX_CONFIG_H
 | 
			
		||||
#include <dix-config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef _GLX_g_disptab_h_
 | 
			
		||||
#define _GLX_g_disptab_h_
 | 
			
		||||
/*
 | 
			
		||||
 * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
 | 
			
		||||
 * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice including the dates of first publication and
 | 
			
		||||
 * either this permission notice or a reference to
 | 
			
		||||
 * http://oss.sgi.com/projects/FreeB/
 | 
			
		||||
 * shall be included in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 | 
			
		||||
 * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 | 
			
		||||
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
 | 
			
		||||
 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
 * SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 * Except as contained in this notice, the name of Silicon Graphics, Inc.
 | 
			
		||||
 * shall not be used in advertising or otherwise to promote the sale, use or
 | 
			
		||||
 * other dealings in this Software without prior written authorization from
 | 
			
		||||
 * Silicon Graphics, Inc.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
extern int __glXDisp_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDisp_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDisp_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDisp_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDisp_QueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDisp_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
 | 
			
		||||
extern int __glXDispSwap_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDispSwap_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDispSwap_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDispSwap_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDispSwap_QueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
extern int __glXDispSwap_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
 | 
			
		||||
 | 
			
		||||
#endif /* _GLX_g_disptab_h_ */
 | 
			
		||||
							
								
								
									
										233
									
								
								glx/glxcmds.c
								
								
								
								
							
							
						
						
									
										233
									
								
								glx/glxcmds.c
								
								
								
								
							| 
						 | 
				
			
			@ -38,7 +38,6 @@
 | 
			
		|||
#include "glxserver.h"
 | 
			
		||||
#include <GL/glxtokens.h>
 | 
			
		||||
#include <unpack.h>
 | 
			
		||||
#include "g_disptab.h"
 | 
			
		||||
#include <pixmapstr.h>
 | 
			
		||||
#include <windowstr.h>
 | 
			
		||||
#include "glxutil.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -2061,238 +2060,6 @@ int __glXDisp_RenderLarge(__GLXclientState *cl, GLbyte *pc)
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extern RESTYPE __glXSwapBarrierRes;
 | 
			
		||||
 | 
			
		||||
int __glXDisp_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc)
 | 
			
		||||
{
 | 
			
		||||
    ClientPtr client = cl->client;
 | 
			
		||||
    xGLXBindSwapBarrierSGIXReq *req = (xGLXBindSwapBarrierSGIXReq *) pc;
 | 
			
		||||
    XID drawable = req->drawable;
 | 
			
		||||
    int barrier = req->barrier;
 | 
			
		||||
    DrawablePtr pDraw;
 | 
			
		||||
    int screen, rc;
 | 
			
		||||
    __GLXscreen *pGlxScreen;
 | 
			
		||||
 | 
			
		||||
    rc = dixLookupDrawable(&pDraw, drawable, client, 0, DixGetAttrAccess);
 | 
			
		||||
    pGlxScreen = glxGetScreen(pDraw->pScreen);
 | 
			
		||||
    if (rc == Success && (pDraw->type == DRAWABLE_WINDOW)) {
 | 
			
		||||
	screen = pDraw->pScreen->myNum;
 | 
			
		||||
        if (pGlxScreen->swapBarrierFuncs) {
 | 
			
		||||
            int ret = pGlxScreen->swapBarrierFuncs->bindSwapBarrierFunc(screen, drawable, barrier);
 | 
			
		||||
            if (ret == Success) {
 | 
			
		||||
                if (barrier)
 | 
			
		||||
                    /* add source for cleanup when drawable is gone */
 | 
			
		||||
                    AddResource(drawable, __glXSwapBarrierRes, (pointer)(intptr_t)screen);
 | 
			
		||||
                else
 | 
			
		||||
                    /* delete source */
 | 
			
		||||
                    FreeResourceByType(drawable, __glXSwapBarrierRes, FALSE);
 | 
			
		||||
            }
 | 
			
		||||
            return ret;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    client->errorValue = drawable;
 | 
			
		||||
    return __glXError(GLXBadDrawable);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int __glXDisp_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc)
 | 
			
		||||
{
 | 
			
		||||
    ClientPtr client = cl->client;
 | 
			
		||||
    xGLXQueryMaxSwapBarriersSGIXReq *req =
 | 
			
		||||
                                    (xGLXQueryMaxSwapBarriersSGIXReq *) pc;
 | 
			
		||||
    xGLXQueryMaxSwapBarriersSGIXReply reply;
 | 
			
		||||
    int screen = req->screen;
 | 
			
		||||
    __GLXscreen *pGlxScreen;
 | 
			
		||||
 | 
			
		||||
    pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
 | 
			
		||||
    if (pGlxScreen->swapBarrierFuncs)
 | 
			
		||||
        reply.max = pGlxScreen->swapBarrierFuncs->queryMaxSwapBarriersFunc(screen);
 | 
			
		||||
    else
 | 
			
		||||
        reply.max = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    reply.length = 0;
 | 
			
		||||
    reply.type = X_Reply;
 | 
			
		||||
    reply.sequenceNumber = client->sequence;
 | 
			
		||||
 | 
			
		||||
    if (client->swapped) {
 | 
			
		||||
        __GLX_DECLARE_SWAP_VARIABLES;
 | 
			
		||||
        __GLX_SWAP_SHORT(&reply.sequenceNumber);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    WriteToClient(client, sz_xGLXQueryMaxSwapBarriersSGIXReply,
 | 
			
		||||
                        (char *) &reply);
 | 
			
		||||
    return Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GLX_BAD_HYPERPIPE_SGIX 92
 | 
			
		||||
 | 
			
		||||
int __glXDisp_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc)
 | 
			
		||||
{
 | 
			
		||||
    ClientPtr client = cl->client;
 | 
			
		||||
    xGLXQueryHyperpipeNetworkSGIXReq * req = (xGLXQueryHyperpipeNetworkSGIXReq *) pc;
 | 
			
		||||
    xGLXQueryHyperpipeNetworkSGIXReply reply;
 | 
			
		||||
    int screen = req->screen;
 | 
			
		||||
    void *rdata = NULL;
 | 
			
		||||
 | 
			
		||||
    int length=0;
 | 
			
		||||
    int npipes=0;
 | 
			
		||||
 | 
			
		||||
    int n= 0;
 | 
			
		||||
    __GLXscreen *pGlxScreen;
 | 
			
		||||
 | 
			
		||||
    pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
 | 
			
		||||
    if (pGlxScreen->hyperpipeFuncs) {
 | 
			
		||||
        rdata =
 | 
			
		||||
            (pGlxScreen->hyperpipeFuncs->queryHyperpipeNetworkFunc(screen, &npipes, &n));
 | 
			
		||||
    }
 | 
			
		||||
    length = __GLX_PAD(n) >> 2;
 | 
			
		||||
    reply.type = X_Reply;
 | 
			
		||||
    reply.sequenceNumber = client->sequence;
 | 
			
		||||
    reply.length = length;
 | 
			
		||||
    reply.n = n;
 | 
			
		||||
    reply.npipes = npipes;
 | 
			
		||||
 | 
			
		||||
    if (client->swapped) {
 | 
			
		||||
        __GLX_DECLARE_SWAP_VARIABLES;
 | 
			
		||||
        __GLX_SWAP_SHORT(&reply.sequenceNumber);
 | 
			
		||||
        __GLX_SWAP_INT(&reply.length);
 | 
			
		||||
        __GLX_SWAP_INT(&reply.n);
 | 
			
		||||
        __GLX_SWAP_INT(&reply.npipes);
 | 
			
		||||
    }
 | 
			
		||||
    WriteToClient(client, sz_xGLXQueryHyperpipeNetworkSGIXReply,
 | 
			
		||||
                  (char *) &reply);
 | 
			
		||||
 | 
			
		||||
    WriteToClient(client, length << 2, (char *)rdata);
 | 
			
		||||
 | 
			
		||||
    return Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int __glXDisp_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc)
 | 
			
		||||
{
 | 
			
		||||
    ClientPtr client = cl->client;
 | 
			
		||||
    xGLXDestroyHyperpipeConfigSGIXReq * req =
 | 
			
		||||
        (xGLXDestroyHyperpipeConfigSGIXReq *) pc;
 | 
			
		||||
    xGLXDestroyHyperpipeConfigSGIXReply reply;
 | 
			
		||||
    int screen = req->screen;
 | 
			
		||||
    int  success = GLX_BAD_HYPERPIPE_SGIX;
 | 
			
		||||
    int hpId ;
 | 
			
		||||
    __GLXscreen *pGlxScreen;
 | 
			
		||||
 | 
			
		||||
    hpId = req->hpId;
 | 
			
		||||
 | 
			
		||||
    pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
 | 
			
		||||
    if (pGlxScreen->hyperpipeFuncs) {
 | 
			
		||||
        success = pGlxScreen->hyperpipeFuncs->destroyHyperpipeConfigFunc(screen, hpId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    reply.type = X_Reply;
 | 
			
		||||
    reply.sequenceNumber = client->sequence;
 | 
			
		||||
    reply.length = __GLX_PAD(0) >> 2;
 | 
			
		||||
    reply.n = 0;
 | 
			
		||||
    reply.success = success;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if (client->swapped) {
 | 
			
		||||
        __GLX_DECLARE_SWAP_VARIABLES;
 | 
			
		||||
        __GLX_SWAP_SHORT(&reply.sequenceNumber);
 | 
			
		||||
    }
 | 
			
		||||
    WriteToClient(client,
 | 
			
		||||
                  sz_xGLXDestroyHyperpipeConfigSGIXReply,
 | 
			
		||||
                  (char *) &reply);
 | 
			
		||||
    return Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int __glXDisp_QueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc)
 | 
			
		||||
{
 | 
			
		||||
    ClientPtr client = cl->client;
 | 
			
		||||
    xGLXQueryHyperpipeConfigSGIXReq * req =
 | 
			
		||||
        (xGLXQueryHyperpipeConfigSGIXReq *) pc;
 | 
			
		||||
    xGLXQueryHyperpipeConfigSGIXReply reply;
 | 
			
		||||
    int screen = req->screen;
 | 
			
		||||
    void *rdata = NULL;
 | 
			
		||||
    int length;
 | 
			
		||||
    int npipes=0;
 | 
			
		||||
    int n= 0;
 | 
			
		||||
    int hpId;
 | 
			
		||||
    __GLXscreen *pGlxScreen;
 | 
			
		||||
 | 
			
		||||
    hpId = req->hpId;
 | 
			
		||||
 | 
			
		||||
    pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
 | 
			
		||||
    if (pGlxScreen->hyperpipeFuncs) {
 | 
			
		||||
        rdata = pGlxScreen->hyperpipeFuncs->queryHyperpipeConfigFunc(screen, hpId,&npipes, &n);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    length = __GLX_PAD(n) >> 2;
 | 
			
		||||
    reply.type = X_Reply;
 | 
			
		||||
    reply.sequenceNumber = client->sequence;
 | 
			
		||||
    reply.length = length;
 | 
			
		||||
    reply.n = n;
 | 
			
		||||
    reply.npipes = npipes;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if (client->swapped) {
 | 
			
		||||
        __GLX_DECLARE_SWAP_VARIABLES;
 | 
			
		||||
        __GLX_SWAP_SHORT(&reply.sequenceNumber);
 | 
			
		||||
        __GLX_SWAP_INT(&reply.length);
 | 
			
		||||
        __GLX_SWAP_INT(&reply.n);
 | 
			
		||||
        __GLX_SWAP_INT(&reply.npipes);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    WriteToClient(client, sz_xGLXQueryHyperpipeConfigSGIXReply,
 | 
			
		||||
                  (char *) &reply);
 | 
			
		||||
 | 
			
		||||
    WriteToClient(client, length << 2, (char *)rdata);
 | 
			
		||||
 | 
			
		||||
    return Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int __glXDisp_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc)
 | 
			
		||||
{
 | 
			
		||||
    ClientPtr client = cl->client;
 | 
			
		||||
    xGLXHyperpipeConfigSGIXReq * req =
 | 
			
		||||
        (xGLXHyperpipeConfigSGIXReq *) pc;
 | 
			
		||||
    xGLXHyperpipeConfigSGIXReply reply;
 | 
			
		||||
    int screen = req->screen;
 | 
			
		||||
    void *rdata;
 | 
			
		||||
 | 
			
		||||
    int npipes=0, networkId;
 | 
			
		||||
    int hpId=-1;
 | 
			
		||||
    __GLXscreen *pGlxScreen;
 | 
			
		||||
 | 
			
		||||
    pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
 | 
			
		||||
    networkId = (int)req->networkId;
 | 
			
		||||
    npipes = (int)req->npipes;
 | 
			
		||||
    rdata = (void *)(req +1);
 | 
			
		||||
 | 
			
		||||
    if (pGlxScreen->hyperpipeFuncs) {
 | 
			
		||||
        pGlxScreen->hyperpipeFuncs->hyperpipeConfigFunc(screen,networkId,
 | 
			
		||||
                                                        &hpId, &npipes,
 | 
			
		||||
                                                        (void *) rdata);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    reply.type = X_Reply;
 | 
			
		||||
    reply.sequenceNumber = client->sequence;
 | 
			
		||||
    reply.length = __GLX_PAD(0) >> 2;
 | 
			
		||||
    reply.n = 0;
 | 
			
		||||
    reply.npipes = npipes;
 | 
			
		||||
    reply.hpId = hpId;
 | 
			
		||||
 | 
			
		||||
    if (client->swapped) {
 | 
			
		||||
        __GLX_DECLARE_SWAP_VARIABLES;
 | 
			
		||||
        __GLX_SWAP_SHORT(&reply.sequenceNumber);
 | 
			
		||||
        __GLX_SWAP_INT(&reply.npipes);
 | 
			
		||||
        __GLX_SWAP_INT(&reply.hpId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    WriteToClient(client, sz_xGLXHyperpipeConfigSGIXReply,
 | 
			
		||||
                  (char *) &reply);
 | 
			
		||||
 | 
			
		||||
    return Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,6 @@
 | 
			
		|||
#include "glxutil.h"
 | 
			
		||||
#include <GL/glxtokens.h>
 | 
			
		||||
#include <unpack.h>
 | 
			
		||||
#include "g_disptab.h"
 | 
			
		||||
#include <pixmapstr.h>
 | 
			
		||||
#include <windowstr.h>
 | 
			
		||||
#include "glxext.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,7 +56,6 @@
 | 
			
		|||
#include "glxutil.h"
 | 
			
		||||
#include "glxdricommon.h"
 | 
			
		||||
 | 
			
		||||
#include "g_disptab.h"
 | 
			
		||||
#include "glapitable.h"
 | 
			
		||||
#include "glapi.h"
 | 
			
		||||
#include "glthread.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,7 +48,6 @@
 | 
			
		|||
#include "glxutil.h"
 | 
			
		||||
#include "glxdricommon.h"
 | 
			
		||||
 | 
			
		||||
#include "g_disptab.h"
 | 
			
		||||
#include "glapitable.h"
 | 
			
		||||
#include "glapi.h"
 | 
			
		||||
#include "glthread.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,7 +48,6 @@
 | 
			
		|||
#include "glxutil.h"
 | 
			
		||||
#include "glxdricommon.h"
 | 
			
		||||
 | 
			
		||||
#include "g_disptab.h"
 | 
			
		||||
#include "glapitable.h"
 | 
			
		||||
#include "glapi.h"
 | 
			
		||||
#include "glthread.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										19
									
								
								glx/glxext.c
								
								
								
								
							
							
						
						
									
										19
									
								
								glx/glxext.c
								
								
								
								
							| 
						 | 
				
			
			@ -39,7 +39,6 @@
 | 
			
		|||
#include <registry.h>
 | 
			
		||||
#include "privates.h"
 | 
			
		||||
#include <os.h>
 | 
			
		||||
#include "g_disptab.h"
 | 
			
		||||
#include "unpack.h"
 | 
			
		||||
#include "glxutil.h"
 | 
			
		||||
#include "glxext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +57,6 @@ __GLXcontext *__glXContextList;
 | 
			
		|||
*/
 | 
			
		||||
RESTYPE __glXContextRes;
 | 
			
		||||
RESTYPE __glXDrawableRes;
 | 
			
		||||
RESTYPE __glXSwapBarrierRes;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Reply for most singles.
 | 
			
		||||
| 
						 | 
				
			
			@ -228,19 +226,6 @@ GLboolean __glXFreeContext(__GLXcontext *cx)
 | 
			
		|||
    return GL_TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extern RESTYPE __glXSwapBarrierRes;
 | 
			
		||||
 | 
			
		||||
static int SwapBarrierGone(int screen, XID drawable)
 | 
			
		||||
{
 | 
			
		||||
    __GLXscreen *pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
 | 
			
		||||
 | 
			
		||||
    if (pGlxScreen->swapBarrierFuncs) {
 | 
			
		||||
        pGlxScreen->swapBarrierFuncs->bindSwapBarrierFunc(screen, drawable, 0);
 | 
			
		||||
    }
 | 
			
		||||
    FreeResourceByType(drawable, __glXSwapBarrierRes, FALSE);
 | 
			
		||||
    return True;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -358,9 +343,7 @@ void GlxExtensionInit(void)
 | 
			
		|||
					    "GLXContext");
 | 
			
		||||
    __glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone,
 | 
			
		||||
					     "GLXDrawable");
 | 
			
		||||
    __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone,
 | 
			
		||||
						"GLXSwapBarrier");
 | 
			
		||||
    if (!__glXContextRes || !__glXDrawableRes || !__glXSwapBarrierRes)
 | 
			
		||||
    if (!__glXContextRes || !__glXDrawableRes)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
    if (!dixRegisterPrivateKey(&glxClientPrivateKeyRec, PRIVATE_CLIENT, sizeof (__GLXclientState)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -175,8 +175,6 @@ static char GLXServerExtensions[] =
 | 
			
		|||
			"GLX_SGI_make_current_read "
 | 
			
		||||
#ifndef __APPLE__
 | 
			
		||||
			"GLX_SGIS_multisample "
 | 
			
		||||
                        "GLX_SGIX_hyperpipe "
 | 
			
		||||
                        "GLX_SGIX_swap_barrier "
 | 
			
		||||
#endif
 | 
			
		||||
			"GLX_SGIX_fbconfig "
 | 
			
		||||
			"GLX_SGIX_pbuffer "
 | 
			
		||||
| 
						 | 
				
			
			@ -184,31 +182,6 @@ static char GLXServerExtensions[] =
 | 
			
		|||
                        "GLX_INTEL_swap_event"
 | 
			
		||||
			;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * If your DDX driver wants to register support for swap barriers or hyperpipe
 | 
			
		||||
 * topology, it should call __glXHyperpipeInit() or __glXSwapBarrierInit()
 | 
			
		||||
 * with a dispatch table of functions to handle the requests.   In the XFree86
 | 
			
		||||
 * DDX, for example, you would call these near the bottom of the driver's
 | 
			
		||||
 * ScreenInit method, after DRI has been initialized.
 | 
			
		||||
 *
 | 
			
		||||
 * This should be replaced with a better method when we teach the server how
 | 
			
		||||
 * to load DRI drivers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
void __glXHyperpipeInit(int screen, __GLXHyperpipeExtensionFuncs *funcs)
 | 
			
		||||
{
 | 
			
		||||
    __GLXscreen *pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
 | 
			
		||||
 | 
			
		||||
    pGlxScreen->hyperpipeFuncs = funcs;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __glXSwapBarrierInit(int screen, __GLXSwapBarrierExtensionFuncs *funcs)
 | 
			
		||||
{
 | 
			
		||||
    __GLXscreen *pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
 | 
			
		||||
 | 
			
		||||
    pGlxScreen->swapBarrierFuncs = funcs;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static Bool
 | 
			
		||||
glxCloseScreen (int index, ScreenPtr pScreen)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,21 +35,6 @@
 | 
			
		|||
 * Silicon Graphics, Inc.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    void * (* queryHyperpipeNetworkFunc)(int, int *, int *);
 | 
			
		||||
    void * (* queryHyperpipeConfigFunc)(int, int, int *, int *);
 | 
			
		||||
    int    (* destroyHyperpipeConfigFunc)(int, int);
 | 
			
		||||
    void * (* hyperpipeConfigFunc)(int, int, int *, int *, void *);
 | 
			
		||||
} __GLXHyperpipeExtensionFuncs;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    int    (* bindSwapBarrierFunc)(int, XID, int);
 | 
			
		||||
    int    (* queryMaxSwapBarriersFunc)(int);
 | 
			
		||||
} __GLXSwapBarrierExtensionFuncs;
 | 
			
		||||
 | 
			
		||||
void __glXHyperpipeInit(int screen, __GLXHyperpipeExtensionFuncs *funcs);
 | 
			
		||||
void __glXSwapBarrierInit(int screen, __GLXSwapBarrierExtensionFuncs *funcs);
 | 
			
		||||
 | 
			
		||||
typedef struct __GLXconfig __GLXconfig;
 | 
			
		||||
struct __GLXconfig {
 | 
			
		||||
    __GLXconfig *next;
 | 
			
		||||
| 
						 | 
				
			
			@ -144,9 +129,6 @@ struct __GLXscreen {
 | 
			
		|||
    int            (*swapInterval)  (__GLXdrawable *drawable,
 | 
			
		||||
				     int interval);
 | 
			
		||||
 | 
			
		||||
    __GLXHyperpipeExtensionFuncs *hyperpipeFuncs;
 | 
			
		||||
    __GLXSwapBarrierExtensionFuncs *swapBarrierFuncs;
 | 
			
		||||
 | 
			
		||||
    ScreenPtr pScreen;
 | 
			
		||||
 | 
			
		||||
    /* Linked list of valid fbconfigs for this screen. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,6 @@
 | 
			
		|||
#include "glxext.h"
 | 
			
		||||
#include "indirect_dispatch.h"
 | 
			
		||||
#include "indirect_reqsize.h"
 | 
			
		||||
#include "g_disptab.h"
 | 
			
		||||
#include "indirect_table.h"
 | 
			
		||||
 | 
			
		||||
/*****************************************************************/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,6 @@
 | 
			
		|||
#include "glxserver.h"
 | 
			
		||||
#include "glxutil.h"
 | 
			
		||||
#include "unpack.h"
 | 
			
		||||
#include "g_disptab.h"
 | 
			
		||||
#include "glapitable.h"
 | 
			
		||||
#include "glapi.h"
 | 
			
		||||
#include "glthread.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1011,8 +1011,6 @@ void dmxValidatePicture(PicturePtr pPicture, Mask mask)
 | 
			
		|||
	    attribs.poly_edge = pPicture->polyEdge;
 | 
			
		||||
	if (mask & CPPolyMode)
 | 
			
		||||
	    attribs.poly_mode = pPicture->polyMode;
 | 
			
		||||
	if (mask & CPDither)
 | 
			
		||||
	    attribs.dither = pPicture->dither;
 | 
			
		||||
	if (mask & CPComponentAlpha)
 | 
			
		||||
	    attribs.component_alpha = pPicture->componentAlpha;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -283,8 +283,6 @@ Bool dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[])
 | 
			
		|||
    if (dmxShadowFB && !shadowInit(pScreen, dmxShadowUpdateProc, NULL))
 | 
			
		||||
	return FALSE;
 | 
			
		||||
 | 
			
		||||
    miInitializeBackingStore(pScreen);
 | 
			
		||||
 | 
			
		||||
    if (dmxShadowFB) {
 | 
			
		||||
	miDCInitialize(pScreen, &dmxPointerCursorFuncs);
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1022,12 +1022,6 @@ KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
 | 
			
		|||
    fbInitValidateTree (pScreen);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    pScreen->backingStoreSupport = Always;
 | 
			
		||||
    miInitializeBackingStore (pScreen);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * Wrap CloseScreen, the order now is:
 | 
			
		||||
     *	KdCloseScreen
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -875,13 +875,6 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
 | 
			
		|||
 | 
			
		||||
    if (!ret) return FALSE;
 | 
			
		||||
 | 
			
		||||
    miInitializeBackingStore(pScreen);
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * Circumvent the backing store that was just initialised.  This amounts
 | 
			
		||||
     * to a truely bizarre way of initialising SaveDoomedAreas and friends.
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    pScreen->InstallColormap = vfbInstallColormap;
 | 
			
		||||
    pScreen->UninstallColormap = vfbUninstallColormap;
 | 
			
		||||
    pScreen->ListInstalledColormaps = vfbListInstalledColormaps;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,12 +32,12 @@ DOC_SUBDIR = doc
 | 
			
		|||
 | 
			
		||||
SUBDIRS = common ddc i2c x86emu $(INT10_SUBDIR) fbdevhw os-support parser \
 | 
			
		||||
	  ramdac shadowfb $(VBE_SUBDIR) $(VGAHW_SUBDIR) $(XAA_SUBDIR) \
 | 
			
		||||
	  xf8_16bpp loader dixmods exa modes \
 | 
			
		||||
	  loader dixmods exa modes \
 | 
			
		||||
	  $(DRI_SUBDIR) $(DRI2_SUBDIR) $(XF86UTILS_SUBDIR) $(DOC_SUBDIR)
 | 
			
		||||
 | 
			
		||||
DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
 | 
			
		||||
               parser ramdac shadowfb vbe vgahw xaa \
 | 
			
		||||
               xf8_16bpp loader dixmods dri dri2 exa modes \
 | 
			
		||||
               loader dixmods dri dri2 exa modes \
 | 
			
		||||
	       utils doc
 | 
			
		||||
 | 
			
		||||
bin_PROGRAMS = Xorg
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,9 +62,6 @@ extern _X_EXPORT DevPrivateKeyRec xf86ScreenKeyRec;
 | 
			
		|||
extern _X_EXPORT DevPrivateKeyRec xf86CreateRootWindowKeyRec;
 | 
			
		||||
#define xf86CreateRootWindowKey (&xf86CreateRootWindowKeyRec)
 | 
			
		||||
 | 
			
		||||
extern _X_EXPORT DevPrivateKeyRec xf86PixmapKeyRec;
 | 
			
		||||
#define xf86PixmapKey (&xf86PixmapKeyRec)
 | 
			
		||||
 | 
			
		||||
extern _X_EXPORT ScrnInfoPtr *xf86Screens;	/* List of pointers to ScrnInfoRecs */
 | 
			
		||||
extern _X_EXPORT const unsigned char byte_reversed[256];
 | 
			
		||||
extern _X_EXPORT Bool fbSlotClaimed;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,6 @@
 | 
			
		|||
 | 
			
		||||
DevPrivateKeyRec xf86CreateRootWindowKeyRec;
 | 
			
		||||
DevPrivateKeyRec xf86ScreenKeyRec;
 | 
			
		||||
DevPrivateKeyRec xf86PixmapKeyRec;
 | 
			
		||||
 | 
			
		||||
ScrnInfoPtr *xf86Screens = NULL;	/* List of ScrnInfos */
 | 
			
		||||
const unsigned char byte_reversed[256] =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -732,8 +732,7 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
 | 
			
		|||
	  FatalError("Cannot register DDX private keys");
 | 
			
		||||
 | 
			
		||||
  if (!dixRegisterPrivateKey(&xf86ScreenKeyRec, PRIVATE_SCREEN, 0) ||
 | 
			
		||||
      !dixRegisterPrivateKey(&xf86CreateRootWindowKeyRec, PRIVATE_SCREEN, 0) ||
 | 
			
		||||
      !dixRegisterPrivateKey(&xf86PixmapKeyRec, PRIVATE_PIXMAP, 0))
 | 
			
		||||
      !dixRegisterPrivateKey(&xf86CreateRootWindowKeyRec, PRIVATE_SCREEN, 0))
 | 
			
		||||
      FatalError("Cannot register DDX private keys");
 | 
			
		||||
 | 
			
		||||
  for (i = 0; i < xf86NumScreens; i++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1628,14 +1628,6 @@ Here is what <function>InitOutput()</function> does:
 | 
			
		|||
 | 
			
		||||
	  </blockquote></para></blockquote>
 | 
			
		||||
 | 
			
		||||
      <para>
 | 
			
		||||
    Currently, aperture remapping, as described here, should not be
 | 
			
		||||
    attempted if the driver uses the <literal remap="tt">xf8_16bpp</literal> or
 | 
			
		||||
    <literal remap="tt">xf8_32bpp</literal> framebuffer layers.  A pending
 | 
			
		||||
    restructuring of VT switching will address this restriction in
 | 
			
		||||
    the near future.
 | 
			
		||||
      </para>
 | 
			
		||||
 | 
			
		||||
      <para>
 | 
			
		||||
    Other layers may wrap the <function>ChipEnterVT()</function> and
 | 
			
		||||
    <function>ChipLeaveVT()</function> functions if they need to take some
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -208,12 +208,6 @@ cat > sdksyms.c << EOF
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* hw/xfree86/xf8_16bpp/Makefile.am -- module */
 | 
			
		||||
/*
 | 
			
		||||
#include "cfb8_16.h"
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* mi/Makefile.am */
 | 
			
		||||
#include "micmap.h"
 | 
			
		||||
#include "miline.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -255,8 +249,6 @@ cat > sdksyms.c << EOF
 | 
			
		|||
 | 
			
		||||
/* include/Makefile.am */
 | 
			
		||||
#include "XIstubs.h"
 | 
			
		||||
#include "bstore.h"
 | 
			
		||||
#include "bstorestr.h"
 | 
			
		||||
#include "closestr.h"
 | 
			
		||||
#include "closure.h"
 | 
			
		||||
#include "colormap.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
SUBDIRS = bus @XORG_OS_SUBDIR@ misc $(DRI_SUBDIRS)
 | 
			
		||||
DIST_SUBDIRS = bsd bus misc linux solaris sysv sco hurd
 | 
			
		||||
DIST_SUBDIRS = bsd bus misc linux solaris sco hurd
 | 
			
		||||
 | 
			
		||||
sdk_HEADERS = xf86_OSproc.h xf86_OSlib.h
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,47 +39,14 @@
 | 
			
		|||
#include <sys/stat.h>
 | 
			
		||||
 | 
			
		||||
static Bool KeepTty = FALSE;
 | 
			
		||||
static int VTnum = -1;
 | 
			
		||||
static Bool VTSwitch = TRUE;
 | 
			
		||||
static Bool ShareVTs = FALSE;
 | 
			
		||||
static int activeVT = -1;
 | 
			
		||||
 | 
			
		||||
static int vtPermSave[4];
 | 
			
		||||
static char vtname[11];
 | 
			
		||||
static struct termios tty_attr; /* tty state to restore */
 | 
			
		||||
static int tty_mode; /* kbd mode to restore */
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
saveVtPerms(void)
 | 
			
		||||
{
 | 
			
		||||
    /* We need to use stat to get permissions. */
 | 
			
		||||
    struct stat svtp;
 | 
			
		||||
 | 
			
		||||
    /* Do them numerically ordered, hard coded tty0 first. */
 | 
			
		||||
    if (stat("/dev/tty0", &svtp) != 0)
 | 
			
		||||
	return 0;
 | 
			
		||||
    vtPermSave[0] = (int)svtp.st_uid;
 | 
			
		||||
    vtPermSave[1] = (int)svtp.st_gid;
 | 
			
		||||
 | 
			
		||||
    /* Now check the console we are dealing with. */
 | 
			
		||||
    if (stat(vtname, &svtp) != 0)
 | 
			
		||||
	return 0;
 | 
			
		||||
    vtPermSave[2] = (int)svtp.st_uid;
 | 
			
		||||
    vtPermSave[3] = (int)svtp.st_gid;
 | 
			
		||||
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
restoreVtPerms(void)
 | 
			
		||||
{
 | 
			
		||||
    if (geteuid() == 0) {
 | 
			
		||||
	 /* Set the terminal permissions back to before we started. */
 | 
			
		||||
	 (void)chown("/dev/tty0", vtPermSave[0], vtPermSave[1]);
 | 
			
		||||
	 (void)chown(vtname, vtPermSave[2], vtPermSave[3]);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void *console_handler;
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
| 
						 | 
				
			
			@ -92,6 +59,16 @@ drain_console(int fd, void *closure)
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
switch_to(int vt, const char *from)
 | 
			
		||||
{
 | 
			
		||||
    if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt) < 0)
 | 
			
		||||
        FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
 | 
			
		||||
 | 
			
		||||
    if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt) < 0)
 | 
			
		||||
        FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
xf86OpenConsole(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -112,8 +89,7 @@ xf86OpenConsole(void)
 | 
			
		|||
	/*
 | 
			
		||||
	 * setup the virtual terminal manager
 | 
			
		||||
	 */
 | 
			
		||||
	if (VTnum != -1) {
 | 
			
		||||
	    xf86Info.vtno = VTnum;
 | 
			
		||||
	if (xf86Info.vtno != -1) {
 | 
			
		||||
	    from = X_CMDLINE;
 | 
			
		||||
	} else {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -179,34 +155,6 @@ xf86OpenConsole(void)
 | 
			
		|||
	    FatalError("xf86OpenConsole: Cannot open virtual console"
 | 
			
		||||
		       " %d (%s)\n", xf86Info.vtno, strerror(errno));
 | 
			
		||||
 | 
			
		||||
        if (!ShareVTs)
 | 
			
		||||
        {
 | 
			
		||||
	    /*
 | 
			
		||||
	     * Grab the vt ownership before we overwrite it.
 | 
			
		||||
	     * Hard coded /dev/tty0 into this function as well for below.
 | 
			
		||||
	     */
 | 
			
		||||
	    if (!saveVtPerms())
 | 
			
		||||
	        xf86Msg(X_WARNING,
 | 
			
		||||
		        "xf86OpenConsole: Could not save ownership of VT\n");
 | 
			
		||||
 | 
			
		||||
	    if (geteuid() == 0) {
 | 
			
		||||
		    /* change ownership of the vt */
 | 
			
		||||
		    if (chown(vtname, getuid(), getgid()) < 0)
 | 
			
		||||
			    xf86Msg(X_WARNING,"xf86OpenConsole: chown %s failed: %s\n",
 | 
			
		||||
				    vtname, strerror(errno));
 | 
			
		||||
 | 
			
		||||
		    /*
 | 
			
		||||
		     * the current VT device we're running on is not
 | 
			
		||||
		     * "console", we want to grab all consoles too
 | 
			
		||||
		     *
 | 
			
		||||
		     * Why is this needed??
 | 
			
		||||
		     */
 | 
			
		||||
		    if (chown("/dev/tty0", getuid(), getgid()) < 0)
 | 
			
		||||
			    xf86Msg(X_WARNING,"xf86OpenConsole: chown /dev/tty0 failed: %s\n",
 | 
			
		||||
				    strerror(errno));
 | 
			
		||||
	    }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Linux doesn't switch to an active vt after the last close of a vt,
 | 
			
		||||
	 * so we do this ourselves by remembering which is active now.
 | 
			
		||||
| 
						 | 
				
			
			@ -236,13 +184,7 @@ xf86OpenConsole(void)
 | 
			
		|||
	    /*
 | 
			
		||||
	     * now get the VT.  This _must_ succeed, or else fail completely.
 | 
			
		||||
	     */
 | 
			
		||||
	    if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) < 0)
 | 
			
		||||
	        FatalError("xf86OpenConsole: VT_ACTIVATE failed: %s\n",
 | 
			
		||||
		           strerror(errno));
 | 
			
		||||
 | 
			
		||||
	    if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) < 0)
 | 
			
		||||
	        FatalError("xf86OpenConsole: VT_WAITACTIVE failed: %s\n",
 | 
			
		||||
			   strerror(errno));
 | 
			
		||||
            switch_to(xf86Info.vtno, "xf86OpenConsole");
 | 
			
		||||
 | 
			
		||||
	    if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
 | 
			
		||||
	        FatalError("xf86OpenConsole: VT_GETMODE failed %s\n",
 | 
			
		||||
| 
						 | 
				
			
			@ -289,16 +231,8 @@ xf86OpenConsole(void)
 | 
			
		|||
    } else { 	/* serverGeneration != 1 */
 | 
			
		||||
        if (!ShareVTs && VTSwitch)
 | 
			
		||||
        {
 | 
			
		||||
	    /*
 | 
			
		||||
	     * now get the VT
 | 
			
		||||
	     */
 | 
			
		||||
	    if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) < 0)
 | 
			
		||||
	        xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed %s\n",
 | 
			
		||||
		        strerror(errno));
 | 
			
		||||
 | 
			
		||||
	    if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) < 0)
 | 
			
		||||
	        xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed %s\n",
 | 
			
		||||
		        strerror(errno));
 | 
			
		||||
	    /* now get the VT */
 | 
			
		||||
            switch_to(xf86Info.vtno, "xf86OpenConsole");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -343,19 +277,11 @@ xf86CloseConsole(void)
 | 
			
		|||
         * Perform a switch back to the active VT when we were started
 | 
			
		||||
         */
 | 
			
		||||
        if (activeVT >= 0) {
 | 
			
		||||
	    if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, activeVT) < 0)
 | 
			
		||||
	        xf86Msg(X_WARNING, "xf86CloseConsole: VT_ACTIVATE failed: %s\n",
 | 
			
		||||
		        strerror(errno));
 | 
			
		||||
	    if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, activeVT) < 0)
 | 
			
		||||
		xf86Msg(X_WARNING,
 | 
			
		||||
			"xf86CloseConsole: VT_WAITACTIVE failed: %s\n",
 | 
			
		||||
			strerror(errno));
 | 
			
		||||
            switch_to(activeVT, "xf86CloseConsole");
 | 
			
		||||
	    activeVT = -1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    close(xf86Info.consoleFd);	/* make the vt-manager happy */
 | 
			
		||||
 | 
			
		||||
    restoreVtPerms();		/* restore the permissions */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
| 
						 | 
				
			
			@ -382,10 +308,10 @@ xf86ProcessArgument(int argc, char *argv[], int i)
 | 
			
		|||
        }
 | 
			
		||||
	if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
 | 
			
		||||
	{
 | 
			
		||||
		if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
 | 
			
		||||
		if (sscanf(argv[i], "vt%2d", &xf86Info.vtno) == 0)
 | 
			
		||||
		{
 | 
			
		||||
			UseMsg();
 | 
			
		||||
			VTnum = -1;
 | 
			
		||||
			xf86Info.vtno = -1;
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
		return 1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,10 +31,6 @@
 | 
			
		|||
#include "xf86Priv.h"
 | 
			
		||||
#include "xf86_OSlib.h"
 | 
			
		||||
 | 
			
		||||
#ifdef OSHEADER
 | 
			
		||||
# include OSHEADER
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Handle the VT-switching interface for OSs that use USL-style ioctl()s
 | 
			
		||||
 * (the sysv, sco, and linux subdirs).
 | 
			
		||||
| 
						 | 
				
			
			@ -63,31 +59,20 @@ xf86VTSwitchAway(void)
 | 
			
		|||
{
 | 
			
		||||
	xf86Info.vtRequestsPending = FALSE;
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, VT_RELDISP, 1) < 0)
 | 
			
		||||
	{
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
#ifdef OSSWITCHAWAY
 | 
			
		||||
	        OSSWITCHAWAY;
 | 
			
		||||
#endif
 | 
			
		||||
		return TRUE;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Bool
 | 
			
		||||
xf86VTSwitchTo(void)
 | 
			
		||||
{
 | 
			
		||||
	xf86Info.vtRequestsPending = FALSE;
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
 | 
			
		||||
	{
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		return TRUE;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Bool
 | 
			
		||||
xf86VTActivate(int vtno)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
EXTRA_DIST = sysv_init.c sysv_video.c
 | 
			
		||||
| 
						 | 
				
			
			@ -1,252 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
 | 
			
		||||
 * Copyright 1993 by David Wexelblat <dwex@goblin.org>
 | 
			
		||||
 *
 | 
			
		||||
 * Permission to use, copy, modify, distribute, and sell this software and its
 | 
			
		||||
 * documentation for any purpose is hereby granted without fee, provided that
 | 
			
		||||
 * the above copyright notice appear in all copies and that both that
 | 
			
		||||
 * copyright notice and this permission notice appear in supporting
 | 
			
		||||
 * documentation, and that the names of Thomas Roell and David Wexelblat 
 | 
			
		||||
 * not be used in advertising or publicity pertaining to distribution of 
 | 
			
		||||
 * the software without specific, written prior permission.  Thomas Roell and
 | 
			
		||||
 * David Wexelblat makes no representations about the suitability of this 
 | 
			
		||||
 * software for any purpose.  It is provided "as is" without express or 
 | 
			
		||||
 * implied warranty.
 | 
			
		||||
 *
 | 
			
		||||
 * THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO 
 | 
			
		||||
 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
 | 
			
		||||
 * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR 
 | 
			
		||||
 * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER 
 | 
			
		||||
 * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
 | 
			
		||||
 * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
 | 
			
		||||
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_XORG_CONFIG_H
 | 
			
		||||
#include <xorg-config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <X11/X.h>
 | 
			
		||||
#include <X11/Xmd.h>
 | 
			
		||||
 | 
			
		||||
#include "compiler.h"
 | 
			
		||||
 | 
			
		||||
#include "xf86.h"
 | 
			
		||||
#include "xf86Priv.h"
 | 
			
		||||
#include "xf86_OSlib.h"
 | 
			
		||||
 | 
			
		||||
static Bool KeepTty = FALSE;
 | 
			
		||||
#ifdef SVR4
 | 
			
		||||
static Bool Protect0 = FALSE;
 | 
			
		||||
#endif
 | 
			
		||||
static int VTnum = -1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
xf86OpenConsole()
 | 
			
		||||
{
 | 
			
		||||
    int fd;
 | 
			
		||||
    struct vt_mode VT;
 | 
			
		||||
    char vtname1[10],vtname2[10];
 | 
			
		||||
    MessageType from = X_PROBED;
 | 
			
		||||
 | 
			
		||||
    if (serverGeneration == 1) 
 | 
			
		||||
    {
 | 
			
		||||
    	/* check if we're run with euid==0 */
 | 
			
		||||
    	if (geteuid() != 0)
 | 
			
		||||
	{
 | 
			
		||||
      	    FatalError("xf86OpenConsole: Server must be suid root\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#ifdef SVR4
 | 
			
		||||
	/* Protect page 0 to help find NULL dereferencing */
 | 
			
		||||
	/* mprotect() doesn't seem to work */
 | 
			
		||||
	if (Protect0)
 | 
			
		||||
	{
 | 
			
		||||
	    int fd = -1;
 | 
			
		||||
 | 
			
		||||
	    if ((fd = open("/dev/zero", O_RDONLY, 0)) < 0)
 | 
			
		||||
	    {
 | 
			
		||||
		xf86Msg(X_WARNING,
 | 
			
		||||
			"xf86OpenConsole: cannot open /dev/zero (%s)\n",
 | 
			
		||||
			strerror(errno));
 | 
			
		||||
	    }
 | 
			
		||||
	    else
 | 
			
		||||
	    {
 | 
			
		||||
		if ((int)mmap(0, 0x1000, PROT_NONE,
 | 
			
		||||
			      MAP_FIXED | MAP_SHARED, fd, 0) == -1)
 | 
			
		||||
		{
 | 
			
		||||
		    xf86Msg(X_WARNING,
 | 
			
		||||
			"xf86OpenConsole: failed to protect page 0 (%s)\n",
 | 
			
		||||
			strerror(errno));
 | 
			
		||||
		}
 | 
			
		||||
		close(fd);
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
    	/*
 | 
			
		||||
     	 * setup the virtual terminal manager
 | 
			
		||||
     	 */
 | 
			
		||||
    	if (VTnum != -1) 
 | 
			
		||||
	{
 | 
			
		||||
      	    xf86Info.vtno = VTnum;
 | 
			
		||||
	    from = X_CMDLINE;
 | 
			
		||||
    	}
 | 
			
		||||
    	else 
 | 
			
		||||
	{
 | 
			
		||||
      	    if ((fd = open("/dev/console",O_WRONLY,0)) < 0) 
 | 
			
		||||
	    {
 | 
			
		||||
        	FatalError(
 | 
			
		||||
		    "xf86OpenConsole: Cannot open /dev/console (%s)\n",
 | 
			
		||||
		    strerror(errno));
 | 
			
		||||
	    }
 | 
			
		||||
      	    if ((ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) || 
 | 
			
		||||
		(xf86Info.vtno == -1))
 | 
			
		||||
	    {
 | 
			
		||||
        	FatalError("xf86OpenConsole: Cannot find a free VT\n");
 | 
			
		||||
	    }
 | 
			
		||||
           close(fd);
 | 
			
		||||
        }
 | 
			
		||||
	xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
 | 
			
		||||
 | 
			
		||||
	sprintf(vtname1,"/dev/vc%02d",xf86Info.vtno); /* ESIX */
 | 
			
		||||
	sprintf(vtname2,"/dev/vt%02d",xf86Info.vtno); /* rest of the world */
 | 
			
		||||
 | 
			
		||||
	if (!KeepTty)
 | 
			
		||||
    	{
 | 
			
		||||
    	    setpgrp();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (((xf86Info.consoleFd = open(vtname1, O_RDWR|O_NDELAY, 0)) < 0) &&
 | 
			
		||||
	    ((xf86Info.consoleFd = open(vtname2, O_RDWR|O_NDELAY, 0)) < 0))
 | 
			
		||||
	{
 | 
			
		||||
            FatalError("xf86OpenConsole: Cannot open %s (%s) (%s)\n",
 | 
			
		||||
		       vtname2, vtname1, strerror(errno));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* change ownership of the vt */
 | 
			
		||||
	if (chown(vtname1, getuid(), getgid()) < 0)
 | 
			
		||||
	{
 | 
			
		||||
            chown(vtname2, getuid(), getgid());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * now get the VT
 | 
			
		||||
	 */
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
 | 
			
		||||
	{
 | 
			
		||||
    	    xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
 | 
			
		||||
	}
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
 | 
			
		||||
	{
 | 
			
		||||
	    xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
 | 
			
		||||
	}
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) 
 | 
			
		||||
	{
 | 
			
		||||
	    FatalError("xf86OpenConsole: VT_GETMODE failed\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	signal(SIGUSR1, xf86VTRequest);
 | 
			
		||||
 | 
			
		||||
	VT.mode = VT_PROCESS;
 | 
			
		||||
	VT.relsig = SIGUSR1;
 | 
			
		||||
	VT.acqsig = SIGUSR1;
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0) 
 | 
			
		||||
	{
 | 
			
		||||
	    FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed\n");
 | 
			
		||||
	}
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0)
 | 
			
		||||
	{
 | 
			
		||||
	    FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed\n");
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
    else 
 | 
			
		||||
    {   
 | 
			
		||||
	/* serverGeneration != 1 */
 | 
			
		||||
	/*
 | 
			
		||||
	 * now get the VT
 | 
			
		||||
	 */
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
 | 
			
		||||
	{
 | 
			
		||||
	    xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
 | 
			
		||||
	}
 | 
			
		||||
	if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
 | 
			
		||||
	{
 | 
			
		||||
      	    xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
 | 
			
		||||
	}
 | 
			
		||||
	/*
 | 
			
		||||
	 * If the server doesn't have the VT when the reset occurs,
 | 
			
		||||
	 * this is to make sure we don't continue until the activate
 | 
			
		||||
	 * signal is received.
 | 
			
		||||
	 */
 | 
			
		||||
	if (!xf86Screens[0]->vtSema)
 | 
			
		||||
	    sleep(5);
 | 
			
		||||
    }
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
xf86CloseConsole()
 | 
			
		||||
{
 | 
			
		||||
    struct vt_mode   VT;
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno);
 | 
			
		||||
    ioctl(xf86Info.consoleFd, VT_WAITACTIVE, 0);
 | 
			
		||||
#endif
 | 
			
		||||
    ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT);  /* Back to text mode ... */
 | 
			
		||||
    if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1)
 | 
			
		||||
    {
 | 
			
		||||
	VT.mode = VT_AUTO;
 | 
			
		||||
	ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* set dflt vt handling */
 | 
			
		||||
    }
 | 
			
		||||
    close(xf86Info.consoleFd);                 /* make the vt-manager happy */
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
xf86ProcessArgument(int argc, char *argv[], int i)
 | 
			
		||||
{
 | 
			
		||||
	/*
 | 
			
		||||
	 * Keep server from detaching from controlling tty.  This is useful 
 | 
			
		||||
	 * when debugging (so the server can receive keyboard signals.
 | 
			
		||||
	 */
 | 
			
		||||
	if (!strcmp(argv[i], "-keeptty"))
 | 
			
		||||
	{
 | 
			
		||||
		KeepTty = TRUE;
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
#ifdef SVR4
 | 
			
		||||
	/*
 | 
			
		||||
	 * Undocumented flag to protect page 0 from read/write to help
 | 
			
		||||
	 * catch NULL pointer dereferences.  This is purely a debugging
 | 
			
		||||
	 * flag.
 | 
			
		||||
	 */
 | 
			
		||||
	if (!strcmp(argv[i], "-protect0"))
 | 
			
		||||
	{
 | 
			
		||||
		Protect0 = TRUE;
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
	if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
 | 
			
		||||
	{
 | 
			
		||||
		if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
 | 
			
		||||
		{
 | 
			
		||||
			UseMsg();
 | 
			
		||||
			VTnum = -1;
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
xf86UseMsg()
 | 
			
		||||
{
 | 
			
		||||
	ErrorF("vtXX                   use the specified VT number\n");
 | 
			
		||||
	ErrorF("-keeptty               ");
 | 
			
		||||
	ErrorF("don't detach controlling tty (for debugging only)\n");
 | 
			
		||||
	return;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,315 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
 | 
			
		||||
 * Copyright 1993 by David Wexelblat <dwex@goblin.org>
 | 
			
		||||
 *
 | 
			
		||||
 * Permission to use, copy, modify, distribute, and sell this software and its
 | 
			
		||||
 * documentation for any purpose is hereby granted without fee, provided that
 | 
			
		||||
 * the above copyright notice appear in all copies and that both that
 | 
			
		||||
 * copyright notice and this permission notice appear in supporting
 | 
			
		||||
 * documentation, and that the names of Thomas Roell and David Wexelblat 
 | 
			
		||||
 * not be used in advertising or publicity pertaining to distribution of 
 | 
			
		||||
 * the software without specific, written prior permission.  Thomas Roell and
 | 
			
		||||
 * David Wexelblat makes no representations about the suitability of this 
 | 
			
		||||
 * software for any purpose.  It is provided "as is" without express or 
 | 
			
		||||
 * implied warranty.
 | 
			
		||||
 *
 | 
			
		||||
 * THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO 
 | 
			
		||||
 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
 | 
			
		||||
 * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR 
 | 
			
		||||
 * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER 
 | 
			
		||||
 * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
 | 
			
		||||
 * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
 | 
			
		||||
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_XORG_CONFIG_H
 | 
			
		||||
#include <xorg-config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <X11/X.h>
 | 
			
		||||
 | 
			
		||||
#define _NEED_SYSI86
 | 
			
		||||
#include "xf86.h"
 | 
			
		||||
#include "xf86Priv.h"
 | 
			
		||||
#include "xf86_OSlib.h"
 | 
			
		||||
#include "xf86OSpriv.h"
 | 
			
		||||
 | 
			
		||||
#ifndef MAP_FAILED
 | 
			
		||||
#define MAP_FAILED ((void *)-1)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SI86IOPL
 | 
			
		||||
#define SET_IOPL() sysi86(SI86V86,V86SC_IOPL,PS_IOPL)
 | 
			
		||||
#define RESET_IOPL() sysi86(SI86V86,V86SC_IOPL,0)
 | 
			
		||||
#else
 | 
			
		||||
#define SET_IOPL() sysi86(SI86IOPL,3)
 | 
			
		||||
#define RESET_IOPL() sysi86(SI86IOPL,0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/* Video Memory Mapping section                                            */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * XXX Support for SVR3 will need to be reworked if needed.  In particular
 | 
			
		||||
 * the Region parameter is no longer passed, and will need to be dealt
 | 
			
		||||
 * with internally if required.
 | 
			
		||||
 * OK, i'll rework that thing ... (clean it up a lot)
 | 
			
		||||
 * SVR3 Support only with SVR3_MMAPDRV (mr)
 | 
			
		||||
 * 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAS_SVR3_MMAPDRV
 | 
			
		||||
#ifndef MMAP_DEBUG
 | 
			
		||||
#define MMAP_DEBUG	3
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
struct kd_memloc MapDSC;
 | 
			
		||||
int mmapFd = -2;
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
mmapStat(pointer Base, unsigned long Size) {
 | 
			
		||||
 | 
			
		||||
	int nmmreg,i=0,region=-1;
 | 
			
		||||
	mmapinfo_t *ibuf;
 | 
			
		||||
 | 
			
		||||
	nmmreg = ioctl(mmapFd, GETNMMREG);
 | 
			
		||||
 | 
			
		||||
	if(nmmreg <= 0)
 | 
			
		||||
	   xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			  "\nNo physical memory mapped currently.\n\n");
 | 
			
		||||
	else {
 | 
			
		||||
	  if((ibuf = (mmapinfo_t *)malloc(nmmreg*sizeof(mmapinfo_t))) == NULL) 
 | 
			
		||||
		xf86Msg(X_WARNING,
 | 
			
		||||
			  "Couldn't allocate memory 4 mmapinfo_t\n");
 | 
			
		||||
	  else {
 | 
			
		||||
	     if(ioctl(mmapFd, GETMMREG, ibuf) != -1)
 | 
			
		||||
		{ 
 | 
			
		||||
		   xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
				"# mmapStat: [Size=%x,Base=%x]\n", Size, Base);
 | 
			
		||||
		   xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
		     "#      Physical Address     Size      Reference Count\n");
 | 
			
		||||
		for(i = 0; i < nmmreg; i++) {
 | 
			
		||||
		   xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
                      "%-4d   0x%08X         %5dk                %5d	",
 | 
			
		||||
          	      i, ibuf[i].physaddr, ibuf[i].length/1024, ibuf[i].refcnt);
 | 
			
		||||
		   if (ibuf[i].physaddr == Base || ibuf[i].length == Size ) {
 | 
			
		||||
			xf86MsgVerb(X_INFO, MMAP_DEBUG,"MATCH !!!");
 | 
			
		||||
			if (region==-1) region=i;
 | 
			
		||||
                      }
 | 
			
		||||
		   xf86ErrorFVerb(MMAP_DEBUG, "\n");
 | 
			
		||||
		}
 | 
			
		||||
		xf86ErrorFVerb(MMAP_DEBUG, "\n");
 | 
			
		||||
		}
 | 
			
		||||
	     free(ibuf);
 | 
			
		||||
	   }
 | 
			
		||||
	}
 | 
			
		||||
	if (region == -1 && nmmreg > 0) region=region * i;
 | 
			
		||||
	return region;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static Bool
 | 
			
		||||
linearVidMem()
 | 
			
		||||
{
 | 
			
		||||
#ifdef SVR4
 | 
			
		||||
	return TRUE;
 | 
			
		||||
#elif defined(HAS_SVR3_MMAPDRV)
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
		    "# xf86LinearVidMem: MMAP 2.2.2 called\n");
 | 
			
		||||
 | 
			
		||||
	if(mmapFd >= 0) return TRUE;
 | 
			
		||||
 | 
			
		||||
	if ((mmapFd = open("/dev/mmap", O_RDWR)) != -1)
 | 
			
		||||
	{
 | 
			
		||||
	    if(ioctl(mmapFd, GETVERSION) < 0x0222) {
 | 
			
		||||
		xf86Msg(X_WARNING,
 | 
			
		||||
			"xf86LinearVidMem: MMAP 2.2.2 or above required\n");
 | 
			
		||||
		xf86ErrorF("\tlinear memory access disabled\n");
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	    }
 | 
			
		||||
	    return TRUE;
 | 
			
		||||
	}
 | 
			
		||||
	xf86Msg(X_WARNING, "xf86LinearVidMem: failed to open /dev/mmap (%s)\n",
 | 
			
		||||
	        strerror(errno));
 | 
			
		||||
	xf86ErrorF("\tlinear memory access disabled\n");
 | 
			
		||||
	return FALSE;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static pointer
 | 
			
		||||
mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
 | 
			
		||||
{
 | 
			
		||||
	pointer base;
 | 
			
		||||
	int fd;
 | 
			
		||||
 | 
			
		||||
#if defined(SVR4)
 | 
			
		||||
	fd = open(DEV_MEM, (flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
 | 
			
		||||
	if (fd < 0)
 | 
			
		||||
	{
 | 
			
		||||
		FatalError("xf86MapVidMem: failed to open %s (%s)\n",
 | 
			
		||||
			   DEV_MEM, strerror(errno));
 | 
			
		||||
	}
 | 
			
		||||
	base = mmap((caddr_t)0, Size,
 | 
			
		||||
		    (flags & VIDMEM_READONLY) ?
 | 
			
		||||
		     PROT_READ : (PROT_READ | PROT_WRITE),
 | 
			
		||||
		    MAP_SHARED, fd, (off_t)Base);
 | 
			
		||||
	close(fd);
 | 
			
		||||
	if (base == MAP_FAILED)
 | 
			
		||||
	{
 | 
			
		||||
		FatalError("%s: Could not mmap framebuffer [s=%x,a=%x] (%s)\n",
 | 
			
		||||
			   "xf86MapVidMem", Size, Base, strerror(errno));
 | 
			
		||||
	}
 | 
			
		||||
#else /* SVR4 */
 | 
			
		||||
#ifdef HAS_SVR3_MMAPDRV
 | 
			
		||||
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG, "# xf86MapVidMem: MMAP 2.2.2 called\n");
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			"MMAP_VERSION: 0x%x\n",ioctl(mmapFd, GETVERSION));
 | 
			
		||||
	if (ioctl(mmapFd, GETVERSION) == -1)
 | 
			
		||||
	{
 | 
			
		||||
		xf86LinearVidMem();
 | 
			
		||||
	}
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			"MMAP_VERSION: 0x%x\n",ioctl(mmapFd, GETVERSION));
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
		"xf86MapVidMem: Screen: %d\n", ScreenNum);
 | 
			
		||||
	mmapStat(Base,Size);
 | 
			
		||||
	/* To force the MMAP driver to provide the address */
 | 
			
		||||
	base = (pointer)0;
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			"xf86MapVidMem: [s=%x,a=%x]\n", Size, Base);
 | 
			
		||||
	MapDSC.vaddr    = (char *)base;
 | 
			
		||||
	MapDSC.physaddr = (char *)Base;
 | 
			
		||||
	MapDSC.length   = Size;
 | 
			
		||||
	MapDSC.ioflg    = 1;
 | 
			
		||||
	if(mmapFd >= 0)
 | 
			
		||||
	{
 | 
			
		||||
	    if((base = (pointer)ioctl(mmapFd, MAP, &MapDSC)) == (pointer)-1)
 | 
			
		||||
	    {
 | 
			
		||||
		FatalError("%s: Could not mmap framebuffer [s=%x,a=%x] (%s)\n",
 | 
			
		||||
			   "xf86MapVidMem", Size, Base, strerror(errno));
 | 
			
		||||
		/* NOTREACHED */
 | 
			
		||||
	    }
 | 
			
		||||
 | 
			
		||||
	    /* Next time we want the same address! */
 | 
			
		||||
	    MapDSC.vaddr    = (char *)base;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			"MapDSC.vaddr   : 0x%x\n", MapDSC.vaddr);
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			"MapDSC.physaddr: 0x%x\n", MapDSC.physaddr);
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			"MapDSC.length  : %d\n", MapDSC.length);
 | 
			
		||||
	mmapStat(Base,Size);
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			"xf86MapVidMem: [s=%x,a=%x,b=%x]\n", Size, Base, base);
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
			"xf86MapVidMem: SUCCEED Mapping FrameBuffer \n");
 | 
			
		||||
#endif /* HAS_SVR3_MMAPDRV */
 | 
			
		||||
#endif /* SVR4 */
 | 
			
		||||
	return base;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ARGSUSED */
 | 
			
		||||
static void
 | 
			
		||||
unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
 | 
			
		||||
{
 | 
			
		||||
#if defined (SVR4)
 | 
			
		||||
	munmap(Base, Size);
 | 
			
		||||
#else /* SVR4 */
 | 
			
		||||
#ifdef HAS_SVR3_MMAPDRV
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
	        "# xf86UnMapVidMem: UNMapping FrameBuffer\n");
 | 
			
		||||
	mmapStat(Base,Size);
 | 
			
		||||
	ioctl(mmapFd, UNMAPRM , Base);
 | 
			
		||||
	mmapStat(Base,Size);
 | 
			
		||||
	xf86MsgVerb(X_INFO, MMAP_DEBUG,
 | 
			
		||||
		"# xf86UnMapVidMem: Screen: %d [v=%x]\n", ScreenNum, Base);
 | 
			
		||||
#endif /* HAS_SVR3_MMAPDRV */
 | 
			
		||||
#endif /* SVR4 */
 | 
			
		||||
	return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(SVR4) && defined(__i386__) && !defined(sun)
 | 
			
		||||
/*
 | 
			
		||||
 * For some SVR4 versions, a 32-bit read is done for the first location
 | 
			
		||||
 * in each page when the page is first mapped.  If this is done while
 | 
			
		||||
 * memory access is enabled for regions that have read side-effects,
 | 
			
		||||
 * this can cause unexpected results, including lockups on some hardware.
 | 
			
		||||
 * This function is called to make sure each page is mapped while it is
 | 
			
		||||
 * safe to do so.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * XXX Should get this the correct way (see os/xalloc.c), but since this is
 | 
			
		||||
 * for one platform I'll be lazy.
 | 
			
		||||
 */
 | 
			
		||||
#define X_PAGE_SIZE 4096
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
readSideEffects(int ScreenNum, pointer Base, unsigned long Size)
 | 
			
		||||
{
 | 
			
		||||
	unsigned long base, end, addr;
 | 
			
		||||
	CARD32 val;
 | 
			
		||||
 | 
			
		||||
	base = (unsigned long)Base;
 | 
			
		||||
	end = base + Size;
 | 
			
		||||
 | 
			
		||||
	for (addr = base; addr < end; addr += X_PAGE_SIZE)
 | 
			
		||||
		val = *(volatile CARD32 *)addr;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
xf86OSInitVidMem(VidMemInfoPtr pVidMem)
 | 
			
		||||
{
 | 
			
		||||
	pVidMem->linearSupported = linearVidMem();
 | 
			
		||||
	pVidMem->mapMem = mapVidMem;
 | 
			
		||||
	pVidMem->unmapMem = unmapVidMem;
 | 
			
		||||
#if defined(SVR4) && defined(__i386__) && !defined(sun)
 | 
			
		||||
	pVidMem->readSideEffects = readSideEffects;
 | 
			
		||||
#endif
 | 
			
		||||
	pVidMem->initialised = TRUE;
 | 
			
		||||
}
 | 
			
		||||
	
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/* I/O Permissions section                                                 */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
static Bool ExtendedEnabled = FALSE;
 | 
			
		||||
static Bool InitDone = FALSE;
 | 
			
		||||
 | 
			
		||||
Bool
 | 
			
		||||
xf86EnableIO()
 | 
			
		||||
{
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	if (ExtendedEnabled)
 | 
			
		||||
		return TRUE;
 | 
			
		||||
 | 
			
		||||
	if (SET_IOPL() < 0)
 | 
			
		||||
	{
 | 
			
		||||
	    xf86Msg(X_WARNING,
 | 
			
		||||
			"xf86EnableIO: Failed to set IOPL for extended I/O\n");
 | 
			
		||||
	    return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
	ExtendedEnabled = TRUE;
 | 
			
		||||
 | 
			
		||||
	return TRUE;
 | 
			
		||||
}
 | 
			
		||||
	
 | 
			
		||||
void
 | 
			
		||||
xf86DisableIO()
 | 
			
		||||
{
 | 
			
		||||
	if (!ExtendedEnabled)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	RESET_IOPL();
 | 
			
		||||
	ExtendedEnabled = FALSE;
 | 
			
		||||
 | 
			
		||||
	return;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1028,6 +1028,11 @@ VBEInterpretPanelID(int scrnIndex, struct vbePanelID *data)
 | 
			
		|||
    if (pScrn->monitor->nHsync || pScrn->monitor->nVrefresh)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
    if (data->hsize < 320 || data->vsize < 240) {
 | 
			
		||||
	xf86DrvMsg(scrnIndex, X_INFO, "...which I refuse to believe\n");
 | 
			
		||||
	return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    mode = xf86CVTMode(data->hsize, data->vsize, PANEL_HZ, 1, 0);
 | 
			
		||||
 | 
			
		||||
    pScrn->monitor->nHsync = 1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1241,8 +1241,6 @@ typedef struct _XAAInfoRec {
 | 
			
		|||
   GetImageProcPtr GetImage;
 | 
			
		||||
   GetSpansProcPtr GetSpans;
 | 
			
		||||
   CopyWindowProcPtr CopyWindow;
 | 
			
		||||
   BackingStoreSaveAreasProcPtr SaveAreas;
 | 
			
		||||
   BackingStoreRestoreAreasProcPtr RestoreAreas;
 | 
			
		||||
 | 
			
		||||
   unsigned int offscreenDepths;
 | 
			
		||||
   Bool offscreenDepthsInitialized;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +0,0 @@
 | 
			
		|||
module_LTLIBRARIES = libxf8_16bpp.la
 | 
			
		||||
 | 
			
		||||
sdk_HEADERS = cfb8_16.h
 | 
			
		||||
 | 
			
		||||
INCLUDES = $(XORG_INCS) -I$(top_srcdir)/fb
 | 
			
		||||
 | 
			
		||||
AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
 | 
			
		||||
 | 
			
		||||
libxf8_16bpp_la_LDFLAGS = -avoid-version
 | 
			
		||||
 | 
			
		||||
libxf8_16bpp_la_SOURCES = xf8_16module.c
 | 
			
		||||
| 
						 | 
				
			
			@ -1,37 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2006 Adam Jackson.
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice (including the next
 | 
			
		||||
 * paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
 * Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
			
		||||
 * DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _CFB8_16_H
 | 
			
		||||
#define _CFB8_16_H
 | 
			
		||||
 | 
			
		||||
#include "regionstr.h"
 | 
			
		||||
#include "windowstr.h"
 | 
			
		||||
 | 
			
		||||
/* this has to stay misnamed for ABI reasons */
 | 
			
		||||
 | 
			
		||||
extern _X_EXPORT Bool
 | 
			
		||||
cfb8_16ScreenInit(ScreenPtr pScreen, pointer pbits16, pointer pbits8,
 | 
			
		||||
                  int xsize, int ysize, int dpix, int dpiy,
 | 
			
		||||
                  int width16, int width8);
 | 
			
		||||
 | 
			
		||||
#endif /* _CFB8_16_H */
 | 
			
		||||
| 
						 | 
				
			
			@ -1,78 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2006 Adam Jackson.
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice (including the next
 | 
			
		||||
 * paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
 * Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
			
		||||
 * DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_XORG_CONFIG_H
 | 
			
		||||
#include <xorg-config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <X11/X.h>
 | 
			
		||||
#include <X11/Xmd.h>
 | 
			
		||||
#include "misc.h"
 | 
			
		||||
#include "servermd.h"
 | 
			
		||||
#include "scrnintstr.h"
 | 
			
		||||
#include "resource.h"
 | 
			
		||||
#include "fb.h"
 | 
			
		||||
#include "fboverlay.h"
 | 
			
		||||
#include "cfb8_16.h"
 | 
			
		||||
 | 
			
		||||
Bool
 | 
			
		||||
cfb8_16ScreenInit(ScreenPtr pScreen, pointer pbits16, pointer pbits8,
 | 
			
		||||
                  int xsize, int ysize, int dpix, int dpiy,
 | 
			
		||||
                  int width16, int width8)
 | 
			
		||||
{
 | 
			
		||||
    return
 | 
			
		||||
        (fbOverlaySetupScreen(pScreen, pbits16, pbits8, xsize, ysize,
 | 
			
		||||
                              dpix, dpiy, width16, width8, 16, 8) &&
 | 
			
		||||
         fbOverlayFinishScreenInit(pScreen, pbits16, pbits8, xsize, ysize,
 | 
			
		||||
                                   dpix, dpiy, width16, width8, 16, 8, 16, 8));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#include "xf86Module.h"
 | 
			
		||||
 | 
			
		||||
static MODULESETUPPROTO(xf8_16bppSetup);
 | 
			
		||||
 | 
			
		||||
static XF86ModuleVersionInfo VersRec = {
 | 
			
		||||
        "xf8_16bpp",
 | 
			
		||||
        MODULEVENDORSTRING,
 | 
			
		||||
        MODINFOSTRING1,
 | 
			
		||||
        MODINFOSTRING2,
 | 
			
		||||
        XORG_VERSION_CURRENT,
 | 
			
		||||
        2, 0, 0,
 | 
			
		||||
        ABI_CLASS_ANSIC,                /* Only need the ansic layer */
 | 
			
		||||
        ABI_ANSIC_VERSION,
 | 
			
		||||
        NULL,
 | 
			
		||||
        {0,0,0,0}       /* signature, to be patched into the file by a tool */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
_X_EXPORT XF86ModuleData xf8_16bppModuleData = {
 | 
			
		||||
    &VersRec,
 | 
			
		||||
    xf8_16bppSetup,
 | 
			
		||||
    NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static pointer
 | 
			
		||||
xf8_16bppSetup(pointer module, pointer opts, int *errmaj, int *errmin)
 | 
			
		||||
{
 | 
			
		||||
    return (pointer)LoadSubModule(module, "fb", NULL, NULL, NULL, NULL,
 | 
			
		||||
			          errmaj, errmin);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -239,8 +239,6 @@ xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[])
 | 
			
		|||
	       defaultVisual, /* root visual */
 | 
			
		||||
	       numVisuals, visuals);
 | 
			
		||||
 | 
			
		||||
/*  miInitializeBackingStore(pScreen); */
 | 
			
		||||
 | 
			
		||||
  pScreen->defColormap = (Colormap) FakeClientID(0);
 | 
			
		||||
  pScreen->minInstalledCmaps = MINCMAPS;
 | 
			
		||||
  pScreen->maxInstalledCmaps = MAXCMAPS;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -586,8 +586,6 @@ static __GLXscreen * __glXAquaScreenProbe(ScreenPtr pScreen) {
 | 
			
		|||
    screen->base.createContext  = __glXAquaScreenCreateContext;
 | 
			
		||||
    screen->base.createDrawable = __glXAquaScreenCreateDrawable;
 | 
			
		||||
    screen->base.swapInterval = /*FIXME*/ NULL;
 | 
			
		||||
    screen->base.hyperpipeFuncs = NULL;
 | 
			
		||||
    screen->base.swapBarrierFuncs = NULL;
 | 
			
		||||
    screen->base.pScreen       = pScreen;
 | 
			
		||||
    
 | 
			
		||||
    screen->base.fbconfigs = __glXAquaCreateVisualConfigs(&screen->base.numFBConfigs, pScreen->myNum);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -868,28 +868,6 @@ xf86SetRootClip (ScreenPtr pScreen, int enable)
 | 
			
		|||
	    (*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (pWin->backStorage &&
 | 
			
		||||
	((pWin->backingStore == Always) || WasViewable))
 | 
			
		||||
    {
 | 
			
		||||
	if (!WasViewable)
 | 
			
		||||
	    pOldClip = &pWin->clipList; /* a convenient empty region */
 | 
			
		||||
	bsExposed = (*pScreen->TranslateBackingStore)
 | 
			
		||||
			     (pWin, 0, 0, pOldClip,
 | 
			
		||||
			      pWin->drawable.x, pWin->drawable.y);
 | 
			
		||||
	if (WasViewable)
 | 
			
		||||
	    RegionDestroy(pOldClip);
 | 
			
		||||
	if (bsExposed)
 | 
			
		||||
	{
 | 
			
		||||
	    RegionPtr	valExposed = NullRegion;
 | 
			
		||||
 | 
			
		||||
	    if (pWin->valdata)
 | 
			
		||||
		valExposed = &pWin->valdata->after.exposed;
 | 
			
		||||
	    (*pScreen->WindowExposures) (pWin, valExposed, bsExposed);
 | 
			
		||||
	    if (valExposed)
 | 
			
		||||
		RegionEmpty(valExposed);
 | 
			
		||||
	    RegionDestroy(bsExposed);
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
    if (WasViewable)
 | 
			
		||||
    {
 | 
			
		||||
	if (anyMarked)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -649,8 +649,6 @@ glxWinScreenProbe(ScreenPtr pScreen)
 | 
			
		|||
      screen->base.createContext = glxWinCreateContext;
 | 
			
		||||
      screen->base.createDrawable = glxWinCreateDrawable;
 | 
			
		||||
      screen->base.swapInterval = glxWinScreenSwapInterval;
 | 
			
		||||
      screen->base.hyperpipeFuncs = NULL;
 | 
			
		||||
      screen->base.swapBarrierFuncs = NULL;
 | 
			
		||||
      screen->base.pScreen = pScreen;
 | 
			
		||||
 | 
			
		||||
      if (strstr(wgl_extensions, "WGL_ARB_pixel_format"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -394,13 +394,6 @@ winFinishScreenInitFB (int index,
 | 
			
		|||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Backing store support should reduce network traffic and increase
 | 
			
		||||
   * performance.
 | 
			
		||||
   */
 | 
			
		||||
  miInitializeBackingStore (pScreen);
 | 
			
		||||
 | 
			
		||||
  /* KDrive does miDCInitialize right after miInitializeBackingStore */
 | 
			
		||||
  /* Setup the cursor routines */
 | 
			
		||||
#if CYGDEBUG
 | 
			
		||||
  winDebug ("winFinishScreenInitFB - Calling miDCInitialize ()\n");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,6 @@
 | 
			
		|||
if XORG
 | 
			
		||||
sdk_HEADERS =		\
 | 
			
		||||
	XIstubs.h	\
 | 
			
		||||
	bstore.h	\
 | 
			
		||||
	bstorestr.h	\
 | 
			
		||||
	callback.h	\
 | 
			
		||||
	closestr.h	\
 | 
			
		||||
	closure.h	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 1987 by the Regents of the University of California
 | 
			
		||||
 *
 | 
			
		||||
 * Permission to use, copy, modify, and distribute this software and its
 | 
			
		||||
 * documentation for any purpose and without fee is hereby granted, provided
 | 
			
		||||
 * that the above copyright notice appear in all copies.  The University of
 | 
			
		||||
 * California makes no representations about the suitability of this software
 | 
			
		||||
 * for any purpose.  It is provided "as is" without express or implied
 | 
			
		||||
 * warranty.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Moved here from mi to allow wrapping of lower level backing store functions.
 | 
			
		||||
 * -- 1997.10.27  Marc Aurele La France (tsi@xfree86.org)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _BSTORE_H_
 | 
			
		||||
#define _BSTORE_H_
 | 
			
		||||
 | 
			
		||||
#include "bstorestr.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _BSTORE_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -1,55 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 1987 by the Regents of the University of California
 | 
			
		||||
 *
 | 
			
		||||
 * Permission to use, copy, modify, and distribute this software and its
 | 
			
		||||
 * documentation for any purpose and without fee is hereby granted, provided
 | 
			
		||||
 * that the above copyright notice appear in all copies.  The University of
 | 
			
		||||
 * California makes no representations about the suitability of this software
 | 
			
		||||
 * for any purpose.  It is provided "as is" without express or implied
 | 
			
		||||
 * warranty.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Moved here from mi to allow wrapping of lower level backing store functions.
 | 
			
		||||
 * -- 1997.10.27  Marc Aurele La France (tsi@xfree86.org)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _BSTORESTR_H_
 | 
			
		||||
#define _BSTORESTR_H_
 | 
			
		||||
 | 
			
		||||
#include "gc.h"
 | 
			
		||||
#include "pixmap.h"
 | 
			
		||||
#include "region.h"
 | 
			
		||||
#include "window.h"
 | 
			
		||||
 | 
			
		||||
typedef    void (* BackingStoreSaveAreasProcPtr)(
 | 
			
		||||
	PixmapPtr /*pBackingPixmap*/,
 | 
			
		||||
	RegionPtr /*pObscured*/,
 | 
			
		||||
	int /*x*/,
 | 
			
		||||
	int /*y*/,
 | 
			
		||||
	WindowPtr /*pWin*/);
 | 
			
		||||
 | 
			
		||||
typedef    void (* BackingStoreRestoreAreasProcPtr)(
 | 
			
		||||
	PixmapPtr /*pBackingPixmap*/,
 | 
			
		||||
	RegionPtr /*pExposed*/,
 | 
			
		||||
	int /*x*/,
 | 
			
		||||
	int /*y*/,
 | 
			
		||||
	WindowPtr /*pWin*/);
 | 
			
		||||
 | 
			
		||||
typedef    void (* BackingStoreSetClipmaskRgnProcPtr)(
 | 
			
		||||
	GCPtr /*pBackingGC*/,
 | 
			
		||||
	RegionPtr /*pbackingCompositeClip*/);
 | 
			
		||||
 | 
			
		||||
typedef    PixmapPtr (* BackingStoreGetImagePixmapProcPtr)(void);
 | 
			
		||||
 | 
			
		||||
typedef    PixmapPtr (* BackingStoreGetSpansPixmapProcPtr)(void);
 | 
			
		||||
 | 
			
		||||
typedef struct _BSFuncs {
 | 
			
		||||
	BackingStoreSaveAreasProcPtr SaveAreas;
 | 
			
		||||
	BackingStoreRestoreAreasProcPtr RestoreAreas;
 | 
			
		||||
	BackingStoreSetClipmaskRgnProcPtr SetClipmaskRgn;
 | 
			
		||||
	BackingStoreGetImagePixmapProcPtr GetImagePixmap;
 | 
			
		||||
	BackingStoreGetSpansPixmapProcPtr GetSpansPixmap;
 | 
			
		||||
} BSFuncRec, *BSFuncPtr;
 | 
			
		||||
 | 
			
		||||
#endif /* _BSTORESTR_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +50,6 @@ SOFTWARE.
 | 
			
		|||
 | 
			
		||||
#include "screenint.h"
 | 
			
		||||
#include "regionstr.h"
 | 
			
		||||
#include "bstore.h"
 | 
			
		||||
#include "colormap.h"
 | 
			
		||||
#include "cursor.h"
 | 
			
		||||
#include "validate.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -213,48 +212,6 @@ typedef    PixmapPtr (* CreatePixmapProcPtr)(
 | 
			
		|||
typedef    Bool (* DestroyPixmapProcPtr)(
 | 
			
		||||
	PixmapPtr /*pPixmap*/);
 | 
			
		||||
 | 
			
		||||
typedef    void (* SaveDoomedAreasProcPtr)(
 | 
			
		||||
	WindowPtr /*pWindow*/,
 | 
			
		||||
	RegionPtr /*prgnSave*/,
 | 
			
		||||
	int /*xorg*/,
 | 
			
		||||
	int /*yorg*/);
 | 
			
		||||
 | 
			
		||||
typedef    RegionPtr (* RestoreAreasProcPtr)(
 | 
			
		||||
	WindowPtr /*pWindow*/,
 | 
			
		||||
	RegionPtr /*prgnRestore*/);
 | 
			
		||||
 | 
			
		||||
typedef    void (* ExposeCopyProcPtr)(
 | 
			
		||||
	WindowPtr /*pSrc*/,
 | 
			
		||||
	DrawablePtr /*pDst*/,
 | 
			
		||||
	GCPtr /*pGC*/,
 | 
			
		||||
	RegionPtr /*prgnExposed*/,
 | 
			
		||||
	int /*srcx*/,
 | 
			
		||||
	int /*srcy*/,
 | 
			
		||||
	int /*dstx*/,
 | 
			
		||||
	int /*dsty*/,
 | 
			
		||||
	unsigned long /*plane*/);
 | 
			
		||||
 | 
			
		||||
typedef    RegionPtr (* TranslateBackingStoreProcPtr)(
 | 
			
		||||
	WindowPtr /*pWindow*/,
 | 
			
		||||
	int /*windx*/,
 | 
			
		||||
	int /*windy*/,
 | 
			
		||||
	RegionPtr /*oldClip*/,
 | 
			
		||||
	int /*oldx*/,
 | 
			
		||||
	int /*oldy*/);
 | 
			
		||||
 | 
			
		||||
typedef    RegionPtr (* ClearBackingStoreProcPtr)(
 | 
			
		||||
	WindowPtr /*pWindow*/,
 | 
			
		||||
	int /*x*/,
 | 
			
		||||
	int /*y*/,
 | 
			
		||||
	int /*w*/,
 | 
			
		||||
	int /*h*/,
 | 
			
		||||
	Bool /*generateExposures*/);
 | 
			
		||||
 | 
			
		||||
typedef    void (* DrawGuaranteeProcPtr)(
 | 
			
		||||
	WindowPtr /*pWindow*/,
 | 
			
		||||
	GCPtr /*pGC*/,
 | 
			
		||||
	int /*guarantee*/);
 | 
			
		||||
    
 | 
			
		||||
typedef    Bool (* RealizeFontProcPtr)(
 | 
			
		||||
	ScreenPtr /*pScreen*/,
 | 
			
		||||
	FontPtr /*pFont*/);
 | 
			
		||||
| 
						 | 
				
			
			@ -388,14 +345,6 @@ typedef    Bool (* MarkOverlappedWindowsProcPtr)(
 | 
			
		|||
	WindowPtr /*firstChild*/,
 | 
			
		||||
	WindowPtr * /*pLayerWin*/);
 | 
			
		||||
 | 
			
		||||
typedef    Bool (* ChangeSaveUnderProcPtr)(
 | 
			
		||||
	WindowPtr /*pLayerWin*/,
 | 
			
		||||
	WindowPtr /*firstChild*/);
 | 
			
		||||
 | 
			
		||||
typedef    void (* PostChangeSaveUnderProcPtr)(
 | 
			
		||||
	WindowPtr /*pLayerWin*/,
 | 
			
		||||
	WindowPtr /*firstChild*/);
 | 
			
		||||
 | 
			
		||||
typedef    int (* ConfigNotifyProcPtr)(
 | 
			
		||||
	WindowPtr /*pWin*/,
 | 
			
		||||
	int /*x*/,
 | 
			
		||||
| 
						 | 
				
			
			@ -511,20 +460,6 @@ typedef struct _Screen {
 | 
			
		|||
    CreatePixmapProcPtr		CreatePixmap;
 | 
			
		||||
    DestroyPixmapProcPtr	DestroyPixmap;
 | 
			
		||||
 | 
			
		||||
    /* Backing store procedures */
 | 
			
		||||
 | 
			
		||||
    SaveDoomedAreasProcPtr	SaveDoomedAreas;
 | 
			
		||||
    RestoreAreasProcPtr		RestoreAreas;
 | 
			
		||||
    ExposeCopyProcPtr		ExposeCopy;
 | 
			
		||||
    TranslateBackingStoreProcPtr TranslateBackingStore;
 | 
			
		||||
    ClearBackingStoreProcPtr	ClearBackingStore;
 | 
			
		||||
    DrawGuaranteeProcPtr	DrawGuarantee;
 | 
			
		||||
    /*
 | 
			
		||||
     * A read/write copy of the lower level backing store vector is needed now
 | 
			
		||||
     * that the functions can be wrapped.
 | 
			
		||||
     */
 | 
			
		||||
    BSFuncRec			BackingStoreFuncs;
 | 
			
		||||
    
 | 
			
		||||
    /* Font procedures */
 | 
			
		||||
 | 
			
		||||
    RealizeFontProcPtr		RealizeFont;
 | 
			
		||||
| 
						 | 
				
			
			@ -584,8 +519,6 @@ typedef struct _Screen {
 | 
			
		|||
 | 
			
		||||
    MarkWindowProcPtr		MarkWindow;
 | 
			
		||||
    MarkOverlappedWindowsProcPtr MarkOverlappedWindows;
 | 
			
		||||
    ChangeSaveUnderProcPtr	ChangeSaveUnder;
 | 
			
		||||
    PostChangeSaveUnderProcPtr	PostChangeSaveUnder;
 | 
			
		||||
    ConfigNotifyProcPtr		ConfigNotify;
 | 
			
		||||
    MoveWindowProcPtr		MoveWindow;
 | 
			
		||||
    ResizeWindowProcPtr		ResizeWindow;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,8 +79,8 @@ typedef struct _DevCursorNode {
 | 
			
		|||
} DevCursNodeRec, *DevCursNodePtr, *DevCursorList;
 | 
			
		||||
 | 
			
		||||
typedef struct _WindowOpt {
 | 
			
		||||
    VisualID		visual;		   /* default: same as parent */
 | 
			
		||||
    CursorPtr		cursor;		   /* default: window.cursorNone */
 | 
			
		||||
    VisualID		visual;		   /* default: same as parent */
 | 
			
		||||
    Colormap		colormap;	   /* default: same as parent */
 | 
			
		||||
    Mask		dontPropagateMask; /* default: window.dontPropagate */
 | 
			
		||||
    Mask		otherEventMasks;   /* default: 0 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,9 +12,7 @@ libmi_la_SOURCES = 	\
 | 
			
		|||
	mi.h		\
 | 
			
		||||
	miarc.c		\
 | 
			
		||||
	mibitblt.c	\
 | 
			
		||||
	mibstore.c	\
 | 
			
		||||
	mibstore.h	\
 | 
			
		||||
	mibstorest.h	\
 | 
			
		||||
	micmap.c	\
 | 
			
		||||
	micmap.h	\
 | 
			
		||||
	micoord.h	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								mi/mi.h
								
								
								
								
							
							
						
						
									
										4
									
								
								mi/mi.h
								
								
								
								
							| 
						 | 
				
			
			@ -456,10 +456,6 @@ extern _X_EXPORT Bool miScreenInit(
 | 
			
		|||
    VisualPtr /*visuals*/
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
extern _X_EXPORT DevPrivateKey miAllocateGCPrivateIndex(
 | 
			
		||||
    void
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
/* mivaltree.c */
 | 
			
		||||
 | 
			
		||||
extern _X_EXPORT int miShapedWindowIn(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,10 +40,4 @@
 | 
			
		|||
void
 | 
			
		||||
miInitializeBackingStore (ScreenPtr pScreen)
 | 
			
		||||
{
 | 
			
		||||
    pScreen->SaveDoomedAreas = NULL;
 | 
			
		||||
    pScreen->RestoreAreas = NULL;
 | 
			
		||||
    pScreen->ExposeCopy = NULL;
 | 
			
		||||
    pScreen->TranslateBackingStore = NULL;
 | 
			
		||||
    pScreen->ClearBackingStore = NULL;
 | 
			
		||||
    pScreen->DrawGuarantee = NULL;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,8 +18,6 @@
 | 
			
		|||
 | 
			
		||||
#include "screenint.h"
 | 
			
		||||
 | 
			
		||||
extern _X_EXPORT void miInitializeBackingStore(
 | 
			
		||||
    ScreenPtr /*pScreen*/
 | 
			
		||||
);
 | 
			
		||||
#define miInitializeBackingStore(x) do {} while (0)
 | 
			
		||||
 | 
			
		||||
#endif /* _MIBSTORE_H */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,91 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * mibstorest.h
 | 
			
		||||
 *
 | 
			
		||||
 * internal structure definitions for mi backing store
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
Copyright 1989, 1998  The Open Group
 | 
			
		||||
 | 
			
		||||
Permission to use, copy, modify, distribute, and sell this software and its
 | 
			
		||||
documentation for any purpose is hereby granted without fee, provided that
 | 
			
		||||
the above copyright notice appear in all copies and that both that
 | 
			
		||||
copyright notice and this permission notice appear in supporting
 | 
			
		||||
documentation.
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in
 | 
			
		||||
all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
 | 
			
		||||
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
Except as contained in this notice, the name of The Open Group shall not be
 | 
			
		||||
used in advertising or otherwise to promote the sale, use or other dealings
 | 
			
		||||
in this Software without prior written authorization from The Open Group.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_DIX_CONFIG_H
 | 
			
		||||
#include <dix-config.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "mibstore.h"
 | 
			
		||||
#include "regionstr.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * One of these structures is allocated per GC used with a backing-store
 | 
			
		||||
 * drawable.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    GCPtr	    pBackingGC;	    /* Copy of the GC but with graphicsExposures
 | 
			
		||||
				     * set FALSE and the clientClip set to
 | 
			
		||||
				     * clip output to the valid regions of the
 | 
			
		||||
				     * backing pixmap. */
 | 
			
		||||
    int		    guarantee;      /* GuaranteeNothing, etc. */
 | 
			
		||||
    unsigned long   serialNumber;   /* clientClip computed time */
 | 
			
		||||
    unsigned long   stateChanges;   /* changes in parent gc since last copy */
 | 
			
		||||
    GCOps	    *wrapOps;	    /* wrapped ops */
 | 
			
		||||
    GCFuncs	    *wrapFuncs;	    /* wrapped funcs */
 | 
			
		||||
} miBSGCRec, *miBSGCPtr;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * one of these structures is allocated per Window with backing store
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    PixmapPtr	  pBackingPixmap;   /* Pixmap for saved areas */
 | 
			
		||||
    short	  x;		    /* origin of pixmap relative to window */
 | 
			
		||||
    short	  y;
 | 
			
		||||
    RegionRec	  SavedRegion;	    /* Valid area in pBackingPixmap */
 | 
			
		||||
    char    	  viewable; 	    /* Tracks pWin->viewable so SavedRegion may
 | 
			
		||||
				     * be initialized correctly when the window
 | 
			
		||||
				     * is first mapped */
 | 
			
		||||
    char    	  status;    	    /* StatusNoPixmap, etc. */
 | 
			
		||||
    char	  backgroundState;  /* background type */
 | 
			
		||||
    PixUnion	  background;	    /* background pattern */
 | 
			
		||||
} miBSWindowRec, *miBSWindowPtr;
 | 
			
		||||
 | 
			
		||||
#define StatusNoPixmap	1	/* pixmap has not been created */
 | 
			
		||||
#define StatusVirtual	2	/* pixmap is virtual, tiled with background */
 | 
			
		||||
#define StatusVDirty	3	/* pixmap is virtual, visiblt has contents */
 | 
			
		||||
#define StatusBadAlloc	4	/* pixmap create failed, do not try again */
 | 
			
		||||
#define StatusContents	5	/* pixmap is created, has valid contents */
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    /*
 | 
			
		||||
     * screen func wrappers
 | 
			
		||||
     */
 | 
			
		||||
    CloseScreenProcPtr	CloseScreen;
 | 
			
		||||
    GetImageProcPtr	GetImage;
 | 
			
		||||
    GetSpansProcPtr	GetSpans;
 | 
			
		||||
    ChangeWindowAttributesProcPtr ChangeWindowAttributes;
 | 
			
		||||
    CreateGCProcPtr	CreateGC;
 | 
			
		||||
    DestroyWindowProcPtr DestroyWindow;
 | 
			
		||||
} miBSScreenRec, *miBSScreenPtr;
 | 
			
		||||
| 
						 | 
				
			
			@ -269,8 +269,6 @@ miScreenInit(
 | 
			
		|||
    pScreen->wakeupData = (pointer)0;
 | 
			
		||||
    pScreen->MarkWindow = miMarkWindow;
 | 
			
		||||
    pScreen->MarkOverlappedWindows = miMarkOverlappedWindows;
 | 
			
		||||
    pScreen->ChangeSaveUnder = NULL;
 | 
			
		||||
    pScreen->PostChangeSaveUnder = NULL;
 | 
			
		||||
    pScreen->MoveWindow = miMoveWindow;
 | 
			
		||||
    pScreen->ResizeWindow = miSlideAndSizeWindow;
 | 
			
		||||
    pScreen->GetLayerWindow = miGetLayerWindow;
 | 
			
		||||
| 
						 | 
				
			
			@ -280,29 +278,11 @@ miScreenInit(
 | 
			
		|||
    pScreen->SetShape = miSetShape;
 | 
			
		||||
    pScreen->MarkUnrealizedWindow = miMarkUnrealizedWindow;
 | 
			
		||||
 | 
			
		||||
    pScreen->SaveDoomedAreas = 0;
 | 
			
		||||
    pScreen->RestoreAreas = 0;
 | 
			
		||||
    pScreen->ExposeCopy = 0;
 | 
			
		||||
    pScreen->TranslateBackingStore = 0;
 | 
			
		||||
    pScreen->ClearBackingStore = 0;
 | 
			
		||||
    pScreen->DrawGuarantee = 0;
 | 
			
		||||
 | 
			
		||||
    miSetZeroLineBias(pScreen, DEFAULTZEROLINEBIAS);
 | 
			
		||||
 | 
			
		||||
    return miScreenDevPrivateInit(pScreen, width, pbits);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static DevPrivateKeyRec privateKeyRec;
 | 
			
		||||
#define privateKey (&privateKeyRec)
 | 
			
		||||
 | 
			
		||||
DevPrivateKey
 | 
			
		||||
miAllocateGCPrivateIndex(void)
 | 
			
		||||
{
 | 
			
		||||
    if (!dixRegisterPrivateKey(&privateKeyRec, PRIVATE_GC, 0))
 | 
			
		||||
	return NULL;
 | 
			
		||||
    return privateKey;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
DevPrivateKeyRec miZeroLineScreenKeyRec;
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,8 +40,7 @@ typedef union _Validate {
 | 
			
		|||
	DDXPointRec	oldAbsCorner;	/* old window position */
 | 
			
		||||
	RegionPtr	borderVisible;	/* visible region of border, */
 | 
			
		||||
					/* non-null when size changes */
 | 
			
		||||
	Bool		resized;	/* unclipped winSize has changed - */
 | 
			
		||||
					/* don't call SaveDoomedAreas */
 | 
			
		||||
	Bool		resized;	/* unclipped winSize has changed */
 | 
			
		||||
    } before;
 | 
			
		||||
    struct AfterValidate {
 | 
			
		||||
	RegionRec	exposed;	/* exposed regions, absolute pos */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -471,18 +471,6 @@ RootlessComputeClips (WindowPtr pParent, ScreenPtr pScreen,
 | 
			
		|||
			       universe, &pParent->clipList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * One last thing: backing storage. We have to try to save what parts of
 | 
			
		||||
     * the window are about to be obscured. We can just subtract the universe
 | 
			
		||||
     * from the old clipList and get the areas that were in the old but aren't
 | 
			
		||||
     * in the new and, hence, are about to be obscured.
 | 
			
		||||
     */
 | 
			
		||||
    if (pParent->backStorage && !resized)
 | 
			
		||||
    {
 | 
			
		||||
	RegionSubtract(exposed, &pParent->clipList, universe);
 | 
			
		||||
	(* pScreen->SaveDoomedAreas)(pParent, exposed, dx, dy);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /* HACK ALERT - copying contents of regions, instead of regions */
 | 
			
		||||
    {
 | 
			
		||||
	RegionRec   tmp;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,10 +71,9 @@ typedef struct _GlyphHash {
 | 
			
		|||
 | 
			
		||||
typedef struct _GlyphSet {
 | 
			
		||||
    CARD32	    refcnt;
 | 
			
		||||
    PictFormatPtr   format;
 | 
			
		||||
    int		    fdepth;
 | 
			
		||||
    PictFormatPtr   format;
 | 
			
		||||
    GlyphHashRec    hash;
 | 
			
		||||
    int             maxPrivate;
 | 
			
		||||
    PrivateRec      *devPrivates;
 | 
			
		||||
} GlyphSetRec, *GlyphSetPtr;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -735,13 +735,12 @@ SetPictureToDefaults (PicturePtr    pPicture)
 | 
			
		|||
 | 
			
		||||
    pPicture->transform = 0;
 | 
			
		||||
 | 
			
		||||
    pPicture->dither = None;
 | 
			
		||||
    pPicture->filter = PictureGetFilterId (FilterNearest, -1, TRUE);
 | 
			
		||||
    pPicture->filter_params = 0;
 | 
			
		||||
    pPicture->filter_nparams = 0;
 | 
			
		||||
 | 
			
		||||
    pPicture->serialNumber = GC_CHANGE_SERIAL_BIT;
 | 
			
		||||
    pPicture->stateChanges = (1 << (CPLastBit+1)) - 1;
 | 
			
		||||
    pPicture->stateChanges = -1;
 | 
			
		||||
    pPicture->pSourcePict = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1261,7 +1260,7 @@ ChangePicture (PicturePtr	pPicture,
 | 
			
		|||
	    }
 | 
			
		||||
	    break;
 | 
			
		||||
	case CPDither:
 | 
			
		||||
	    pPicture->dither = NEXT_VAL(Atom);
 | 
			
		||||
	    (void) NEXT_VAL(Atom); /* unimplemented */
 | 
			
		||||
	    break;
 | 
			
		||||
	case CPComponentAlpha:
 | 
			
		||||
	    {
 | 
			
		||||
| 
						 | 
				
			
			@ -1480,7 +1479,6 @@ CopyPicture (PicturePtr	pSrc,
 | 
			
		|||
	    pDst->polyMode = pSrc->polyMode;
 | 
			
		||||
	    break;
 | 
			
		||||
	case CPDither:
 | 
			
		||||
	    pDst->dither = pSrc->dither;
 | 
			
		||||
	    break;
 | 
			
		||||
	case CPComponentAlpha:
 | 
			
		||||
	    pDst->componentAlpha = pSrc->componentAlpha;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -151,8 +151,6 @@ typedef struct _Picture {
 | 
			
		|||
    PictFormatShort format;	    /* PICT_FORMAT */
 | 
			
		||||
    int		    refcnt;
 | 
			
		||||
    CARD32	    id;
 | 
			
		||||
    PicturePtr	    pNext;	    /* chain on same drawable */
 | 
			
		||||
 | 
			
		||||
    unsigned int    repeat : 1;
 | 
			
		||||
    unsigned int    graphicsExposures : 1;
 | 
			
		||||
    unsigned int    subWindowMode : 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +160,11 @@ typedef struct _Picture {
 | 
			
		|||
    unsigned int    clientClipType : 2;
 | 
			
		||||
    unsigned int    componentAlpha : 1;
 | 
			
		||||
    unsigned int    repeatType : 2;
 | 
			
		||||
    unsigned int    unused : 21;
 | 
			
		||||
    unsigned int    filter : 3;
 | 
			
		||||
    unsigned int    stateChanges : CPLastBit;
 | 
			
		||||
    unsigned int    unused : 18 - CPLastBit;
 | 
			
		||||
 | 
			
		||||
    PicturePtr	    pNext;	    /* chain on same drawable */
 | 
			
		||||
 | 
			
		||||
    PicturePtr	    alphaMap;
 | 
			
		||||
    DDXPointRec	    alphaOrigin;
 | 
			
		||||
| 
						 | 
				
			
			@ -170,9 +172,6 @@ typedef struct _Picture {
 | 
			
		|||
    DDXPointRec	    clipOrigin;
 | 
			
		||||
    pointer	    clientClip;
 | 
			
		||||
 | 
			
		||||
    Atom	    dither;
 | 
			
		||||
 | 
			
		||||
    unsigned long   stateChanges;
 | 
			
		||||
    unsigned long   serialNumber;
 | 
			
		||||
 | 
			
		||||
    RegionPtr	    pCompositeClip;
 | 
			
		||||
| 
						 | 
				
			
			@ -181,10 +180,9 @@ typedef struct _Picture {
 | 
			
		|||
 | 
			
		||||
    PictTransform   *transform;
 | 
			
		||||
 | 
			
		||||
    int		    filter;
 | 
			
		||||
    SourcePictPtr   pSourcePict;
 | 
			
		||||
    xFixed	    *filter_params;
 | 
			
		||||
    int		    filter_nparams;
 | 
			
		||||
    SourcePictPtr   pSourcePict;
 | 
			
		||||
} PictureRec;
 | 
			
		||||
 | 
			
		||||
typedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id,
 | 
			
		||||
| 
						 | 
				
			
			@ -205,6 +203,7 @@ typedef struct {
 | 
			
		|||
#define PictFilterBest		4
 | 
			
		||||
 | 
			
		||||
#define PictFilterConvolution	5
 | 
			
		||||
/* if you add an 8th filter, expand the filter bitfield above */
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    char	    *alias;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -842,3 +842,81 @@ SProcXFixesExpandRegion (ClientPtr client)
 | 
			
		|||
    return (*ProcXFixesVector[stuff->xfixesReqType]) (client);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef PANORAMIX
 | 
			
		||||
#include "panoramiX.h"
 | 
			
		||||
#include "panoramiXsrv.h"
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
PanoramiXFixesSetGCClipRegion (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    REQUEST(xXFixesSetGCClipRegionReq);
 | 
			
		||||
    int		    result = Success, j;
 | 
			
		||||
    PanoramiXRes    *gc;
 | 
			
		||||
    REQUEST_SIZE_MATCH(xXFixesSetGCClipRegionReq);
 | 
			
		||||
 | 
			
		||||
    if ((result = dixLookupResourceByType((void **)&gc, stuff->gc, XRT_GC,
 | 
			
		||||
					  client, DixWriteAccess))) {
 | 
			
		||||
	client->errorValue = stuff->gc;
 | 
			
		||||
	return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_BACKWARD(j) {
 | 
			
		||||
        stuff->gc = gc->info[j].id;
 | 
			
		||||
        result = (*PanoramiXSaveXFixesVector[X_XFixesSetGCClipRegion]) (client);
 | 
			
		||||
        if(result != Success) break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
PanoramiXFixesSetWindowShapeRegion (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    int		    result = Success, j;
 | 
			
		||||
    PanoramiXRes    *win;
 | 
			
		||||
    REQUEST(xXFixesSetWindowShapeRegionReq);
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH(xXFixesSetWindowShapeRegionReq);
 | 
			
		||||
 | 
			
		||||
    if ((result = dixLookupResourceByType((void **)&win, stuff->dest,
 | 
			
		||||
					  XRT_WINDOW, client,
 | 
			
		||||
					  DixWriteAccess))) {
 | 
			
		||||
	client->errorValue = stuff->dest;
 | 
			
		||||
	return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_FORWARD(j) {
 | 
			
		||||
	stuff->dest = win->info[j].id;
 | 
			
		||||
	result = (*PanoramiXSaveXFixesVector[X_XFixesSetWindowShapeRegion]) (client);
 | 
			
		||||
        if(result != Success) break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
PanoramiXFixesSetPictureClipRegion (ClientPtr client)
 | 
			
		||||
{
 | 
			
		||||
    REQUEST(xXFixesSetPictureClipRegionReq);
 | 
			
		||||
    int		    result = Success, j;
 | 
			
		||||
    PanoramiXRes    *pict;
 | 
			
		||||
 | 
			
		||||
    REQUEST_SIZE_MATCH (xXFixesSetPictureClipRegionReq);
 | 
			
		||||
 | 
			
		||||
    if ((result = dixLookupResourceByType((void **)&pict, stuff->picture,
 | 
			
		||||
					  XRT_PICTURE, client,
 | 
			
		||||
					  DixWriteAccess))) {
 | 
			
		||||
	client->errorValue = stuff->picture;
 | 
			
		||||
	return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FOR_NSCREENS_BACKWARD(j) {
 | 
			
		||||
        stuff->picture = pict->info[j].id;
 | 
			
		||||
	result = (*PanoramiXSaveXFixesVector[X_XFixesSetPictureClipRegion]) (client);
 | 
			
		||||
        if(result != Success) break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -262,3 +262,33 @@ XFixesExtensionInit(void)
 | 
			
		|||
	SetResourceTypeErrorValue(RegionResType, XFixesErrorBase + BadRegion);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef PANORAMIX
 | 
			
		||||
 | 
			
		||||
int (*PanoramiXSaveXFixesVector[XFixesNumberRequests])(ClientPtr);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
PanoramiXFixesInit (void)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < XFixesNumberRequests; i++)
 | 
			
		||||
	PanoramiXSaveXFixesVector[i] = ProcXFixesVector[i];
 | 
			
		||||
    /*
 | 
			
		||||
     * Stuff in Xinerama aware request processing hooks
 | 
			
		||||
     */
 | 
			
		||||
    ProcXFixesVector[X_XFixesSetGCClipRegion] = PanoramiXFixesSetGCClipRegion;
 | 
			
		||||
    ProcXFixesVector[X_XFixesSetWindowShapeRegion] = PanoramiXFixesSetWindowShapeRegion;
 | 
			
		||||
    ProcXFixesVector[X_XFixesSetPictureClipRegion] = PanoramiXFixesSetPictureClipRegion;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
PanoramiXFixesReset (void)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < XFixesNumberRequests; i++)
 | 
			
		||||
	ProcXFixesVector[i] = PanoramiXSaveXFixesVector[i];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -255,6 +255,15 @@ ProcXFixesExpandRegion (ClientPtr client);
 | 
			
		|||
int
 | 
			
		||||
SProcXFixesExpandRegion (ClientPtr client);
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
PanoramiXFixesSetGCClipRegion (ClientPtr client);
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
PanoramiXFixesSetWindowShapeRegion (ClientPtr client);
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
PanoramiXFixesSetPictureClipRegion (ClientPtr client);
 | 
			
		||||
 | 
			
		||||
/* Cursor Visibility (Version 4) */
 | 
			
		||||
 | 
			
		||||
int 
 | 
			
		||||
| 
						 | 
				
			
			@ -269,4 +278,8 @@ ProcXFixesShowCursor (ClientPtr client);
 | 
			
		|||
int 
 | 
			
		||||
SProcXFixesShowCursor (ClientPtr client);
 | 
			
		||||
 | 
			
		||||
extern int (*PanoramiXSaveXFixesVector[XFixesNumberRequests])(ClientPtr);
 | 
			
		||||
void PanoramiXFixesInit (void);
 | 
			
		||||
void PanoramiXFixesReset (void);
 | 
			
		||||
 | 
			
		||||
#endif /* _XFIXESINT_H_ */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue