diff options
Diffstat (limited to 'xc/programs/Xserver')
60 files changed, 669 insertions, 349 deletions
diff --git a/xc/programs/Xserver/GL/Imakefile b/xc/programs/Xserver/GL/Imakefile index 34b3dd0ef..e757143f6 100644 --- a/xc/programs/Xserver/GL/Imakefile +++ b/xc/programs/Xserver/GL/Imakefile @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/Imakefile,v 1.5 1999/08/14 10:49:22 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/Imakefile,v 1.14 1999/06/07 12:56:02 faith Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/Imakefile,v 1.6 2000/02/23 04:46:51 martin Exp $ #define IHaveModules #include <Server.tmpl> diff --git a/xc/programs/Xserver/GL/dri/Imakefile b/xc/programs/Xserver/GL/dri/Imakefile index eec83ee85..0bda344d3 100644 --- a/xc/programs/Xserver/GL/dri/Imakefile +++ b/xc/programs/Xserver/GL/dri/Imakefile @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/dri/Imakefile,v 1.4 1999/08/14 10:49:23 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/dri/Imakefile,v 1.13 1999/06/07 12:55:30 faith Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/dri/Imakefile,v 1.5 2000/02/23 04:46:52 martin Exp $ #define IHaveModules #include <Server.tmpl> diff --git a/xc/programs/Xserver/GL/dri/dri.c b/xc/programs/Xserver/GL/dri/dri.c index 2996ecd27..68e638f27 100644 --- a/xc/programs/Xserver/GL/dri/dri.c +++ b/xc/programs/Xserver/GL/dri/dri.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.11 2000/02/15 07:13:32 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.13 2000/03/04 01:53:01 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -223,11 +223,12 @@ Bool DRIFinishScreenInit(ScreenPtr pScreen) { DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); + DRIInfoPtr pDRIInfo = pDRIPriv->pDriverInfo; DRIContextFlags flags = 0; DRIContextPrivPtr pDRIContextPriv; /* Set up flags for DRICreateContextPriv */ - switch (pDRIPriv->pDriverInfo->driverSwapMethod) { + switch (pDRIInfo->driverSwapMethod) { case DRI_KERNEL_SWAP: flags = DRI_CONTEXT_2DONLY; break; case DRI_HIDE_X_CONTEXT: flags = DRI_CONTEXT_PRESERVED; break; } @@ -248,7 +249,7 @@ DRIFinishScreenInit(ScreenPtr pScreen) pDRIPriv->hiddenContextStore = NULL; pDRIPriv->partial3DContextStore = NULL; - switch(pDRIPriv->pDriverInfo->driverSwapMethod) { + switch(pDRIInfo->driverSwapMethod) { case DRI_HIDE_X_CONTEXT: /* Server will handle 3D swaps, and hide 2D swaps from kernel. * Register server context as a preserved context. @@ -256,7 +257,7 @@ DRIFinishScreenInit(ScreenPtr pScreen) /* allocate memory for hidden context store */ pDRIPriv->hiddenContextStore - = (void *)xalloc(pDRIPriv->pDriverInfo->contextSize); + = (void *)xalloc(pDRIInfo->contextSize); if (!pDRIPriv->hiddenContextStore) { DRIDrvMsg(pScreen->myNum, X_ERROR, "failed to allocate hidden context\n"); @@ -266,7 +267,7 @@ DRIFinishScreenInit(ScreenPtr pScreen) /* allocate memory for partial 3D context store */ pDRIPriv->partial3DContextStore - = (void *)xalloc(pDRIPriv->pDriverInfo->contextSize); + = (void *)xalloc(pDRIInfo->contextSize); if (!pDRIPriv->partial3DContextStore) { DRIDrvMsg(pScreen->myNum, X_ERROR, "[DRI] failed to allocate partial 3D context\n"); @@ -276,8 +277,8 @@ DRIFinishScreenInit(ScreenPtr pScreen) } /* save initial context store */ - if (pDRIPriv->pDriverInfo->SwapContext) { - (*pDRIPriv->pDriverInfo->SwapContext)( + if (pDRIInfo->SwapContext) { + (*pDRIInfo->SwapContext)( pScreen, DRI_NO_SYNC, DRI_2D_CONTEXT, @@ -310,23 +311,29 @@ DRIFinishScreenInit(ScreenPtr pScreen) } /* Wrap DRI support */ - pDRIPriv->WakeupHandler = pScreen->WakeupHandler; - pDRIPriv->BlockHandler = pScreen->BlockHandler; - pDRIPriv->ValidateTree = pScreen->ValidateTree; - pDRIPriv->PostValidateTree = pScreen->PostValidateTree; - pScreen->WakeupHandler = DRIWakeupHandler; - pScreen->BlockHandler = DRIBlockHandler; - pScreen->ValidateTree = DRIValidateTree; - pScreen->PostValidateTree = DRIPostValidateTree; + if (pDRIInfo->wrap.ValidateTree) { + pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree; + pScreen->ValidateTree = pDRIInfo->wrap.ValidateTree; + } + if (pDRIInfo->wrap.PostValidateTree) { + pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree; + pScreen->PostValidateTree = pDRIInfo->wrap.PostValidateTree; + } /* Potentential optimization: don't wrap the following routines if - pDRIPriv->pDriverInfo->bufferRequests == DRI_NO_WINDOWS */ - pDRIPriv->PaintWindowBackground = pScreen->PaintWindowBackground; - pDRIPriv->PaintWindowBorder = pScreen->PaintWindowBorder; - pDRIPriv->CopyWindow = pScreen->CopyWindow; - pScreen->PaintWindowBackground = DRIPaintWindow; - pScreen->PaintWindowBorder = DRIPaintWindow; - pScreen->CopyWindow = DRICopyWindow; + pDRIInfo->bufferRequests == DRI_NO_WINDOWS */ + if (pDRIInfo->wrap.PaintWindowBackground) { + pDRIPriv->wrap.PaintWindowBackground = pScreen->PaintWindowBackground; + pScreen->PaintWindowBackground = pDRIInfo->wrap.PaintWindowBackground; + } + if (pDRIInfo->wrap.PaintWindowBorder) { + pDRIPriv->wrap.PaintWindowBorder = pScreen->PaintWindowBorder; + pScreen->PaintWindowBorder = pDRIInfo->wrap.PaintWindowBorder; + } + if (pDRIInfo->wrap.CopyWindow) { + pDRIPriv->wrap.CopyWindow = pScreen->CopyWindow; + pScreen->CopyWindow = pDRIInfo->wrap.CopyWindow; + } miClipNotify(DRIClipNotify); DRIDrvMsg(pScreen->myNum, X_INFO, "[DRI] installation complete\n"); @@ -419,6 +426,8 @@ DRIExtensionInit(void) return FALSE; } + RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL); + return TRUE; } @@ -938,8 +947,21 @@ DRIGetDeviceInfo( DRIInfoPtr DRICreateInfoRec(void) { - DRIInfoPtr inforec = xalloc(sizeof(DRIInfoRec)); + DRIInfoPtr inforec = (DRIInfoPtr)xalloc(sizeof(DRIInfoRec)); + if (!inforec) return NULL; + + /* Initialize defaults */ inforec->busIdString = NULL; + + /* Wrapped function defaults */ + inforec->wrap.WakeupHandler = DRIDoWakeupHandler; + inforec->wrap.BlockHandler = DRIDoBlockHandler; + inforec->wrap.PaintWindowBackground = DRIPaintWindow; + inforec->wrap.PaintWindowBorder = DRIPaintWindow; + inforec->wrap.CopyWindow = DRICopyWindow; + inforec->wrap.ValidateTree = DRIValidateTree; + inforec->wrap.PostValidateTree = DRIPostValidateTree; + return inforec; } @@ -952,6 +974,44 @@ DRIDestroyInfoRec(DRIInfoPtr DRIInfo) void DRIWakeupHandler( + pointer wakeupData, + int result, + pointer pReadmask) +{ + int i; + + for (i = 0; i < screenInfo.numScreens; i++) { + ScreenPtr pScreen = screenInfo.screens[i]; + DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); + + if (pDRIPriv && + pDRIPriv->pDriverInfo->wrap.WakeupHandler) + (*pDRIPriv->pDriverInfo->wrap.WakeupHandler)(i, wakeupData, + result, pReadmask); + } +} + +void +DRIBlockHandler( + pointer blockData, + OSTimePtr pTimeout, + pointer pReadmask) +{ + int i; + + for (i = 0; i < screenInfo.numScreens; i++) { + ScreenPtr pScreen = screenInfo.screens[i]; + DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); + + if (pDRIPriv && + pDRIPriv->pDriverInfo->wrap.BlockHandler) + (*pDRIPriv->pDriverInfo->wrap.BlockHandler)(i, blockData, + pTimeout, pReadmask); + } +} + +void +DRIDoWakeupHandler( int screenNum, pointer wakeupData, unsigned long result, @@ -960,7 +1020,7 @@ DRIWakeupHandler( ScreenPtr pScreen = screenInfo.screens[screenNum]; DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); - DRILock(pScreen); + DRILock(pScreen, 0); if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { /* hide X context by swapping 2D component here */ (*pDRIPriv->pDriverInfo->SwapContext)(pScreen, @@ -970,38 +1030,18 @@ DRIWakeupHandler( DRI_2D_CONTEXT, pDRIPriv->hiddenContextStore); } - - /* unwrap */ - pScreen->WakeupHandler = pDRIPriv->WakeupHandler; - - /* call lower layers */ - (*pScreen->WakeupHandler)(screenNum, wakeupData, result, pReadmask); - - /* rewrap */ - pDRIPriv->WakeupHandler = pScreen->WakeupHandler; - pScreen->WakeupHandler = DRIWakeupHandler; } void -DRIBlockHandler( +DRIDoBlockHandler( int screenNum, pointer blockData, - struct timeval **pTimeout, + pointer pTimeout, pointer pReadmask) { ScreenPtr pScreen = screenInfo.screens[screenNum]; DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); - /* unwrap */ - pScreen->BlockHandler = pDRIPriv->BlockHandler; - - /* call lower layers */ - (*pScreen->BlockHandler)(screenNum, blockData, pTimeout, pReadmask); - - /* rewrap */ - pDRIPriv->BlockHandler = pScreen->BlockHandler; - pScreen->BlockHandler = DRIBlockHandler; - if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { /* hide X context by swapping 2D component here */ (*pDRIPriv->pDriverInfo->SwapContext)(pScreen, @@ -1210,13 +1250,13 @@ DRIPaintWindow( } /* unwrap */ - pScreen->PaintWindowBackground = pDRIPriv->PaintWindowBackground; + pScreen->PaintWindowBackground = pDRIPriv->wrap.PaintWindowBackground; /* call lower layers */ (*pScreen->PaintWindowBackground)(pWin, prgn, what); /* rewrap */ - pDRIPriv->PaintWindowBackground = pScreen->PaintWindowBackground; + pDRIPriv->wrap.PaintWindowBackground = pScreen->PaintWindowBackground; pScreen->PaintWindowBackground = DRIPaintWindow; } else { @@ -1227,13 +1267,13 @@ DRIPaintWindow( } /* unwrap */ - pScreen->PaintWindowBorder = pDRIPriv->PaintWindowBorder; + pScreen->PaintWindowBorder = pDRIPriv->wrap.PaintWindowBorder; /* call lower layers */ (*pScreen->PaintWindowBorder)(pWin, prgn, what); /* rewrap */ - pDRIPriv->PaintWindowBorder = pScreen->PaintWindowBorder; + pDRIPriv->wrap.PaintWindowBorder = pScreen->PaintWindowBorder; pScreen->PaintWindowBorder = DRIPaintWindow; } } @@ -1269,13 +1309,13 @@ DRICopyWindow( } /* unwrap */ - pScreen->CopyWindow = pDRIPriv->CopyWindow; + pScreen->CopyWindow = pDRIPriv->wrap.CopyWindow; /* call lower layers */ (*pScreen->CopyWindow)(pWin, ptOldOrg, prgnSrc); /* rewrap */ - pDRIPriv->CopyWindow = pScreen->CopyWindow; + pDRIPriv->wrap.CopyWindow = pScreen->CopyWindow; pScreen->CopyWindow = DRICopyWindow; } @@ -1358,7 +1398,7 @@ DRIValidateTree( } /* Call kernel to release lock */ - DRM_UNLOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext); + DRIUnlock(pScreen); /* Grab drawable spin lock: a time out between 10 and 30 seconds is appropriate, since this should never time out except in the case of @@ -1367,8 +1407,7 @@ DRIValidateTree( DRISpinLockTimeout(&pDRIPriv->pSAREA->drawable_lock, 1, 10000); /* 10 secs */ /* Call kernel flush outstanding buffers and relock */ - DRM_LOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext, - DRM_LOCK_QUIESCENT|DRM_LOCK_FLUSH_ALL); + DRILock(pScreen, DRM_LOCK_QUIESCENT|DRM_LOCK_FLUSH_ALL); /* Switch back to our 2D context if the X context is hidden */ if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { @@ -1382,13 +1421,13 @@ DRIValidateTree( } /* unwrap */ - pScreen->ValidateTree = pDRIPriv->ValidateTree; + pScreen->ValidateTree = pDRIPriv->wrap.ValidateTree; /* call lower layers */ returnValue = (*pScreen->ValidateTree)(pParent, pChild, kind); /* rewrap */ - pDRIPriv->ValidateTree = pScreen->ValidateTree; + pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree; pScreen->ValidateTree = DRIValidateTree; return returnValue; @@ -1410,15 +1449,15 @@ DRIPostValidateTree( } pDRIPriv = DRI_SCREEN_PRIV(pScreen); - if (pDRIPriv->PostValidateTree) { + if (pDRIPriv->wrap.PostValidateTree) { /* unwrap */ - pScreen->PostValidateTree = pDRIPriv->PostValidateTree; + pScreen->PostValidateTree = pDRIPriv->wrap.PostValidateTree; /* call lower layers */ (*pScreen->PostValidateTree)(pParent, pChild, kind); /* rewrap */ - pDRIPriv->PostValidateTree = pScreen->PostValidateTree; + pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree; pScreen->PostValidateTree = DRIPostValidateTree; } @@ -1464,11 +1503,11 @@ DRIGetDrawableIndex( } void -DRILock(ScreenPtr pScreen) { +DRILock(ScreenPtr pScreen, int flags) { DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); if (!lockRefCount) - DRM_LIGHT_LOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext); + DRM_LOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext, flags); lockRefCount++; } diff --git a/xc/programs/Xserver/GL/dri/dri.h b/xc/programs/Xserver/GL/dri/dri.h index e04027161..d82ec5359 100644 --- a/xc/programs/Xserver/GL/dri/dri.h +++ b/xc/programs/Xserver/GL/dri/dri.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dri.h,v 1.7 2000/02/14 06:27:13 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/dri.h,v 1.9 2000/03/04 01:53:02 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -69,6 +69,21 @@ typedef int DRIWindowRequests; #define DRI_3D_WINDOWS_ONLY 1 #define DRI_ALL_WINDOWS 2 +/* + * These functions can be wrapped by the DRI. Each of these have + * generic default funcs (initialized in DRICreateInfoRec) and can be + * overridden by the driver in its [driver]DRIScreenInit function. + */ +typedef struct { + ScreenWakeupHandlerProcPtr WakeupHandler; + ScreenBlockHandlerProcPtr BlockHandler; + PaintWindowBackgroundProcPtr PaintWindowBackground; + PaintWindowBorderProcPtr PaintWindowBorder; + CopyWindowProcPtr CopyWindow; + ValidateTreeProcPtr ValidateTree; + PostValidateTreeProcPtr PostValidateTree; +} DRIWrappedFuncsRec, *DRIWrappedFuncsPtr; + typedef struct { /* driver call back functions */ Bool (*CreateContext)(ScreenPtr pScreen, @@ -93,6 +108,9 @@ typedef struct { RegionPtr prgnSrc, CARD32 index); + /* wrapped functions */ + DRIWrappedFuncsRec wrap; + /* device info */ char* drmDriverName; char* clientDriverName; @@ -182,14 +200,22 @@ DRIInfoPtr DRICreateInfoRec(void); void DRIDestroyInfoRec(DRIInfoPtr DRIInfo); Bool DRIFinishScreenInit(ScreenPtr pScreen); void DRIWakeupHandler( + pointer wakeupData, + int result, + pointer pReadmask); +void DRIBlockHandler( + pointer blockData, + OSTimePtr pTimeout, + pointer pReadmask); +void DRIDoWakeupHandler( int screenNum, pointer wakeupData, unsigned long result, pointer pReadmask); -void DRIBlockHandler( +void DRIDoBlockHandler( int screenNum, pointer blockData, - struct timeval **pTimeout, + pointer pTimeout, pointer pReadmask); void DRISwapContext( int drmFD, @@ -218,7 +244,7 @@ void DRIClipNotify( int dy); CARD32 DRIGetDrawableIndex( WindowPtr pWin); -void DRILock(ScreenPtr pScreen); +void DRILock(ScreenPtr pScreen, int flags); void DRIUnlock(ScreenPtr pScreen); void *DRIGetSAREAPrivate(ScreenPtr pScreen); DRIContextPrivPtr diff --git a/xc/programs/Xserver/GL/dri/drimodule.c b/xc/programs/Xserver/GL/dri/drimodule.c index 9ea8c961b..e4e12df8b 100644 --- a/xc/programs/Xserver/GL/dri/drimodule.c +++ b/xc/programs/Xserver/GL/dri/drimodule.c @@ -24,14 +24,13 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/GL/dri/drimodule.c,v 1.2 2000/01/25 18:37:36 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/drimodule.c,v 1.3 2000/02/23 04:46:52 martin Exp $ */ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * Rickard E. Faith <faith@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/dri/drimodule.c,v 1.1 1999/06/07 12:55:30 faith Exp $ */ #include "xf86Module.h" diff --git a/xc/programs/Xserver/GL/dri/dristruct.h b/xc/programs/Xserver/GL/dri/dristruct.h index 67da27c7a..392be3d97 100644 --- a/xc/programs/Xserver/GL/dri/dristruct.h +++ b/xc/programs/Xserver/GL/dri/dristruct.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.5 2000/02/14 06:27:14 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.7 2000/03/02 16:07:38 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Authors: * Jens Owen <jens@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/dri/dristruct.h,v 1.28 1999/08/04 18:12:56 faith Exp $ */ #ifndef DRI_STRUCT_H @@ -88,29 +87,7 @@ typedef struct _DRIScreenPrivRec void** hiddenContextStore; /* hidden X context */ void** partial3DContextStore; /* parital 3D context */ DRIInfoPtr pDriverInfo; - void (*WakeupHandler)(int screenNum, - pointer wakeupData, - unsigned long result, - pointer pReadmask); - void (*BlockHandler)(int screenNum, - pointer blockData, - struct timeval **pTimeout, - pointer pReadmask); - void (*PaintWindowBackground)(WindowPtr pWin, - RegionPtr prgn, - int what); - void (*PaintWindowBorder)(WindowPtr pWin, - RegionPtr prgn, - int what); - void (*CopyWindow)(WindowPtr pWin, - DDXPointRec ptOldOrg, - RegionPtr prgnSrc); - int (*ValidateTree)(WindowPtr pParent, - WindowPtr pChild, - VTKind kind); - void (*PostValidateTree)(WindowPtr pParent, - WindowPtr pChild, - VTKind kind); + DRIWrappedFuncsRec wrap; DrawablePtr DRIDrawables[SAREA_MAX_DRAWABLES]; } DRIScreenPrivRec, *DRIScreenPrivPtr; diff --git a/xc/programs/Xserver/GL/dri/sarea.h b/xc/programs/Xserver/GL/dri/sarea.h index 86d4c4da2..c1054f0a0 100644 --- a/xc/programs/Xserver/GL/dri/sarea.h +++ b/xc/programs/Xserver/GL/dri/sarea.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/sarea.h,v 1.3 2000/02/14 06:27:14 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/sarea.h,v 1.4 2000/02/23 04:46:52 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Kevin E. Martin <kevin@precisioninsight.com> * Jens Owen <jens@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/dri/sarea.h,v 1.9 1999/05/19 01:26:35 martin Exp $ */ #ifndef _SAREA_H_ diff --git a/xc/programs/Xserver/GL/dri/xf86dri.c b/xc/programs/Xserver/GL/dri/xf86dri.c index daac61615..b39b57450 100644 --- a/xc/programs/Xserver/GL/dri/xf86dri.c +++ b/xc/programs/Xserver/GL/dri/xf86dri.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.5 2000/02/15 07:13:32 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.6 2000/02/23 04:46:52 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Kevin E. Martin <kevin@precisioninsight.com> * Jens Owen <jens@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.20 1999/06/24 19:10:40 faith Exp $ */ #if XFree86LOADER diff --git a/xc/programs/Xserver/GL/glx/Imakefile b/xc/programs/Xserver/GL/glx/Imakefile index c9e6767c4..be20058f1 100644 --- a/xc/programs/Xserver/GL/glx/Imakefile +++ b/xc/programs/Xserver/GL/glx/Imakefile @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/glx/Imakefile,v 1.6 1999/06/14 14:28:46 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/glx/Imakefile,v 1.11 1999/05/27 03:43:33 jens Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/glx/Imakefile,v 1.7 2000/02/23 04:46:53 martin Exp $ #define IHaveModules #include <Server.tmpl> diff --git a/xc/programs/Xserver/GL/glxmodule.c b/xc/programs/Xserver/GL/glxmodule.c index 6322f453b..a874bb6c9 100644 --- a/xc/programs/Xserver/GL/glxmodule.c +++ b/xc/programs/Xserver/GL/glxmodule.c @@ -25,13 +25,12 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/GL/glxmodule.c,v 1.8 2000/02/18 16:23:12 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/glxmodule.c,v 1.9 2000/02/23 04:46:51 martin Exp $ */ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/glxmodule.c,v 1.10 1999/06/08 11:01:04 faith Exp $ */ #include "xf86Module.h" diff --git a/xc/programs/Xserver/GL/include/GL/xf86glx.h b/xc/programs/Xserver/GL/include/GL/xf86glx.h index f8a668cd1..7a467b9b5 100644 --- a/xc/programs/Xserver/GL/include/GL/xf86glx.h +++ b/xc/programs/Xserver/GL/include/GL/xf86glx.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/include/GL/xf86glx.h,v 1.3 1999/06/14 07:31:41 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/include/GL/xf86glx.h,v 1.4 2000/02/23 04:46:54 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/include/GL/xf86glx.h,v 1.6 1999/06/10 00:31:50 martin Exp $ */ #include "miscstruct.h" diff --git a/xc/programs/Xserver/GL/mesa/Imakefile b/xc/programs/Xserver/GL/mesa/Imakefile index 397cb646d..45a2e7721 100644 --- a/xc/programs/Xserver/GL/mesa/Imakefile +++ b/xc/programs/Xserver/GL/mesa/Imakefile @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/Imakefile,v 1.3 1999/06/14 14:37:12 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/Imakefile,v 1.3 1999/03/15 17:11:59 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/Imakefile,v 1.4 2000/02/23 04:46:54 martin Exp $ #define IHaveModules #include <Server.tmpl> diff --git a/xc/programs/Xserver/GL/mesa/include/GL/Imakefile b/xc/programs/Xserver/GL/mesa/include/GL/Imakefile index 654d183fd..3bef7e2db 100644 --- a/xc/programs/Xserver/GL/mesa/include/GL/Imakefile +++ b/xc/programs/Xserver/GL/mesa/include/GL/Imakefile @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/include/GL/Imakefile,v 1.3 2000/02/08 17:18:51 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/include/GL/Imakefile,v 1.6 1999/03/15 21:36:09 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/include/GL/Imakefile,v 1.4 2000/02/23 04:46:55 martin Exp $ #define IHaveModules #include <Server.tmpl> diff --git a/xc/programs/Xserver/GL/mesa/include/Imakefile b/xc/programs/Xserver/GL/mesa/include/Imakefile index c42ca7c75..01129e606 100644 --- a/xc/programs/Xserver/GL/mesa/include/Imakefile +++ b/xc/programs/Xserver/GL/mesa/include/Imakefile @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/include/Imakefile,v 1.2 1999/06/14 07:31:41 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/include/Imakefile,v 1.4 1999/03/15 21:36:09 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/include/Imakefile,v 1.3 2000/02/23 04:46:54 martin Exp $ #define IHaveModules #include <Server.tmpl> diff --git a/xc/programs/Xserver/GL/mesa/src/GLcoremodule.c b/xc/programs/Xserver/GL/mesa/src/GLcoremodule.c index aa8a85c8a..422da4820 100644 --- a/xc/programs/Xserver/GL/mesa/src/GLcoremodule.c +++ b/xc/programs/Xserver/GL/mesa/src/GLcoremodule.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/GLcoremodule.c,v 1.4 2000/02/18 16:23:12 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/GLcoremodule.c,v 1.5 2000/02/23 04:46:55 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/mesa/src/GLcoremodule.c,v 1.6 1999/05/27 03:43:46 jens Exp $ */ #include "xf86Module.h" diff --git a/xc/programs/Xserver/GL/mesa/src/Imakefile b/xc/programs/Xserver/GL/mesa/src/Imakefile index b4e753ede..29ae102d4 100644 --- a/xc/programs/Xserver/GL/mesa/src/Imakefile +++ b/xc/programs/Xserver/GL/mesa/src/Imakefile @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/src/Imakefile,v 1.11 2000/02/18 12:18:56 tsi Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/src/Imakefile,v 1.9 1999/05/27 03:43:46 jens Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/src/Imakefile,v 1.13 2000/03/02 16:07:38 martin Exp $ #define IHaveModules #include <Server.tmpl> @@ -67,6 +66,9 @@ LinkSourceFile(fixed.h,../../../../../extras/Mesa/src) LinkSourceFile(fog.c,../../../../../extras/Mesa/src) LinkSourceFile(fog.h,../../../../../extras/Mesa/src) LinkSourceFile(fog_tmp.h,../../../../../extras/Mesa/src) +LinkSourceFile(general_clip.h,../../../../../extras/Mesa/src) +LinkSourceFile(get.c,../../../../../extras/Mesa/src) +LinkSourceFile(get.h,../../../../../extras/Mesa/src) LinkSourceFile(glapi.h,../../../../../extras/Mesa/src) LinkSourceFile(glapi.c,../../../../../extras/Mesa/src) LinkSourceFile(glapioffsets.h,../../../../../extras/Mesa/src) @@ -77,9 +79,6 @@ LinkSourceFile(glapitemp.h,../../../../../extras/Mesa/src) LinkSourceFile(glheader.h,../../../../../extras/Mesa/src) LinkSourceFile(glthread.c,../../../../../extras/Mesa/src) LinkSourceFile(glthread.h,../../../../../extras/Mesa/src) -LinkSourceFile(general_clip.h,../../../../../extras/Mesa/src) -LinkSourceFile(get.c,../../../../../extras/Mesa/src) -LinkSourceFile(get.h,../../../../../extras/Mesa/src) LinkSourceFile(hash.c,../../../../../extras/Mesa/src) LinkSourceFile(hash.h,../../../../../extras/Mesa/src) LinkSourceFile(hint.c,../../../../../extras/Mesa/src) diff --git a/xc/programs/Xserver/GL/mesa/src/X/Imakefile b/xc/programs/Xserver/GL/mesa/src/X/Imakefile index 9dd8819e4..83d864cb7 100644 --- a/xc/programs/Xserver/GL/mesa/src/X/Imakefile +++ b/xc/programs/Xserver/GL/mesa/src/X/Imakefile @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/src/X/Imakefile,v 1.6 2000/02/08 17:18:52 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/src/X/Imakefile,v 1.6 1999/03/15 21:36:10 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/src/X/Imakefile,v 1.7 2000/02/23 04:46:56 martin Exp $ #define IHaveModules #include <Server.tmpl> diff --git a/xc/programs/Xserver/GL/mesa/src/X/xf86glx.c b/xc/programs/Xserver/GL/mesa/src/X/xf86glx.c index 3555ba070..f305e3488 100644 --- a/xc/programs/Xserver/GL/mesa/src/X/xf86glx.c +++ b/xc/programs/Xserver/GL/mesa/src/X/xf86glx.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx.c,v 1.6 2000/02/08 17:18:52 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx.c,v 1.7 2000/02/23 04:46:56 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/mesa/src/X/xf86glx.c,v 1.15 1999/08/04 18:14:14 faith Exp $ */ #include <miscstruct.h> diff --git a/xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c b/xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c index c0cafaa8e..ff2654830 100644 --- a/xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c +++ b/xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c,v 1.3 1999/06/14 07:31:43 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c,v 1.5 2000/03/02 16:07:39 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,8 +29,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> - * - * $PI: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c,v 1.6 1999/05/27 03:43:48 jens Exp $ + * Brian Paul <brian@precisioninsight.com> */ #include <gcstruct.h> @@ -45,7 +44,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define ROUNDUP(nbytes, pad) ((((nbytes) + ((pad)-1)) / (pad)) * ((pad)>>3)) -XMesaImage *XMesaCreateImage(int depth, int width, int height, char *data) +XMesaImage *XMesaCreateImage(int bitsPerPixel, int width, int height, char *data) { XMesaImage *image; @@ -56,8 +55,8 @@ XMesaImage *XMesaCreateImage(int depth, int width, int height, char *data) image->height = height; image->data = data; /* Always pad to 32 bits */ - image->bytes_per_line = ROUNDUP((depth * width), 32); - image->bits_per_pixel = depth; + image->bytes_per_line = ROUNDUP((bitsPerPixel * width), 32); + image->bits_per_pixel = bitsPerPixel; } return image; diff --git a/xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h b/xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h index e5a88fe86..ba9a04f9d 100644 --- a/xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h +++ b/xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h,v 1.2 1999/06/14 07:31:43 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h,v 1.4 2000/03/02 16:07:39 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,8 +29,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> - * - * $PI: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h,v 1.5 1999/03/15 21:36:10 martin Exp $ + * Brian Paul <brian@precisioninsight.com> */ #ifndef _XF86GLX_UTIL_H_ @@ -50,7 +49,7 @@ struct _XMesaImageRec { int bits_per_pixel; }; -extern XMesaImage *XMesaCreateImage(int depth, int width, int height, +extern XMesaImage *XMesaCreateImage(int bitsPerPixel, int width, int height, char *data); extern void XMesaDestroyImage(XMesaImage *image); extern unsigned long XMesaGetPixel(XMesaImage *image, int x, int y); diff --git a/xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h b/xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h index bd000fde8..c403c00fd 100644 --- a/xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h +++ b/xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h,v 1.2 1999/06/14 07:31:44 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h,v 1.3 2000/02/23 04:46:57 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h,v 1.7 1999/04/11 04:20:55 martin Exp $ */ #ifndef _XF86GLXINT_H_ diff --git a/xc/programs/Xserver/Imakefile b/xc/programs/Xserver/Imakefile index f0ca1ff94..45300d897 100644 --- a/xc/programs/Xserver/Imakefile +++ b/xc/programs/Xserver/Imakefile @@ -2,7 +2,7 @@ XCOMM $TOG: Imakefile /main/249 1997/12/11 11:18:14 kaleb $ /* * Server Master Makefile */ -XCOMM $XFree86: xc/programs/Xserver/Imakefile,v 3.180 2000/02/11 18:06:39 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/Imakefile,v 3.182 2000/02/29 15:24:15 tsi Exp $ #ifndef InstallXserverSetUID #define InstallXserverSetUID NO @@ -612,13 +612,14 @@ XF86IDRIVERLIB = $(XF86SRC)/input/LibraryTargetName(idriver) #if !DoLoadableServer XF86DRVOBJS = $(XF86SRC)/drivers/drvConf.o XF86DRVLIBS = $(XF86DRIVERLIB) $(XF86RAMDACLIB) $(XF86DDCLIB) $(XF86I2CLIB) \ - $(XF86INT10LIB) $(XF86XAALIB) $(XF86VGAHWLIB) $(XF86FBDEVHWLIB) \ + $(XF86XAALIB) $(XF86VGAHWLIB) $(XF86FBDEVHWLIB) \ $(XF8_32BPPLIB) $(XF8_16BPPLIB) $(XF24_32BPPLIB) \ $(XF4BPPLIB) $(XF1BPPLIB) $(XFSHADOWFBLIB) $(AFBLIB) XF86IDRVOBJS = $(XF86SRC)/input/drvConf.o XF86IDRVLIBS = $(XF86IDRIVERLIB) XF86SCANLIB = $(XF86SRC)/scanpci/LibraryTargetName(scanpci) -XF86LIBS = $(XF86INIT) $(XF86COMLIB) $(XF86RACLIB) $(XF86PARSLIB) $(XF86OSLIB) +XF86LIBS = $(XF86INIT) $(XF86COMLIB) $(XF86RACLIB) $(XF86PARSLIB) \ + $(XF86OSLIB) $(XF86INT10LIB) #else XF86LIBS = $(XF86INIT) $(XF86COMLIB) $(XF86PARSLIB) $(XF86OSLIB) #endif @@ -637,7 +638,7 @@ XF86SERVERLIBS = $(XF86DRVLIBS) $(XF86IDRVLIBS) $(XF86LIBS) $(XF86LOADERLIB) \ #if HasParallelMake MakeMutex($(XF86SERVERSUBDIRS) $(XF86SERVERLIBS) $(XF86SERVERSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(XF86SERVERLIBS) $(XF86SERVERSYSLIBS):: $(XF86SERVERSUBDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -695,7 +696,7 @@ FBDEVSYSLIBS = StdKdSysLibs #if HasParallelMake MakeMutex($(FBDEVDIRS) $(FBDEVOBJS) $(FBDEVLIBS) $(FBDEVSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(FBDEVOBJS) $(XFBDEV) $(FBDEVLIBS) $(FBDEVSYSLIBS):: $(FBDEVDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -720,7 +721,7 @@ SAVAGESYSLIBS = StdKdSysLibs #if HasParallelMake MakeMutex($(SAVAGEDIRS) $(SAVAGEOBJS) $(SAVAGELIBS) $(SAVAGESYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(SAVAGEOBJS) $(XSAVAGE) $(SAVAGELIBS) $(SAVAGESYSLIBS):: $(SAVAGEDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -747,7 +748,7 @@ TRIDENTSYSLIBS = StdKdSysLibs #if HasParallelMake MakeMutex($(TRIDENTDIRS) $(TRIDENTLIBS) $(TRIDENTSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(TRIDENTOBJS) $(TRIDENTLIBS) $(TRIDENTSYSLIBS):: $(TRIDENTDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -772,7 +773,7 @@ SIS530SYSLIBS = StdKdSysLibs #if HasParallelMake MakeMutex($(SIS530DIRS) $(SIS530OBJS) $(SIS530LIBS) $(SIS530SYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(SIS530OBJS) $(SIS530LIBS) $(SIS530SYSLIBS):: $(SIS530DIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -797,7 +798,7 @@ TRIOSYSLIBS = StdKdSysLibs #if HasParallelMake MakeMutex($(TRIODIRS) $(TRIOOBJS) $(TRIOLIBS) $(TRIOSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(TRIOOBJS) $(TRIOLIBS) $(TRIOSYSLIBS):: $(TRIODIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -828,7 +829,7 @@ XCOMM #if HasParallelMake MakeMutex($(TS300DIRS) $(TS300OBJS) $(TS300LIBS) $(TS300SYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(TS300OBJS) $(TS300LIBS) $(TS300SYSLIBS):: $(TS300DIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -852,7 +853,7 @@ ITSYSYSLIBS = StdKdSysLibs #if HasParallelMake MakeMutex($(ITSYDIRS) $(ITSYOBJS) $(ITSYLIBS) $(ITSYSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(ITSYOBJS) $(ITSYLIBS) $(ITSYSYSLIBS):: $(ITSYDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -888,7 +889,7 @@ XPSYSLIBS = $(FONTLIBS) $(CBRT) $(SYSLIBS) #if HasParallelMake MakeMutex($(XPSUBDIRS) $(XPOBJS) $(XPLIBS) $(XPSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(XPOBJS) $(XPLIBS) $(XPSYSLIBS):: $(XPSUBDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -920,7 +921,7 @@ XNESTSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XLIB) $(SYSLIBS) #if HasParallelMake MakeMutex($(XNESTDIRS) $(XNESTOBJS) $(XNESTLIBS) $(XNESTSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(XNESTOBJS) $(XNESTLIBS) $(XNESTSYSLIBS):: $(XNESTDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -977,7 +978,7 @@ XVFBSYSLIBS = $(FONTLIBS) $(SYSLIBS) #if HasParallelMake MakeMutex($(XVFBDIRS) $(XVFBOBJS) $(XVFB) $(XVFBLIBS) $(XVFBSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(XVFBOBJS) $(XVFB) $(XVFBLIBS) $(XVFBSYSLIBS):: $(XVFBDIRS) @if [ -f $@ ]; then touch $@; fi #endif diff --git a/xc/programs/Xserver/Xext/fontcache.c b/xc/programs/Xserver/Xext/fontcache.c index cd92f931f..cad7dcfba 100644 --- a/xc/programs/Xserver/Xext/fontcache.c +++ b/xc/programs/Xserver/Xext/fontcache.c @@ -25,9 +25,9 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: fontcache.c,v 1.1.1.1 2000/02/22 15:41:12 kem Exp $ + * Id: fontcache.c,v 1.12 1999/01/31 13:47:45 akiyama Exp $ */ -/* $XFree86: xc/programs/Xserver/Xext/fontcache.c,v 1.4 2000/02/18 16:16:51 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/fontcache.c,v 1.5 2000/02/23 20:29:39 dawes Exp $ */ /* THIS IS NOT AN X CONSORTIUM STANDARD */ diff --git a/xc/programs/Xserver/Xext/panoramiX.c b/xc/programs/Xserver/Xext/panoramiX.c index 0faee97e8..35456cd4b 100644 --- a/xc/programs/Xserver/Xext/panoramiX.c +++ b/xc/programs/Xserver/Xext/panoramiX.c @@ -19,7 +19,7 @@ * or in FAR 52.227-19, as applicable. * * * *****************************************************************/ -/* $XFree86: xc/programs/Xserver/Xext/panoramiX.c,v 3.15 2000/01/22 01:59:03 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/panoramiX.c,v 3.17 2000/03/03 22:17:37 mvojkovi Exp $ */ #define NEED_REPLIES #include <stdio.h> @@ -405,6 +405,27 @@ PanoramiXChangeWindow(int ScrnNum, WindowPtr pWin) return pWin; } +typedef struct _connect_callback_list { + void (*func)(void); + struct _connect_callback_list *next; +} XineramaConnectionCallbackList; + +static XineramaConnectionCallbackList *ConnectionCallbackList = NULL; + +Bool +XineramaRegisterConnectionBlockCallback(void (*func)(void)) +{ + XineramaConnectionCallbackList *newlist; + + if(!(newlist = xalloc(sizeof(XineramaConnectionCallbackList)))) + return FALSE; + + newlist->next = ConnectionCallbackList; + newlist->func = func; + ConnectionCallbackList = newlist; + + return TRUE; +} /* * PanoramiXExtensionInit(): @@ -698,6 +719,16 @@ Bool PanoramiXCreateConnectionBlock(void) height_mult = root->pixHeight / old_height; root->mmWidth *= width_mult; root->mmHeight *= height_mult; + + while(ConnectionCallbackList) { + pointer tmp; + + tmp = (pointer)ConnectionCallbackList; + (*ConnectionCallbackList->func)(); + ConnectionCallbackList = ConnectionCallbackList->next; + xfree(tmp); + } + return TRUE; } @@ -850,6 +881,8 @@ ProcPanoramiXQueryVersion (ClientPtr client) if (client->swapped) { swaps(&rep.sequenceNumber, n); swapl(&rep.length, n); + swaps(&rep.majorVersion, n); + swaps(&rep.minorVersion, n); } WriteToClient(client, sizeof (xPanoramiXQueryVersionReply), (char *)&rep); return (client->noClientException); @@ -935,6 +968,73 @@ ProcPanoramiXGetScreenSize(ClientPtr client) } +int +ProcXineramaIsActive(ClientPtr client) +{ + REQUEST(xXineramaIsActiveReq); + xXineramaIsActiveReply rep; + + REQUEST_SIZE_MATCH(xXineramaIsActiveReq); + + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; + rep.state = !noPanoramiXExtension; + if (client->swapped) { + register int n; + swaps (&rep.sequenceNumber, n); + swapl (&rep.length, n); + swapl (&rep.state, n); + } + WriteToClient (client, sizeof (xXineramaIsActiveReply), (char *) &rep); + return client->noClientException; +} + + +int +ProcXineramaQueryScreens(ClientPtr client) +{ + REQUEST(xXineramaQueryScreensReq); + xXineramaQueryScreensReply rep; + + REQUEST_SIZE_MATCH(xXineramaQueryScreensReq); + + rep.type = X_Reply; + rep.sequenceNumber = client->sequence; + rep.number = (noPanoramiXExtension) ? 0 : PanoramiXNumScreens; + rep.length = rep.number * sz_XineramaScreenInfo >> 2; + if (client->swapped) { + register int n; + swaps (&rep.sequenceNumber, n); + swapl (&rep.length, n); + swapl (&rep.number, n); + } + WriteToClient (client, sizeof (xXineramaQueryScreensReply), (char *) &rep); + + if(!noPanoramiXExtension) { + xXineramaScreenInfo scratch; + int i; + + for(i = 0; i < PanoramiXNumScreens; i++) { + scratch.x_org = panoramiXdataPtr[i].x; + scratch.y_org = panoramiXdataPtr[i].y; + scratch.width = panoramiXdataPtr[i].width; + scratch.height = panoramiXdataPtr[i].height; + + if(client->swapped) { + register int n; + swaps (&scratch.x_org, n); + swaps (&scratch.y_org, n); + swaps (&scratch.width, n); + swaps (&scratch.height, n); + } + WriteToClient (client, sz_XineramaScreenInfo, (char *) &scratch); + } + } + + return client->noClientException; +} + static int ProcPanoramiXDispatch (ClientPtr client) @@ -949,6 +1049,10 @@ ProcPanoramiXDispatch (ClientPtr client) return ProcPanoramiXGetScreenCount(client); case X_PanoramiXGetScreenSize: return ProcPanoramiXGetScreenSize(client); + case X_XineramaIsActive: + return ProcXineramaIsActive(client); + case X_XineramaQueryScreens: + return ProcXineramaQueryScreens(client); } return BadRequest; } diff --git a/xc/programs/Xserver/Xext/panoramiXSwap.c b/xc/programs/Xserver/Xext/panoramiXSwap.c index 0ccb67993..84b741a6c 100644 --- a/xc/programs/Xserver/Xext/panoramiXSwap.c +++ b/xc/programs/Xserver/Xext/panoramiXSwap.c @@ -19,7 +19,7 @@ * or in FAR 52.227-19, as applicable. * * * *****************************************************************/ -/* $XFree86: xc/programs/Xserver/Xext/panoramiXSwap.c,v 3.5 1999/07/18 08:34:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/panoramiXSwap.c,v 3.6 2000/02/27 23:15:30 mvojkovi Exp $ */ #include <stdio.h> #include "X.h" @@ -64,50 +64,38 @@ extern int (* ProcVector[256]) (); PROC_EXTERN(ProcPanoramiXQueryVersion); PROC_EXTERN(ProcPanoramiXGetState); PROC_EXTERN(ProcPanoramiXGetScreenCount); -PROC_EXTERN(PropPanoramiXGetScreenSize); +PROC_EXTERN(ProcPanoramiXGetScreenSize); + +PROC_EXTERN(ProcXineramaIsActive); +PROC_EXTERN(ProcXineramaQueryScreens); static int -#if NeedFunctionPrototypes SProcPanoramiXQueryVersion (ClientPtr client) -#else -SProcPanoramiXQueryVersion (client) - register ClientPtr client; -#endif { - register int n; - REQUEST(xPanoramiXQueryVersionReq); + REQUEST(xPanoramiXQueryVersionReq); + register int n; - swaps(&stuff->length,n); - REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq); - return ProcPanoramiXQueryVersion(client); + swaps(&stuff->length,n); + REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq); + return ProcPanoramiXQueryVersion(client); } static int -#if NeedFunctionPrototypes SProcPanoramiXGetState(ClientPtr client) -#else -SProcPanoramiXGetState(client) - register ClientPtr client; -#endif { REQUEST(xPanoramiXGetStateReq); - register int n; + register int n; swaps (&stuff->length, n); REQUEST_SIZE_MATCH(xPanoramiXGetStateReq); - + return ProcPanoramiXGetState(client); } static int -#if NeedFunctionPrototypes SProcPanoramiXGetScreenCount(ClientPtr client) -#else -SProcPanoramixGetScreenCount(client) - register ClientPtr client; -#endif { REQUEST(xPanoramiXGetScreenCountReq); - register int n; + register int n; swaps (&stuff->length, n); REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq); @@ -115,29 +103,43 @@ SProcPanoramixGetScreenCount(client) } static int -#if NeedFunctionPrototypes SProcPanoramiXGetScreenSize(ClientPtr client) -#else -SProcPanoramiXGetScreenSize(client) - register ClientPtr client; -#endif { REQUEST(xPanoramiXGetScreenSizeReq); - WindowPtr pWin; - register int n; + register int n; swaps (&stuff->length, n); REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); return ProcPanoramiXGetScreenSize(client); } + +static int +SProcXineramaIsActive(ClientPtr client) +{ + REQUEST(xXineramaIsActiveReq); + register int n; + + swaps (&stuff->length, n); + REQUEST_SIZE_MATCH(xXineramaIsActiveReq); + return ProcXineramaIsActive(client); +} + + +static int +SProcXineramaQueryScreens(ClientPtr client) +{ + REQUEST(xXineramaQueryScreensReq); + register int n; + + swaps (&stuff->length, n); + REQUEST_SIZE_MATCH(xXineramaQueryScreensReq); + return ProcXineramaQueryScreens(client); +} + + int -#if NeedFunctionPrototypes SProcPanoramiXDispatch (ClientPtr client) -#else -SProcPanoramiXDispatch (client) - ClientPtr client; -#endif { REQUEST(xReq); switch (stuff->data) { @@ -149,6 +151,10 @@ SProcPanoramiXDispatch (client) return SProcPanoramiXGetScreenCount(client); case X_PanoramiXGetScreenSize: return SProcPanoramiXGetScreenSize(client); - return BadRequest; + case X_XineramaIsActive: + return SProcXineramaIsActive(client); + case X_XineramaQueryScreens: + return SProcXineramaQueryScreens(client); } + return BadRequest; } diff --git a/xc/programs/Xserver/Xext/panoramiXprocs.c b/xc/programs/Xserver/Xext/panoramiXprocs.c index 71629fc85..48e962d89 100644 --- a/xc/programs/Xserver/Xext/panoramiXprocs.c +++ b/xc/programs/Xserver/Xext/panoramiXprocs.c @@ -22,7 +22,7 @@ /* Massively rewritten by Mark Vojkovich <markv@valinux.com> */ -/* $XFree86: xc/programs/Xserver/Xext/panoramiXprocs.c,v 3.21 2000/01/22 01:59:03 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/panoramiXprocs.c,v 3.22 2000/02/27 23:15:30 mvojkovi Exp $ */ #include <stdio.h> #include "X.h" @@ -1251,7 +1251,7 @@ int PanoramiXPolyLine(ClientPtr client) memcpy((char *) origPts, (char *) &stuff[1], npoint * sizeof(xPoint)); FOR_NSCREENS_FORWARD(j){ - if(j) memcpy(&stuff[1], origPts, npoint * sizeof(xPoint)); + if(j) memcpy(&stuff[1], origPts, npoint * sizeof(xPoint)); if (isRoot) { int x_off = panoramiXdataPtr[j].x; @@ -1382,7 +1382,8 @@ int PanoramiXPolyRectangle(ClientPtr client) int x_off = panoramiXdataPtr[j].x; int y_off = panoramiXdataPtr[j].y; - if(x_off || x_off) { + + if(x_off || y_off) { xRectangle *rects = (xRectangle *) &stuff[1]; for (i = nrects; i--; rects++) { @@ -1390,7 +1391,7 @@ int PanoramiXPolyRectangle(ClientPtr client) rects->y -= y_off; } } - } + } stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; diff --git a/xc/programs/Xserver/Xext/panoramiXsrv.h b/xc/programs/Xserver/Xext/panoramiXsrv.h index 0020cd2eb..c12986093 100644 --- a/xc/programs/Xserver/Xext/panoramiXsrv.h +++ b/xc/programs/Xserver/Xext/panoramiXsrv.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/panoramiXsrv.h,v 1.4 2000/01/22 01:59:03 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/panoramiXsrv.h,v 1.5 2000/03/03 22:17:37 mvojkovi Exp $ */ #ifndef _PANORAMIXSRV_H_ #define _PANORAMIXSRV_H_ @@ -15,6 +15,8 @@ extern Bool PanoramiXCreateConnectionBlock(void); extern PanoramiXRes * PanoramiXFindIDByScrnum(RESTYPE, XID, int); extern PanoramiXRes * PanoramiXFindIDOnAnyScreen(RESTYPE, XID); extern WindowPtr PanoramiXChangeWindow(int, WindowPtr); +extern Bool XineramaRegisterConnectionBlockCallback(void (*func)(void)); + extern RegionRec XineramaScreenRegions[MAXSCREENS]; extern unsigned long XRC_DRAWABLE; diff --git a/xc/programs/Xserver/Xext/shape.c b/xc/programs/Xserver/Xext/shape.c index 8012f944f..a7819c1e0 100644 --- a/xc/programs/Xserver/Xext/shape.c +++ b/xc/programs/Xserver/Xext/shape.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/shape.c,v 3.10 2000/01/02 00:18:20 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/shape.c,v 3.11 2000/03/03 20:50:25 mvojkovi Exp $ */ /************************************************************ Copyright 1989, 1998 The Open Group @@ -375,7 +375,7 @@ ProcPanoramiXShapeRectangles (client) if(!(win = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->dest, XRT_WINDOW, SecurityWriteAccess))) - return BadRequest; + return BadWindow; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -464,15 +464,19 @@ ProcPanoramiXShapeMask (client) if(!(win = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->dest, XRT_WINDOW, SecurityWriteAccess))) - return BadRequest; + return BadWindow; - if(!(pmap = (PanoramiXRes *)SecurityLookupIDByType( + if(stuff->src != None) { + if(!(pmap = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->src, XRT_PIXMAP, SecurityReadAccess))) - return BadRequest; + return BadPixmap; + } else + pmap = NULL; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; - stuff->src = pmap->info[j].id; + if(pmap) + stuff->src = pmap->info[j].id; result = ProcShapeMask (client); BREAK_IF(result != Success); } @@ -575,11 +579,11 @@ ProcPanoramiXShapeCombine (client) if(!(win = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->dest, XRT_WINDOW, SecurityWriteAccess))) - return BadRequest; + return BadWindow; if(!(win2 = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->src, XRT_WINDOW, SecurityReadAccess))) - return BadRequest; + return BadWindow; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -644,7 +648,7 @@ ProcPanoramiXShapeOffset (client) if(!(win = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->dest, XRT_WINDOW, SecurityWriteAccess))) - return BadRequest; + return BadWindow; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -1050,37 +1054,29 @@ ProcShapeDispatch (client) if ( !noPanoramiXExtension ) return ProcPanoramiXShapeRectangles (client); else - return ProcShapeRectangles (client); -#else - return ProcShapeRectangles (client); #endif + return ProcShapeRectangles (client); case X_ShapeMask: #ifdef PANORAMIX if ( !noPanoramiXExtension ) return ProcPanoramiXShapeMask (client); else - return ProcShapeMask (client); -#else - return ProcShapeMask (client); #endif + return ProcShapeMask (client); case X_ShapeCombine: #ifdef PANORAMIX if ( !noPanoramiXExtension ) return ProcPanoramiXShapeCombine (client); else - return ProcShapeCombine (client); -#else - return ProcShapeCombine (client); #endif + return ProcShapeCombine (client); case X_ShapeOffset: #ifdef PANORAMIX if ( !noPanoramiXExtension ) return ProcPanoramiXShapeOffset (client); else - return ProcShapeOffset (client); -#else - return ProcShapeOffset (client); #endif + return ProcShapeOffset (client); case X_ShapeQueryExtents: return ProcShapeQueryExtents (client); case X_ShapeSelectInput: diff --git a/xc/programs/Xserver/Xext/shm.c b/xc/programs/Xserver/Xext/shm.c index b8f206bf0..8352f2ccb 100644 --- a/xc/programs/Xserver/Xext/shm.c +++ b/xc/programs/Xserver/Xext/shm.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.20 2000/01/02 00:18:21 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.21 2000/03/05 16:59:01 dawes Exp $ */ /************************************************************ Copyright 1989, 1998 The Open Group @@ -766,6 +766,7 @@ CreatePmap: } xfree(newPix); } else { + shmdesc->refcnt++; AddResource(stuff->pid, ShmPixType, shmdesc); AddResource(stuff->pid, XRT_PIXMAP, newPix); } diff --git a/xc/programs/Xserver/Xext/xf86bigfont.c b/xc/programs/Xserver/Xext/xf86bigfont.c index 5cc115fc3..4669824c9 100644 --- a/xc/programs/Xserver/Xext/xf86bigfont.c +++ b/xc/programs/Xserver/Xext/xf86bigfont.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/xf86bigfont.c,v 1.4 2000/02/11 18:06:40 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/xf86bigfont.c,v 1.5 2000/02/29 03:09:07 dawes Exp $ */ /* * BIGFONT extension for sharing font metrics between clients (if possible) * and for transmitting font metrics to clients in a compressed form. @@ -40,7 +40,10 @@ #ifdef CSRG_BASED #include <sys/param.h> #endif -#ifdef linux +#if defined(linux) && !defined(__GNU_LIBRARY__) +/* Linux libc4 and libc5 only (because glibc doesn't include kernel headers): + Linux 2.0.x and 2.2.x define SHMLBA as PAGE_SIZE, but forget to define + PAGE_SIZE. It is defined in <asm/page.h>. */ #include <asm/page.h> #endif #ifdef SVR4 @@ -53,6 +56,8 @@ #include <sys/ipc.h> #include <sys/shm.h> #include <sys/stat.h> +#include <stdlib.h> +#include <time.h> #include <errno.h> #endif @@ -85,6 +90,11 @@ static unsigned char XF86BigfontReqCode; #ifdef HAS_SHM +/* A random signature, transmitted to the clients so they can verify that the + shared memory segment they are attaching to was really established by the + X server they are talking to. */ +static CARD32 signature; + /* Index for additional information stored in a FontRec's devPrivates array. */ static int FontShmdescIndex; @@ -147,7 +157,14 @@ XFree86BigfontExtensionInit() return; } #endif + + srand((unsigned int) time(NULL)); + signature = ((unsigned int) (65536.0/(RAND_MAX+1.0) * rand()) << 16) + + (unsigned int) (65536.0/(RAND_MAX+1.0) * rand()); + /* fprintf(stderr, "signature = 0x%08X\n", signature); */ + FontShmdescIndex = AllocateFontPrivateIndex(); + pagesize = SHMLBA; #endif } @@ -301,7 +318,14 @@ ProcXF86BigfontQueryVersion( reply.minorVersion = XF86BIGFONT_MINOR_VERSION; reply.uid = geteuid(); reply.gid = getegid(); - reply.capabilities = 0; /* may add some bits here in future versions */ + reply.signature = signature; + reply.capabilities = +#ifdef HAS_SHM + (LocalClient(client) && !client->swapped ? XF86Bigfont_CAP_LocalShm : 0) +#else + 0 +#endif + ; /* may add more bits here in future versions */ if (client->swapped) { char tmp; swaps(&reply.sequenceNumber, tmp); @@ -310,6 +334,7 @@ ProcXF86BigfontQueryVersion( swaps(&reply.minorVersion, tmp); swapl(&reply.uid, tmp); swapl(&reply.gid, tmp); + swapl(&reply.signature, tmp); } WriteToClient(client, sizeof(xXF86BigfontQueryVersionReply), (char *)&reply); @@ -343,6 +368,7 @@ ProcXF86BigfontQueryFont( { FontPtr pFont; REQUEST(xXF86BigfontQueryFontReq); + CARD32 stuff_flags; xCharInfo* pmax; xCharInfo* pmin; int nCharInfos; @@ -357,7 +383,20 @@ ProcXF86BigfontQueryFont( CARD16* pUniqIndex2Index; CARD32 nUniqCharInfos; +#if 0 REQUEST_SIZE_MATCH(xXF86BigfontQueryFontReq); +#else + switch (client->req_len) { + case 2: /* client with version 1.0 libX11 */ + stuff_flags = (LocalClient(client) && !client->swapped ? XF86Bigfont_FLAGS_Shm : 0); + break; + case 3: /* client with version 1.1 libX11 */ + stuff_flags = stuff->flags; + break; + default: + return BadLength; + } +#endif client->errorValue = stuff->id; /* EITHER font or gc */ pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT, SecurityReadAccess); @@ -392,11 +431,12 @@ ProcXF86BigfontQueryFont( pDesc = (ShmDescPtr) FontGetPrivate(pFont, FontShmdescIndex); if (pDesc) { pCI = (xCharInfo *) pDesc->attach_addr; - if (LocalClient(client) && !client->swapped) + if (stuff_flags & XF86Bigfont_FLAGS_Shm) shmid = pDesc->shmid; } else { - if (LocalClient(client) && !client->swapped) - pDesc = shmalloc(nCharInfos * sizeof(xCharInfo)); + if (stuff_flags & XF86Bigfont_FLAGS_Shm) + pDesc = shmalloc(nCharInfos * sizeof(xCharInfo) + + sizeof(CARD32)); if (pDesc) { pCI = (xCharInfo *) pDesc->attach_addr; shmid = pDesc->shmid; @@ -440,6 +480,7 @@ ProcXF86BigfontQueryFont( } #ifdef HAS_SHM if (pDesc) { + *(CARD32 *)(pCI + nCharInfos) = signature; if (!FontSetPrivate(pFont, FontShmdescIndex, pDesc)) { shmdealloc(pDesc); return BadAlloc; diff --git a/xc/programs/Xserver/fb/Imakefile b/xc/programs/Xserver/fb/Imakefile index 272dfdb22..7b6a8f2a2 100644 --- a/xc/programs/Xserver/fb/Imakefile +++ b/xc/programs/Xserver/fb/Imakefile @@ -1,7 +1,7 @@ -XCOMM $XFree86: xc/programs/Xserver/fb/Imakefile,v 1.3 2000/02/14 19:20:26 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/fb/Imakefile,v 1.4 2000/02/23 20:29:40 dawes Exp $ XCOMM XCOMM -XCOMM $Id: Imakefile,v 1.1.1.2 2000/02/22 15:42:19 kem Exp $ +XCOMM Id: Imakefile,v 1.1 1999/11/02 03:54:44 keithp Exp $ #define IHaveModule #include <Server.tmpl> diff --git a/xc/programs/Xserver/fb/fb.h b/xc/programs/Xserver/fb/fb.h index d13b299d0..4a508f0ab 100644 --- a/xc/programs/Xserver/fb/fb.h +++ b/xc/programs/Xserver/fb/fb.h @@ -1,5 +1,5 @@ /* - * $Id: fb.h,v 1.1.1.2 2000/02/22 15:42:19 kem Exp $ + * Id: fb.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fb.h,v 1.11 2000/02/18 16:23:12 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fb.h,v 1.13 2000/03/01 00:25:14 dawes Exp $ */ #ifndef _FB_H_ #define _FB_H_ @@ -1358,6 +1358,12 @@ fbZeroLine (DrawablePtr pDrawable, DDXPointPtr ppt); void +fbZeroSegment (DrawablePtr pDrawable, + GCPtr pGC, + int nseg, + xSegment *pSegs); + +void fbPolyLine (DrawablePtr pDrawable, GCPtr pGC, int mode, diff --git a/xc/programs/Xserver/fb/fballpriv.c b/xc/programs/Xserver/fb/fballpriv.c index 97f649158..e1ae7b663 100644 --- a/xc/programs/Xserver/fb/fballpriv.c +++ b/xc/programs/Xserver/fb/fballpriv.c @@ -1,5 +1,5 @@ /* - * $Id: fballpriv.c,v 1.1.1.1 2000/01/06 12:56:51 faith Exp $ + * Id: fballpriv.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fballpriv.c,v 1.2 1999/12/30 02:33:58 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fballpriv.c,v 1.3 2000/02/23 20:29:41 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbarc.c b/xc/programs/Xserver/fb/fbarc.c index 056d63cdd..1ceebbf0f 100644 --- a/xc/programs/Xserver/fb/fbarc.c +++ b/xc/programs/Xserver/fb/fbarc.c @@ -1,5 +1,5 @@ /* - * $Id: fbarc.c,v 1.1.1.2 2000/02/22 15:42:19 kem Exp $ + * Id: fbarc.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbarc.c,v 1.2 2000/02/14 19:20:26 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbarc.c,v 1.3 2000/02/23 20:29:41 dawes Exp $ */ #include "fb.h" #include "mizerarc.h" diff --git a/xc/programs/Xserver/fb/fbbits.c b/xc/programs/Xserver/fb/fbbits.c index 37429630b..b1c123d21 100644 --- a/xc/programs/Xserver/fb/fbbits.c +++ b/xc/programs/Xserver/fb/fbbits.c @@ -1,5 +1,5 @@ /* - * $Id: fbbits.c,v 1.1.1.2 2000/02/22 15:42:19 kem Exp $ + * Id: fbbits.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbbits.c,v 1.5 2000/02/17 14:16:22 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbbits.c,v 1.6 2000/02/23 20:29:41 dawes Exp $ */ #include "fb.h" #include "miline.h" diff --git a/xc/programs/Xserver/fb/fbbits.h b/xc/programs/Xserver/fb/fbbits.h index 58fd3fd20..368989d98 100644 --- a/xc/programs/Xserver/fb/fbbits.h +++ b/xc/programs/Xserver/fb/fbbits.h @@ -1,5 +1,5 @@ /* - * $Id: fbbits.h,v 1.1.1.2 2000/02/22 15:42:19 kem Exp $ + * Id: fbbits.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbbits.h,v 1.6 2000/02/14 19:20:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbbits.h,v 1.8 2000/03/01 00:25:14 dawes Exp $ */ /* * This file defines functions for drawing some primitives using @@ -140,9 +140,8 @@ BRESDASH (DrawablePtr pDrawable, UNIT *bits; FbStride bitsStride; FbStride majorStep, minorStep; - BITS xor = (BITS) pPriv->xor; - BITS bgxor = (BITS) pPriv->bgxor; - unsigned char *dash, *lastDash; + BITS xorfg, xorbg; + unsigned char *dash, *lastDash, *firstDash; int dashlen; Bool even; Bool doOdd; @@ -150,17 +149,19 @@ BRESDASH (DrawablePtr pDrawable, fbGetDrawable (pDrawable, dst, dstStride, dstBpp); doOdd = pGC->lineStyle == LineDoubleDash; even = TRUE; - dash = pGC->dash; - lastDash = dash + pGC->numInDashList; - dashOffset %= pPriv->dashLength; - while (dashOffset >= *dash) + xorfg = (BITS) pPriv->xor; + xorbg = (BITS) pPriv->bgxor; + firstDash = pGC->dash; + lastDash = firstDash + pGC->numInDashList; + dash = firstDash; + while (dashOffset >= (dashlen = *dash++)) { - dashOffset -= *dash++; + dashOffset -= dashlen; if (dash == lastDash) - dash = pGC->dash; - even = !even; + dash = firstDash; + even ^= 1; } - dashlen = *dash - dashOffset; + dashlen -= dashOffset; bits = ((UNIT *) (dst + (y1 * dstStride))) + x1 * MUL; bitsStride = dstStride * (sizeof (FbBits) / sizeof (UNIT)); if (signdy < 0) @@ -175,25 +176,92 @@ BRESDASH (DrawablePtr pDrawable, majorStep = bitsStride; minorStep = signdx * MUL; } - while (len--) + if (dashlen >= len) + dashlen = len; + if (doOdd) { - if (even) - STORE(bits,xor); - else if (doOdd) - STORE(bits,bgxor); - bits += majorStep; - e += e1; - if (e >= 0) + if (!even) + goto doubleOdd; + for (;;) { - bits += minorStep; - e += e3; + len -= dashlen; + while (dashlen--) + { + STORE(bits,xorfg); + bits += majorStep; + if ((e += e1) >= 0) + { + e += e3; + bits += minorStep; + } + } + if (!len) + break; + dashlen = *dash++; + if (dash == lastDash) + dash = firstDash; + if (dashlen >= len) + dashlen = len; +doubleOdd: + len -= dashlen; + while (dashlen--) + { + STORE(bits,xorbg); + bits += majorStep; + if ((e += e1) >= 0) + { + e += e3; + bits += minorStep; + } + } + if (!len) + break; + dashlen = *dash++; + /* numInDashList is even, no need to check here */ + if (dashlen >= len) + dashlen = len; } - if (!--dashlen) + } + else + { + if (!even) + goto onOffOdd; + for (;;) { - if (++dash == lastDash) - dash = pGC->dash; - dashlen = *dash; - even = !even; + len -= dashlen; + while (dashlen--) + { + STORE(bits,xorfg); + bits += majorStep; + if ((e += e1) >= 0) + { + e += e3; + bits += minorStep; + } + } + if (!len) + break; + dashlen = *dash++; + if (dash == lastDash) + dash = firstDash; + if (dashlen >= len) + dashlen = len; +onOffOdd: + len -= dashlen; + while (dashlen--) + { + bits += majorStep; + if ((e += e1) >= 0) + { + e += e3; + bits += minorStep; + } + } + if (!len) + break; + dashlen = *dash++; + if (dashlen >= len) + dashlen = len; } } } @@ -215,7 +283,8 @@ DOTS (FbBits *dst, INT32 *pts = (INT32 *) ptsOrig; UNIT *bits = (UNIT *) dst; UNIT *point; - BITS fg = (BITS) xor; + BITS bxor = (BITS) xor; + BITS band = (BITS) and; FbStride bitsStride = dstStride * (sizeof (FbBits) / sizeof (UNIT)); INT32 ul, lr; INT32 off; @@ -228,13 +297,28 @@ DOTS (FbBits *dst, bits += bitsStride * yoff + xoff * MUL; - while (npt--) + if (and == 0) + { + while (npt--) + { + pt = *pts++; + if (!isClipped(pt,ul,lr)) + { + point = bits + intToY(pt) * bitsStride + intToX(pt) * MUL; + STORE(point,bxor); + } + } + } + else { - pt = *pts++; - if (!isClipped(pt,ul,lr)) + while (npt--) { - point = bits + intToY(pt) * bitsStride + intToX(pt) * MUL; - STORE(point,fg); + pt = *pts++; + if (!isClipped(pt,ul,lr)) + { + point = bits + intToY(pt) * bitsStride + intToX(pt) * MUL; + RROP(point,band,bxor); + } } } } @@ -282,10 +366,20 @@ ARC (FbBits *dst, if (!(arc->width & 1)) { - if (mask & 2) - ARCRROP(yorgp + info.xorgo); - if (mask & 8) - ARCRROP(yorgop + info.xorgo); + if (andBits == 0) + { + if (mask & 2) + ARCCOPY(yorgp + info.xorgo); + if (mask & 8) + ARCCOPY(yorgop + info.xorgo); + } + else + { + if (mask & 2) + ARCRROP(yorgp + info.xorgo); + if (mask & 8) + ARCRROP(yorgop + info.xorgo); + } } if (!info.end.x || !info.end.y) { @@ -405,16 +499,33 @@ ARC (FbBits *dst, } if ((x == info.start.x) || (y == info.start.y)) mask = info.start.mask; - if (mask & 1) - ARCRROP(yorgp + yoffset + info.xorg + x * MUL); - if (mask & 4) - ARCRROP(yorgop - yoffset + info.xorgo - x * MUL); - if (arc->height & 1) + if (andBits == 0) { - if (mask & 2) - ARCRROP(yorgp + yoffset + info.xorgo - x * MUL); - if (mask & 8) - ARCRROP(yorgop - yoffset + info.xorg + x * MUL); + if (mask & 1) + ARCCOPY(yorgp + yoffset + info.xorg + x * MUL); + if (mask & 4) + ARCCOPY(yorgop - yoffset + info.xorgo - x * MUL); + if (arc->height & 1) + { + if (mask & 2) + ARCCOPY(yorgp + yoffset + info.xorgo - x * MUL); + if (mask & 8) + ARCCOPY(yorgop - yoffset + info.xorg + x * MUL); + } + } + else + { + if (mask & 1) + ARCRROP(yorgp + yoffset + info.xorg + x * MUL); + if (mask & 4) + ARCRROP(yorgop - yoffset + info.xorgo - x * MUL); + if (arc->height & 1) + { + if (mask & 2) + ARCRROP(yorgp + yoffset + info.xorgo - x * MUL); + if (mask & 8) + ARCRROP(yorgop - yoffset + info.xorg + x * MUL); + } } } #undef ARCCOPY diff --git a/xc/programs/Xserver/fb/fbblt.c b/xc/programs/Xserver/fb/fbblt.c index 39a80744c..2fbe0773c 100644 --- a/xc/programs/Xserver/fb/fbblt.c +++ b/xc/programs/Xserver/fb/fbblt.c @@ -1,5 +1,5 @@ /* - * $Id: fbblt.c,v 1.1.1.2 2000/02/22 15:42:19 kem Exp $ + * Id: fbblt.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbblt.c,v 1.5 2000/02/14 19:20:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbblt.c,v 1.6 2000/02/23 20:29:42 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbbltone.c b/xc/programs/Xserver/fb/fbbltone.c index a6bf8a31e..169aec4cc 100644 --- a/xc/programs/Xserver/fb/fbbltone.c +++ b/xc/programs/Xserver/fb/fbbltone.c @@ -1,5 +1,5 @@ /* - * $Id: fbbltone.c,v 1.1.1.2 2000/02/22 15:42:19 kem Exp $ + * Id: fbbltone.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbbltone.c,v 1.6 2000/02/14 19:20:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbbltone.c,v 1.7 2000/02/23 20:29:42 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbbstore.c b/xc/programs/Xserver/fb/fbbstore.c index 065bc6559..07a6400a8 100644 --- a/xc/programs/Xserver/fb/fbbstore.c +++ b/xc/programs/Xserver/fb/fbbstore.c @@ -1,5 +1,5 @@ /* - * $Id: fbbstore.c,v 1.1.1.1 2000/01/06 12:56:52 faith Exp $ + * Id: fbbstore.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbbstore.c,v 1.1 1999/11/19 13:53:42 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbbstore.c,v 1.2 2000/02/23 20:29:42 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbcopy.c b/xc/programs/Xserver/fb/fbcopy.c index 2028ea698..9a34455fb 100644 --- a/xc/programs/Xserver/fb/fbcopy.c +++ b/xc/programs/Xserver/fb/fbcopy.c @@ -1,5 +1,5 @@ /* - * $Id: fbcopy.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbcopy.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.3 2000/02/14 19:20:28 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.4 2000/02/23 20:29:43 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbfill.c b/xc/programs/Xserver/fb/fbfill.c index 7fd5cc5e7..51d5f654e 100644 --- a/xc/programs/Xserver/fb/fbfill.c +++ b/xc/programs/Xserver/fb/fbfill.c @@ -1,5 +1,5 @@ /* - * $Id: fbfill.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbfill.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbfill.c,v 1.2 2000/01/21 15:06:16 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbfill.c,v 1.3 2000/02/23 20:29:43 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbfillrect.c b/xc/programs/Xserver/fb/fbfillrect.c index 702299858..d0468e041 100644 --- a/xc/programs/Xserver/fb/fbfillrect.c +++ b/xc/programs/Xserver/fb/fbfillrect.c @@ -1,5 +1,5 @@ /* - * $Id: fbfillrect.c,v 1.1.1.1 2000/01/06 12:56:53 faith Exp $ + * Id: fbfillrect.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbfillrect.c,v 1.1 1999/11/19 13:53:43 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbfillrect.c,v 1.2 2000/02/23 20:29:43 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbfillsp.c b/xc/programs/Xserver/fb/fbfillsp.c index 3a7321960..29c3a36b0 100644 --- a/xc/programs/Xserver/fb/fbfillsp.c +++ b/xc/programs/Xserver/fb/fbfillsp.c @@ -1,5 +1,5 @@ /* - * $Id: fbfillsp.c,v 1.1.1.1 2000/01/06 12:56:53 faith Exp $ + * Id: fbfillsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbfillsp.c,v 1.1 1999/11/19 13:53:43 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbfillsp.c,v 1.2 2000/02/23 20:29:43 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbgc.c b/xc/programs/Xserver/fb/fbgc.c index d4251ab6b..7cd14833b 100644 --- a/xc/programs/Xserver/fb/fbgc.c +++ b/xc/programs/Xserver/fb/fbgc.c @@ -1,5 +1,5 @@ /* - * $Id: fbgc.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbgc.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbgc.c,v 1.5 2000/02/14 19:20:28 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbgc.c,v 1.6 2000/02/23 20:29:44 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbgetsp.c b/xc/programs/Xserver/fb/fbgetsp.c index 5520ded14..80299d3ab 100644 --- a/xc/programs/Xserver/fb/fbgetsp.c +++ b/xc/programs/Xserver/fb/fbgetsp.c @@ -1,5 +1,5 @@ /* - * $Id: fbgetsp.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbgetsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbgetsp.c,v 1.3 2000/02/14 19:20:29 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbgetsp.c,v 1.4 2000/02/23 20:29:44 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbglyph.c b/xc/programs/Xserver/fb/fbglyph.c index 3851f5eac..842ee8fcf 100644 --- a/xc/programs/Xserver/fb/fbglyph.c +++ b/xc/programs/Xserver/fb/fbglyph.c @@ -1,5 +1,5 @@ /* - * $Id: fbglyph.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbglyph.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbglyph.c,v 1.6 2000/02/18 16:23:13 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbglyph.c,v 1.7 2000/02/23 20:29:44 dawes Exp $ */ #include "fb.h" #include "fontstruct.h" diff --git a/xc/programs/Xserver/fb/fbimage.c b/xc/programs/Xserver/fb/fbimage.c index fcffc7584..d9a467f38 100644 --- a/xc/programs/Xserver/fb/fbimage.c +++ b/xc/programs/Xserver/fb/fbimage.c @@ -1,5 +1,5 @@ /* - * $Id: fbimage.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbimage.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbimage.c,v 1.4 2000/02/14 19:20:29 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbimage.c,v 1.5 2000/02/23 20:29:45 dawes Exp $ */ #include "fb.h" #ifdef XFree86LOADER diff --git a/xc/programs/Xserver/fb/fbline.c b/xc/programs/Xserver/fb/fbline.c index a260425cf..999755d73 100644 --- a/xc/programs/Xserver/fb/fbline.c +++ b/xc/programs/Xserver/fb/fbline.c @@ -1,5 +1,5 @@ /* - * $Id: fbline.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbline.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbline.c,v 1.3 2000/02/14 19:20:29 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbline.c,v 1.6 2000/03/07 01:37:33 dawes Exp $ */ #include "fb.h" @@ -68,6 +68,30 @@ fbZeroLine (DrawablePtr pDrawable, } void +fbZeroSegment (DrawablePtr pDrawable, + GCPtr pGC, + int nseg, + xSegment *pSegs) +{ + int dashOffset; + int x, y; + Bool drawLast = pGC->capStyle != CapNotLast; + + x = pDrawable->x; + y = pDrawable->y; + while (nseg--) + { + dashOffset = 0; + fbSegment (pDrawable, pGC, + pSegs->x1 + x, pSegs->y1 + y, + pSegs->x2 + x, pSegs->y2 + y, + drawLast, + &dashOffset); + pSegs++; + } +} + +void fbFixCoordModePrevious (int npt, DDXPointPtr ppt) { @@ -130,22 +154,28 @@ fbPolySegment (DrawablePtr pDrawable, { void (*seg) (DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment *pseg); - seg = miPolySegment; -#ifndef FBNOPIXADDR - if (pGC->lineWidth == 0 && - pGC->fillStyle == FillSolid && - pGC->lineStyle == LineSolid && - REGION_NUM_RECTS (fbGetCompositeClip(pGC)) == 1) + if (pGC->lineWidth == 0) { - switch (pDrawable->bitsPerPixel) { - case 8: seg = fbPolySegment8; break; - case 16: seg = fbPolySegment16; break; + seg = fbZeroSegment; +#ifndef FBNOPIXADDR + if (pGC->fillStyle == FillSolid && + pGC->lineStyle == LineSolid && + REGION_NUM_RECTS (fbGetCompositeClip(pGC)) == 1) + { + switch (pDrawable->bitsPerPixel) { + case 8: seg = fbPolySegment8; break; + case 16: seg = fbPolySegment16; break; #ifdef FB_24BIT - case 24: seg = fbPolySegment24; break; + case 24: seg = fbPolySegment24; break; #endif - case 32: seg = fbPolySegment32; break; + case 32: seg = fbPolySegment32; break; + } } - } #endif + } + else + { + seg = miPolySegment; + } (*seg) (pDrawable, pGC, nseg, pseg); } diff --git a/xc/programs/Xserver/fb/fbpixmap.c b/xc/programs/Xserver/fb/fbpixmap.c index 3a892d8b6..eb2fe6949 100644 --- a/xc/programs/Xserver/fb/fbpixmap.c +++ b/xc/programs/Xserver/fb/fbpixmap.c @@ -1,5 +1,5 @@ /* - * $Id: fbpixmap.c,v 1.1.1.1 2000/01/06 12:56:53 faith Exp $ + * Id: fbpixmap.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbpixmap.c,v 1.2 1999/12/27 01:26:21 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbpixmap.c,v 1.3 2000/02/23 20:29:45 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbpoint.c b/xc/programs/Xserver/fb/fbpoint.c index 421d9cd8f..537c95b2b 100644 --- a/xc/programs/Xserver/fb/fbpoint.c +++ b/xc/programs/Xserver/fb/fbpoint.c @@ -1,5 +1,5 @@ /* - * $Id: fbpoint.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbpoint.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbpoint.c,v 1.4 2000/02/14 19:20:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbpoint.c,v 1.6 2000/03/01 00:25:15 dawes Exp $ */ #include "fb.h" @@ -139,16 +139,13 @@ fbPolyPoint (DrawablePtr pDrawable, xor = pPriv->xor; dots = fbDots; #ifndef FBNOPIXADDR - if (and == 0) - { - switch (dstBpp) { - case 8: dots = fbDots8; break; - case 16: dots = fbDots16; break; + switch (dstBpp) { + case 8: dots = fbDots8; break; + case 16: dots = fbDots16; break; #ifdef FB_24BIT - case 24: dots = fbDots24; break; + case 24: dots = fbDots24; break; #endif - case 32: dots = fbDots32; break; - } + case 32: dots = fbDots32; break; } #endif for (nBox = REGION_NUM_RECTS (pClip), pBox = REGION_RECTS (pClip); diff --git a/xc/programs/Xserver/fb/fbpush.c b/xc/programs/Xserver/fb/fbpush.c index f187c1b1a..8c3f7f7ea 100644 --- a/xc/programs/Xserver/fb/fbpush.c +++ b/xc/programs/Xserver/fb/fbpush.c @@ -1,5 +1,5 @@ /* - * $Id: fbpush.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbpush.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbpush.c,v 1.3 2000/02/14 19:20:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbpush.c,v 1.4 2000/02/23 20:29:46 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbrop.h b/xc/programs/Xserver/fb/fbrop.h index 574f837d5..9481be680 100644 --- a/xc/programs/Xserver/fb/fbrop.h +++ b/xc/programs/Xserver/fb/fbrop.h @@ -1,5 +1,5 @@ /* - * $Id: fbrop.h,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbrop.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbrop.h,v 1.3 2000/02/14 19:20:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbrop.h,v 1.4 2000/02/23 20:29:46 dawes Exp $ */ #ifndef _FBROP_H_ #define _FBROP_H_ diff --git a/xc/programs/Xserver/fb/fbscreen.c b/xc/programs/Xserver/fb/fbscreen.c index 69cdc8341..90e812e1e 100644 --- a/xc/programs/Xserver/fb/fbscreen.c +++ b/xc/programs/Xserver/fb/fbscreen.c @@ -1,5 +1,5 @@ /* - * $Id: fbscreen.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbscreen.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbscreen.c,v 1.7 2000/02/14 19:20:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbscreen.c,v 1.8 2000/02/23 20:29:46 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbseg.c b/xc/programs/Xserver/fb/fbseg.c index 49f3a750f..85c927d29 100644 --- a/xc/programs/Xserver/fb/fbseg.c +++ b/xc/programs/Xserver/fb/fbseg.c @@ -1,5 +1,5 @@ /* - * $Id: fbseg.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbseg.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbseg.c,v 1.4 2000/02/14 19:20:31 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbseg.c,v 1.5 2000/02/23 20:29:46 dawes Exp $ */ #include "fb.h" #include "miline.h" diff --git a/xc/programs/Xserver/fb/fbsetsp.c b/xc/programs/Xserver/fb/fbsetsp.c index a946499be..4bddf8560 100644 --- a/xc/programs/Xserver/fb/fbsetsp.c +++ b/xc/programs/Xserver/fb/fbsetsp.c @@ -1,5 +1,5 @@ /* - * $Id: fbsetsp.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbsetsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbsetsp.c,v 1.2 2000/02/14 19:20:31 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbsetsp.c,v 1.3 2000/02/23 20:29:47 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbsolid.c b/xc/programs/Xserver/fb/fbsolid.c index 728c1851b..23897ca66 100644 --- a/xc/programs/Xserver/fb/fbsolid.c +++ b/xc/programs/Xserver/fb/fbsolid.c @@ -1,5 +1,5 @@ /* - * $Id: fbsolid.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbsolid.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbsolid.c,v 1.5 2000/02/14 19:20:31 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbsolid.c,v 1.6 2000/02/23 20:29:47 dawes Exp $ */ #define FbSelectPart(xor,o,t) xor diff --git a/xc/programs/Xserver/fb/fbstipple.c b/xc/programs/Xserver/fb/fbstipple.c index ea0546d2f..f2e7907e5 100644 --- a/xc/programs/Xserver/fb/fbstipple.c +++ b/xc/programs/Xserver/fb/fbstipple.c @@ -1,5 +1,5 @@ /* - * $Id: fbstipple.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbstipple.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbstipple.c,v 1.5 2000/02/14 19:20:31 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbstipple.c,v 1.6 2000/02/23 20:29:47 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbtile.c b/xc/programs/Xserver/fb/fbtile.c index 1bba5f703..ed447f8d3 100644 --- a/xc/programs/Xserver/fb/fbtile.c +++ b/xc/programs/Xserver/fb/fbtile.c @@ -1,5 +1,5 @@ /* - * $Id: fbtile.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbtile.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbtile.c,v 1.3 2000/02/12 03:39:43 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbtile.c,v 1.4 2000/02/23 20:29:48 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbutil.c b/xc/programs/Xserver/fb/fbutil.c index 6ebac45a0..9515074b4 100644 --- a/xc/programs/Xserver/fb/fbutil.c +++ b/xc/programs/Xserver/fb/fbutil.c @@ -1,5 +1,5 @@ /* - * $Id: fbutil.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbutil.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbutil.c,v 1.3 2000/02/14 19:20:32 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbutil.c,v 1.4 2000/02/23 20:29:48 dawes Exp $ */ #include "fb.h" diff --git a/xc/programs/Xserver/fb/fbwindow.c b/xc/programs/Xserver/fb/fbwindow.c index 96c8ed956..79090a55d 100644 --- a/xc/programs/Xserver/fb/fbwindow.c +++ b/xc/programs/Xserver/fb/fbwindow.c @@ -1,5 +1,5 @@ /* - * $Id: fbwindow.c,v 1.1.1.2 2000/02/22 15:42:20 kem Exp $ + * Id: fbwindow.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbwindow.c,v 1.2 2000/02/14 19:20:32 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbwindow.c,v 1.3 2000/02/23 20:29:48 dawes Exp $ */ #include "fb.h" |