diff options
-rw-r--r-- | dix/property.c | 1 | ||||
-rw-r--r-- | dix/selection.c | 3 | ||||
-rw-r--r-- | hw/xfree86/common/xf86VGAarbiter.c | 169 | ||||
-rw-r--r-- | hw/xfree86/common/xf86VGAarbiter.h | 2 | ||||
-rw-r--r-- | hw/xfree86/common/xf86VGAarbiterPriv.h | 21 | ||||
-rwxr-xr-x | hw/xfree86/loader/sdksyms.sh | 9 | ||||
-rw-r--r-- | os/io.c | 27 | ||||
-rw-r--r-- | os/osdep.h | 1 |
8 files changed, 135 insertions, 98 deletions
diff --git a/dix/property.c b/dix/property.c index 87e5c2d18..1d4332a58 100644 --- a/dix/property.c +++ b/dix/property.c @@ -284,7 +284,6 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property, pProp->format = format; pProp->data = data; pProp->size = len; - pProp->devPrivates = NULL; rc = XaceHookPropertyAccess(pClient, pWin, &pProp, DixCreateAccess|DixWriteAccess); if (rc != Success) { diff --git a/dix/selection.c b/dix/selection.c index bae3a3092..87ed1abe9 100644 --- a/dix/selection.c +++ b/dix/selection.c @@ -196,12 +196,11 @@ ProcSetSelectionOwner(ClientPtr client) /* * It doesn't exist, so add it... */ - pSel = malloc(sizeof(Selection)); + pSel = dixAllocateObjectWithPrivates(Selection, PRIVATE_SELECTION); if (!pSel) return BadAlloc; pSel->selection = stuff->selection; - pSel->devPrivates = NULL; /* security creation/labeling check */ rc = XaceHookSelectionAccess(client, &pSel, diff --git a/hw/xfree86/common/xf86VGAarbiter.c b/hw/xfree86/common/xf86VGAarbiter.c index 05cf24502..4f46059c3 100644 --- a/hw/xfree86/common/xf86VGAarbiter.c +++ b/hw/xfree86/common/xf86VGAarbiter.c @@ -138,11 +138,12 @@ xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn) } void -xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn) +xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn, int rsrc) { if (vga_no_arb) return; - pci_device_vgaarb_decodes(VGA_ARB_RSRC_LEGACY_MEM | VGA_ARB_RSRC_LEGACY_IO); + pci_device_vgaarb_set_target(pScrn->vgaDev); + pci_device_vgaarb_decodes(rsrc); } Bool @@ -266,7 +267,7 @@ VGAarbiterBlockHandler(int i, { ScreenPtr pScreen = screenInfo.screens[i]; SCREEN_PROLOG(BlockHandler); - VGAGet(); + VGAGet(pScreen); pScreen->BlockHandler(i, blockData, pTimeout, pReadmask); VGAPut(); SCREEN_EPILOG(BlockHandler, VGAarbiterBlockHandler); @@ -277,7 +278,7 @@ VGAarbiterWakeupHandler(int i, pointer blockData, unsigned long result, pointer { ScreenPtr pScreen = screenInfo.screens[i]; SCREEN_PROLOG(WakeupHandler); - VGAGet(); + VGAGet(pScreen); pScreen->WakeupHandler(i, blockData, result, pReadmask); VGAPut(); SCREEN_EPILOG(WakeupHandler, VGAarbiterWakeupHandler); @@ -295,7 +296,7 @@ VGAarbiterGetImage ( ScreenPtr pScreen = pDrawable->pScreen; SCREEN_PROLOG(GetImage); // if (xf86Screens[pScreen->myNum]->vtSema) { - VGAGet(); + VGAGet(pScreen); // } (*pScreen->GetImage) (pDrawable, sx, sy, w, h, format, planemask, pdstLine); @@ -316,7 +317,7 @@ VGAarbiterGetSpans ( ScreenPtr pScreen = pDrawable->pScreen; SCREEN_PROLOG (GetSpans); - VGAGet(); + VGAGet(pScreen); (*pScreen->GetSpans) (pDrawable, wMax, ppt, pwidth, nspans, pdstStart); VGAPut(); SCREEN_EPILOG (GetSpans, VGAarbiterGetSpans); @@ -329,7 +330,7 @@ VGAarbiterSourceValidate ( { ScreenPtr pScreen = pDrawable->pScreen; SCREEN_PROLOG (SourceValidate); - VGAGet(); + VGAGet(pScreen); if (pScreen->SourceValidate) (*pScreen->SourceValidate) (pDrawable, x, y, width, height); VGAPut(); @@ -345,7 +346,7 @@ VGAarbiterCopyWindow( ScreenPtr pScreen = pWin->drawable.pScreen; SCREEN_PROLOG (CopyWindow); - VGAGet(); + VGAGet(pScreen); (*pScreen->CopyWindow) (pWin, ptOldOrg, prgnSrc); VGAPut(); SCREEN_EPILOG (CopyWindow, VGAarbiterCopyWindow); @@ -361,7 +362,7 @@ VGAarbiterClearToBackground ( ScreenPtr pScreen = pWin->drawable.pScreen; SCREEN_PROLOG ( ClearToBackground); - VGAGet(); + VGAGet(pScreen); (*pScreen->ClearToBackground) (pWin, x, y, w, h, generateExposures); VGAPut(); SCREEN_EPILOG (ClearToBackground, VGAarbiterClearToBackground); @@ -373,7 +374,7 @@ VGAarbiterCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, unsigned usag PixmapPtr pPix; SCREEN_PROLOG ( CreatePixmap); - VGAGet(); + VGAGet(pScreen); pPix = (*pScreen->CreatePixmap) (pScreen, w, h, depth, usage_hint); VGAPut(); SCREEN_EPILOG (CreatePixmap, VGAarbiterCreatePixmap); @@ -387,7 +388,7 @@ VGAarbiterSaveScreen(ScreenPtr pScreen, Bool unblank) Bool val; SCREEN_PROLOG (SaveScreen); - VGAGet(); + VGAGet(pScreen); val = (*pScreen->SaveScreen) (pScreen, unblank); VGAPut(); SCREEN_EPILOG (SaveScreen, VGAarbiterSaveScreen); @@ -404,7 +405,7 @@ VGAarbiterStoreColors ( ScreenPtr pScreen = pmap->pScreen; SCREEN_PROLOG (StoreColors); - VGAGet(); + VGAGet(pScreen); (*pScreen->StoreColors) (pmap,ndef,pdefs); VGAPut(); SCREEN_EPILOG ( StoreColors, VGAarbiterStoreColors); @@ -419,7 +420,7 @@ VGAarbiterRecolorCursor ( ) { SCREEN_PROLOG (RecolorCursor); - VGAGet(); + VGAGet(pScreen); (*pScreen->RecolorCursor) (pDev, pScreen, pCurs, displayed); VGAPut(); SCREEN_EPILOG ( RecolorCursor, VGAarbiterRecolorCursor); @@ -435,7 +436,7 @@ VGAarbiterRealizeCursor ( Bool val; SCREEN_PROLOG (RealizeCursor); - VGAGet(); + VGAGet(pScreen); val = (*pScreen->RealizeCursor) (pDev, pScreen,pCursor); VGAPut(); SCREEN_EPILOG ( RealizeCursor, VGAarbiterRealizeCursor); @@ -452,7 +453,7 @@ VGAarbiterUnrealizeCursor ( Bool val; SCREEN_PROLOG (UnrealizeCursor); - VGAGet(); + VGAGet(pScreen); val = (*pScreen->UnrealizeCursor) (pDev, pScreen, pCursor); VGAPut(); SCREEN_EPILOG ( UnrealizeCursor, VGAarbiterUnrealizeCursor); @@ -469,7 +470,7 @@ VGAarbiterDisplayCursor ( Bool val; SCREEN_PROLOG (DisplayCursor); - VGAGet(); + VGAGet(pScreen); val = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor); VGAPut(); SCREEN_EPILOG ( DisplayCursor, VGAarbiterDisplayCursor); @@ -486,7 +487,7 @@ VGAarbiterSetCursorPosition ( Bool val; SCREEN_PROLOG (SetCursorPosition); - VGAGet(); + VGAGet(pScreen); val = (*pScreen->SetCursorPosition) (pDev, pScreen, x, y, generateEvent); VGAPut(); SCREEN_EPILOG ( SetCursorPosition, VGAarbiterSetCursorPosition); @@ -500,7 +501,7 @@ VGAarbiterAdjustFrame(int index, int x, int y, int flags) VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate( &pScreen->devPrivates, VGAarbiterScreenKey); - VGAGet(); + VGAGet(pScreen); (*pScreenPriv->AdjustFrame)(index, x, y, flags); VGAPut(); } @@ -513,7 +514,7 @@ VGAarbiterSwitchMode(int index, DisplayModePtr mode, int flags) VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate( &pScreen->devPrivates, VGAarbiterScreenKey); - VGAGet(); + VGAGet(pScreen); val = (*pScreenPriv->SwitchMode)(index, mode, flags); VGAPut(); return val; @@ -528,7 +529,7 @@ VGAarbiterEnterVT(int index, int flags) VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate( &pScreen->devPrivates, VGAarbiterScreenKey); - VGAGet(); + VGAGet(pScreen); pScrn->EnterVT = pScreenPriv->EnterVT; val = (*pScrn->EnterVT)(index, flags); pScreenPriv->EnterVT = pScrn->EnterVT; @@ -545,7 +546,7 @@ VGAarbiterLeaveVT(int index, int flags) VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate( &pScreen->devPrivates, VGAarbiterScreenKey); - VGAGet(); + VGAGet(pScreen); pScrn->LeaveVT = pScreenPriv->LeaveVT; (*pScreenPriv->LeaveVT)(index, flags); pScreenPriv->LeaveVT = pScrn->LeaveVT; @@ -560,7 +561,7 @@ VGAarbiterFreeScreen(int index, int flags) VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate( &pScreen->devPrivates, VGAarbiterScreenKey); - VGAGet(); + VGAGet(pScreen); (*pScreenPriv->FreeScreen)(index, flags); VGAPut(); } @@ -573,7 +574,7 @@ VGAarbiterCreateGC(GCPtr pGC) Bool ret; SCREEN_PROLOG(CreateGC); - VGAGet(); + VGAGet(pScreen); ret = (*pScreen->CreateGC)(pGC); VGAPut(); GC_WRAP(pGC); @@ -662,10 +663,11 @@ VGAarbiterFillSpans( int *pwidthInit, int fSorted ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -679,10 +681,11 @@ VGAarbiterSetSpans( int nspans, int fSorted ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, ppt, pwidth, nspans, fSorted); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -696,11 +699,12 @@ VGAarbiterPutImage( int format, char *pImage ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h, leftPad, format, pImage); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -714,12 +718,12 @@ VGAarbiterCopyArea( int dstx, int dsty ) { RegionPtr ret; - + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); ret = (*pGC->ops->CopyArea)(pSrc, pDst, pGC, srcx, srcy, width, height, dstx, dsty); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); return ret; } @@ -735,12 +739,12 @@ VGAarbiterCopyPlane( unsigned long bitPlane ) { RegionPtr ret; - + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); ret = (*pGC->ops->CopyPlane)(pSrc, pDst, pGC, srcx, srcy, width, height, dstx, dsty, bitPlane); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); return ret; } @@ -753,10 +757,11 @@ VGAarbiterPolyPoint( int npt, xPoint *pptInit ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -769,10 +774,11 @@ VGAarbiterPolylines( int npt, DDXPointPtr pptInit ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -783,10 +789,11 @@ VGAarbiterPolySegment( int nseg, xSegment *pSeg ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -797,10 +804,11 @@ VGAarbiterPolyRectangle( int nRectsInit, xRectangle *pRectsInit ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PolyRectangle)(pDraw, pGC, nRectsInit, pRectsInit); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -811,10 +819,11 @@ VGAarbiterPolyArc( int narcs, xArc *parcs ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -827,10 +836,11 @@ VGAarbiterFillPolygon( int count, DDXPointPtr ptsIn ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, ptsIn); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -841,10 +851,11 @@ VGAarbiterPolyFillRect( int nrectFill, xRectangle *prectInit) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PolyFillRect)(pDraw, pGC, nrectFill, prectInit); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -855,10 +866,11 @@ VGAarbiterPolyFillArc( int narcs, xArc *parcs ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -872,11 +884,11 @@ VGAarbiterPolyText8( char *chars ) { int ret; - + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); ret = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); return ret; } @@ -891,11 +903,11 @@ VGAarbiterPolyText16( unsigned short *chars ) { int ret; - + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); ret = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); return ret; } @@ -909,10 +921,11 @@ VGAarbiterImageText8( int count, char *chars ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -925,10 +938,11 @@ VGAarbiterImageText16( int count, unsigned short *chars ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -942,11 +956,12 @@ VGAarbiterImageGlyphBlt( CharInfoPtr *ppci, pointer pglyphBase ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->ImageGlyphBlt)(pDraw, pGC, xInit, yInit, nglyph, ppci, pglyphBase); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -959,11 +974,12 @@ VGAarbiterPolyGlyphBlt( CharInfoPtr *ppci, pointer pglyphBase ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PolyGlyphBlt)(pDraw, pGC, xInit, yInit, nglyph, ppci, pglyphBase); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -974,10 +990,11 @@ VGAarbiterPushPixels( DrawablePtr pDraw, int dx, int dy, int xOrg, int yOrg ) { + ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); - VGAGet_GC(); + VGAGet(pScreen); (*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg); - VGAPut_GC(); + VGAPut(); GC_WRAP(pGC); } @@ -988,7 +1005,7 @@ VGAarbiterSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pC { Bool val; SPRITE_PROLOG; - VGAGet(); + VGAGet(pScreen); val = PointPriv->spriteFuncs->RealizeCursor(pDev, pScreen, pCur); VGAPut(); SPRITE_EPILOG; @@ -1000,7 +1017,7 @@ VGAarbiterSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr { Bool val; SPRITE_PROLOG; - VGAGet(); + VGAGet(pScreen); val = PointPriv->spriteFuncs->UnrealizeCursor(pDev, pScreen, pCur); VGAPut(); SPRITE_EPILOG; @@ -1011,7 +1028,7 @@ static void VGAarbiterSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur, int x, int y) { SPRITE_PROLOG; - VGAGet(); + VGAGet(pScreen); PointPriv->spriteFuncs->SetCursor(pDev, pScreen, pCur, x, y); VGAPut(); SPRITE_EPILOG; @@ -1021,7 +1038,7 @@ static void VGAarbiterSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) { SPRITE_PROLOG; - VGAGet(); + VGAGet(pScreen); PointPriv->spriteFuncs->MoveCursor(pDev, pScreen, x, y); VGAPut(); SPRITE_EPILOG; @@ -1032,7 +1049,7 @@ VGAarbiterDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen) { Bool val; SPRITE_PROLOG; - VGAGet(); + VGAGet(pScreen); val = PointPriv->spriteFuncs->DeviceCursorInitialize(pDev, pScreen); VGAPut(); SPRITE_EPILOG; @@ -1043,7 +1060,7 @@ static void VGAarbiterDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen) { SPRITE_PROLOG; - VGAGet(); + VGAGet(pScreen); PointPriv->spriteFuncs->DeviceCursorCleanup(pDev, pScreen); VGAPut(); SPRITE_EPILOG; @@ -1060,7 +1077,7 @@ VGAarbiterComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PICTURE_PROLOGUE(Composite); - VGAGet(); + VGAGet(pScreen); (*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst, yDst, width, height); VGAPut(); @@ -1077,7 +1094,7 @@ VGAarbiterGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst, PICTURE_PROLOGUE(Glyphs); - VGAGet(); + VGAGet(pScreen); (*ps->Glyphs)(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs); VGAPut(); PICTURE_EPILOGUE (Glyphs, VGAarbiterGlyphs); @@ -1092,7 +1109,7 @@ VGAarbiterCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color, int nRe PICTURE_PROLOGUE(CompositeRects); - VGAGet(); + VGAGet(pScreen); (*ps->CompositeRects)(op, pDst, color, nRect, rects); VGAPut(); PICTURE_EPILOGUE (CompositeRects, VGAarbiterCompositeRects); diff --git a/hw/xfree86/common/xf86VGAarbiter.h b/hw/xfree86/common/xf86VGAarbiter.h index 904b6b079..de104a914 100644 --- a/hw/xfree86/common/xf86VGAarbiter.h +++ b/hw/xfree86/common/xf86VGAarbiter.h @@ -40,7 +40,7 @@ extern void xf86VGAarbiterUnlock(ScrnInfoPtr pScrn); /* allow a driver to remove itself from arbiter - really should be * done in the kernel though */ -extern _X_EXPORT void xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn); +extern _X_EXPORT void xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn, int rsrc); /* DRI and arbiter are really not possible together, * you really want to remove the card from arbitration if you can */ extern _X_EXPORT Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen); diff --git a/hw/xfree86/common/xf86VGAarbiterPriv.h b/hw/xfree86/common/xf86VGAarbiterPriv.h index 9b4a59731..2920fb53a 100644 --- a/hw/xfree86/common/xf86VGAarbiterPriv.h +++ b/hw/xfree86/common/xf86VGAarbiterPriv.h @@ -93,23 +93,16 @@ (VGAarbiterGCPtr)dixLookupPrivate(&(x)->devPrivates, VGAarbiterGCKey);\ (x)->ops = pGCPriv->wrapOps; (x)->funcs = pGCPriv->wrapFuncs; -#define GC_SCREEN register ScrnInfoPtr pScrn = \ - xf86Screens[pGC->pScreen->myNum] - -#define VGAGet(x)\ - pci_device_vgaarb_set_target(xf86Screens[pScreen->myNum]->vgaDev); \ - pci_device_vgaarb_lock(); - -#define VGAGet_GC(x)\ - pci_device_vgaarb_set_target(xf86Screens[pGC->pScreen->myNum]->vgaDev); \ +static inline void +VGAGet(ScreenPtr pScreen) { + pci_device_vgaarb_set_target(xf86Screens[pScreen->myNum]->vgaDev); pci_device_vgaarb_lock(); +} -#define VGAPut(x)\ +static inline void +VGAPut(void) { pci_device_vgaarb_unlock(); - -#define VGAPut_GC(x)\ - pci_device_vgaarb_unlock(); - +} typedef struct _VGAarbiterScreen { CreateGCProcPtr CreateGC; diff --git a/hw/xfree86/loader/sdksyms.sh b/hw/xfree86/loader/sdksyms.sh index 13c5ae5f8..700879cb2 100755 --- a/hw/xfree86/loader/sdksyms.sh +++ b/hw/xfree86/loader/sdksyms.sh @@ -345,11 +345,14 @@ BEGIN { if (sdk && $3 ~ /\.h"$/) { # remove quotes gsub(/"/, "", $3); + line = $2; + header = $3; if (! headers[$3]) { printf(" \\\n %s", $3) >> "sdksyms.dep"; headers[$3] = 1; } } + next; } /^extern[ ]/ { @@ -398,10 +401,14 @@ BEGIN { sub(/[^a-zA-Z0-9_].*/, "", symbol); #print; - printf(" (void *) &%s,\n", symbol); + printf(" (void *) &%-50s /* %s:%s */\n", symbol ",", header, line); } } +{ + line++; +} + END { print("};"); @@ -251,7 +251,14 @@ ReadRequestFromClient(ClientPtr client) need_header = FALSE; move_header = FALSE; gotnow = oci->bufcnt + oci->buffer - oci->bufptr; - if (gotnow < sizeof(xReq)) + + if (oci->ignoreBytes > 0) { + if (oci->ignoreBytes > oci->size) + needed = oci->size; + else + needed = oci->ignoreBytes; + } + else if (gotnow < sizeof(xReq)) { /* We don't have an entire xReq yet. Can't tell how big * the request will be until we get the whole xReq. @@ -294,8 +301,13 @@ ReadRequestFromClient(ClientPtr client) if (needed > maxBigRequestSize << 2) { /* request is too big for us to handle */ - YieldControlDeath(); - return -1; + /* + * Mark the rest of it as needing to be ignored, and then return + * the full size. Dispatch() will turn it into a BadLength error. + */ + oci->ignoreBytes = needed - gotnow; + oci->lenLastReq = gotnow; + return needed; } if ((gotnow == 0) || ((oci->bufptr - oci->buffer + needed) > oci->size)) @@ -400,6 +412,14 @@ ReadRequestFromClient(ClientPtr client) } oci->lenLastReq = needed; + /* If there are bytes to ignore, ignore them now. */ + + if (oci->ignoreBytes > 0) { + assert(needed == oci->ignoreBytes || needed == oci->size); + oci->ignoreBytes -= gotnow; + needed = gotnow = 0; + } + /* * Check to see if client has at least one whole request in the * buffer beyond the request we're returning to the caller. @@ -1030,6 +1050,7 @@ AllocateInputBuffer(void) oci->bufptr = oci->buffer; oci->bufcnt = 0; oci->lenLastReq = 0; + oci->ignoreBytes = 0; return oci; } diff --git a/os/osdep.h b/os/osdep.h index 1d87592e3..3c0e78f06 100644 --- a/os/osdep.h +++ b/os/osdep.h @@ -125,6 +125,7 @@ typedef struct _connectionInput { int bufcnt; /* count of bytes in buffer */ int lenLastReq; int size; + unsigned int ignoreBytes; /* bytes to ignore before the next request */ } ConnectionInput, *ConnectionInputPtr; typedef struct _connectionOutput { |