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