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,16 +59,9 @@ xf86VTSwitchAway(void)
|
|||
{
|
||||
xf86Info.vtRequestsPending = FALSE;
|
||||
if (ioctl(xf86Info.consoleFd, VT_RELDISP, 1) < 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef OSSWITCHAWAY
|
||||
OSSWITCHAWAY;
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
Bool
|
||||
|
@ -80,13 +69,9 @@ xf86VTSwitchTo(void)
|
|||
{
|
||||
xf86Info.vtRequestsPending = FALSE;
|
||||
if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
Bool
|
||||
|
|
|
@ -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
Block a user