diff options
-rw-r--r-- | xorg-server/Xext/sync.c | 19 | ||||
-rw-r--r-- | xorg-server/dix/gc.c | 117 | ||||
-rw-r--r-- | xorg-server/hw/dmx/dmxextension.c | 2 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/common/xf86DGA.c | 4 | ||||
-rw-r--r-- | xorg-server/mi/mipolypnt.c | 5 | ||||
-rw-r--r-- | xorg-server/mi/miwideline.c | 80 | ||||
-rw-r--r-- | xorg-server/mi/miwideline.h | 64 |
7 files changed, 132 insertions, 159 deletions
diff --git a/xorg-server/Xext/sync.c b/xorg-server/Xext/sync.c index 990cb67de..e865e527a 100644 --- a/xorg-server/Xext/sync.c +++ b/xorg-server/Xext/sync.c @@ -94,7 +94,7 @@ static SyncCounter **SysCounterList = NULL; #define XSyncCAAllTrigger \ (XSyncCACounter | XSyncCAValueType | XSyncCAValue | XSyncCATestType) -static void SyncComputeBracketValues(SyncCounter *, Bool); +static void SyncComputeBracketValues(SyncCounter *); static void SyncInitServerTime(void); @@ -167,7 +167,7 @@ SyncDeleteTriggerFromCounter(SyncTrigger *pTrigger) } if (IsSystemCounter(pTrigger->pCounter)) - SyncComputeBracketValues(pTrigger->pCounter, /*startOver*/ TRUE); + SyncComputeBracketValues(pTrigger->pCounter); } @@ -194,7 +194,7 @@ SyncAddTriggerToCounter(SyncTrigger *pTrigger) pTrigger->pCounter->pTriglist = pCur; if (IsSystemCounter(pTrigger->pCounter)) - SyncComputeBracketValues(pTrigger->pCounter, /*startOver*/ TRUE); + SyncComputeBracketValues(pTrigger->pCounter); return Success; } @@ -351,7 +351,7 @@ SyncInitTrigger(ClientPtr client, SyncTrigger *pTrigger, XSyncCounter counter, } else if (IsSystemCounter(pCounter)) { - SyncComputeBracketValues(pCounter, /*startOver*/ TRUE); + SyncComputeBracketValues(pCounter); } return Success; @@ -646,7 +646,7 @@ SyncChangeCounter(SyncCounter *pCounter, CARD64 newval) if (IsSystemCounter(pCounter)) { - SyncComputeBracketValues(pCounter, /* startOver */ FALSE); + SyncComputeBracketValues(pCounter); } } @@ -913,7 +913,7 @@ SyncDestroySystemCounter(pointer pSysCounter) } static void -SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver) +SyncComputeBracketValues(SyncCounter *pCounter) { SyncTriggerList *pCur; SyncTrigger *pTrigger; @@ -930,11 +930,8 @@ SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver) if (ct == XSyncCounterNeverChanges) return; - if (startOver) - { - XSyncMaxValue(&psci->bracket_greater); - XSyncMinValue(&psci->bracket_less); - } + XSyncMaxValue(&psci->bracket_greater); + XSyncMinValue(&psci->bracket_less); for (pCur = pCounter->pTriglist; pCur; pCur = pCur->next) { diff --git a/xorg-server/dix/gc.c b/xorg-server/dix/gc.c index 649016595..3058e1541 100644 --- a/xorg-server/dix/gc.c +++ b/xorg-server/dix/gc.c @@ -263,78 +263,68 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr break; } case GCTile: - { - XID newpix = 0; if (pUnion) { NEXT_PTR(PixmapPtr, pPixmap); - rc = Success; } else { + XID newpix; NEXTVAL(XID, newpix); rc = dixLookupResourceByType((pointer *)&pPixmap, newpix, RT_PIXMAP, client, DixReadAccess); - } - if (rc == Success) - { - if ((pPixmap->drawable.depth != pGC->depth) || - (pPixmap->drawable.pScreen != pGC->pScreen)) + if (rc != Success) { - error = BadMatch; - } - else - { - pPixmap->refcnt++; - if (!pGC->tileIsPixel) - (* pGC->pScreen->DestroyPixmap)(pGC->tile.pixmap); - pGC->tileIsPixel = FALSE; - pGC->tile.pixmap = pPixmap; + clientErrorValue = newpix; + error = (rc == BadValue) ? BadPixmap : rc; + break; } } + if ((pPixmap->drawable.depth != pGC->depth) || + (pPixmap->drawable.pScreen != pGC->pScreen)) + { + error = BadMatch; + } else { - clientErrorValue = newpix; - error = (rc == BadValue) ? BadPixmap : rc; + pPixmap->refcnt++; + if (!pGC->tileIsPixel) + (* pGC->pScreen->DestroyPixmap)(pGC->tile.pixmap); + pGC->tileIsPixel = FALSE; + pGC->tile.pixmap = pPixmap; } break; - } case GCStipple: - { - XID newstipple = 0; if (pUnion) { NEXT_PTR(PixmapPtr, pPixmap); - rc = Success; } else { + XID newstipple; NEXTVAL(XID, newstipple) rc = dixLookupResourceByType((pointer *)&pPixmap, newstipple, RT_PIXMAP, client, DixReadAccess); - } - if (rc == Success) - { - if ((pPixmap->drawable.depth != 1) || - (pPixmap->drawable.pScreen != pGC->pScreen)) + if (rc != Success) { - error = BadMatch; - } - else - { - pPixmap->refcnt++; - if (pGC->stipple) - (* pGC->pScreen->DestroyPixmap)(pGC->stipple); - pGC->stipple = pPixmap; + clientErrorValue = newstipple; + error = (rc == BadValue) ? BadPixmap : rc; + break; } } + if ((pPixmap->drawable.depth != 1) || + (pPixmap->drawable.pScreen != pGC->pScreen)) + { + error = BadMatch; + } else { - clientErrorValue = newstipple; - error = (rc == BadValue) ? BadPixmap : rc; + pPixmap->refcnt++; + if (pGC->stipple) + (* pGC->pScreen->DestroyPixmap)(pGC->stipple); + pGC->stipple = pPixmap; } break; - } case GCTileStipXOrigin: NEXTVAL(INT16, pGC->patOrg.x); break; @@ -344,30 +334,27 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr case GCFont: { FontPtr pFont; - XID newfont = 0; if (pUnion) { NEXT_PTR(FontPtr, pFont); - rc = Success; } else { + XID newfont; NEXTVAL(XID, newfont) rc = dixLookupResourceByType((pointer *)&pFont, newfont, RT_FONT, client, DixUseAccess); + if (rc != Success) + { + clientErrorValue = newfont; + error = (rc == BadValue) ? BadFont : rc; + break; + } } - if (rc == Success) - { - pFont->refcnt++; - if (pGC->font) - CloseFont(pGC->font, (Font)0); - pGC->font = pFont; - } - else - { - clientErrorValue = newfont; - error = (rc == BadValue) ? BadFont : rc; - } + pFont->refcnt++; + if (pGC->font) + CloseFont(pGC->font, (Font)0); + pGC->font = pFont; break; } case GCSubwindowMode: @@ -403,22 +390,16 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr NEXTVAL(INT16, pGC->clipOrg.y); break; case GCClipMask: - { - Pixmap pid = 0; - int clipType = 0; - if (pUnion) { NEXT_PTR(PixmapPtr, pPixmap); } else { + Pixmap pid; NEXTVAL(Pixmap, pid) if (pid == None) - { - clipType = CT_NONE; pPixmap = NullPixmap; - } else { rc = dixLookupResourceByType((pointer *)&pPixmap, pid, RT_PIXMAP, client, @@ -426,6 +407,7 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr if (rc != Success) { clientErrorValue = pid; error = (rc == BadValue) ? BadPixmap : rc; + break; } } } @@ -436,20 +418,13 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr (pPixmap->drawable.pScreen != pGC->pScreen)) { error = BadMatch; + break; } - else - { - clipType = CT_PIXMAP; - pPixmap->refcnt++; - } - } - if(error == Success) - { - (*pGC->funcs->ChangeClip)(pGC, clipType, - (pointer)pPixmap, 0); + pPixmap->refcnt++; } + (*pGC->funcs->ChangeClip)(pGC, pPixmap ? CT_PIXMAP : CT_NONE, + (pointer)pPixmap, 0); break; - } case GCDashOffset: NEXTVAL(INT16, pGC->dashOffset); break; diff --git a/xorg-server/hw/dmx/dmxextension.c b/xorg-server/hw/dmx/dmxextension.c index 4e555330e..c8e8dae65 100644 --- a/xorg-server/hw/dmx/dmxextension.c +++ b/xorg-server/hw/dmx/dmxextension.c @@ -1155,7 +1155,7 @@ static void dmxBERestoreRenderGlyph(pointer value, XID id, pointer n) len_images); /* Clean up */ - free(len_images); + free(images); free(gids); free(glyphs); } diff --git a/xorg-server/hw/xfree86/common/xf86DGA.c b/xorg-server/hw/xfree86/common/xf86DGA.c index 1a1032786..794a13171 100644 --- a/xorg-server/hw/xfree86/common/xf86DGA.c +++ b/xorg-server/hw/xfree86/common/xf86DGA.c @@ -1088,13 +1088,15 @@ DGAProcessPointerEvent (ScreenPtr pScreen, DGAEvent *event, DeviceIntPtr mouse) ButtonClassPtr butc = mouse->button; DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen); DeviceEvent ev; + DeviceIntPtr master = GetMaster(mouse, MASTER_KEYBOARD); memset(&ev, 0, sizeof(ev)); ev.header = ET_Internal; ev.length = sizeof(ev); ev.type = event->subtype; ev.corestate = butc->state; - ev.corestate |= XkbStateFieldFromRec(&GetPairedDevice(mouse)->key->xkbInfo->state); + if (master && master->key) + ev.corestate |= XkbStateFieldFromRec(&master->key->xkbInfo->state); UpdateDeviceState(mouse, &ev); diff --git a/xorg-server/mi/mipolypnt.c b/xorg-server/mi/mipolypnt.c index 5d6243ab0..12771ee4e 100644 --- a/xorg-server/mi/mipolypnt.c +++ b/xorg-server/mi/mipolypnt.c @@ -73,6 +73,9 @@ miPolyPoint( int i; xPoint *ppt; + if(!(pwidthInit = xalloc(npt * sizeof(int)))) + return; + /* make pointlist origin relative */ if (mode == CoordModePrevious) { @@ -107,8 +110,6 @@ miPolyPoint( DoChangeGC(pGC, GCFillStyle, &fsNew, 0); ValidateGC(pDrawable, pGC); } - if(!(pwidthInit = xalloc(npt * sizeof(int)))) - return; pwidth = pwidthInit; for(i = 0; i < npt; i++) *pwidth++ = 1; diff --git a/xorg-server/mi/miwideline.c b/xorg-server/mi/miwideline.c index 210a6251e..181b12e48 100644 --- a/xorg-server/mi/miwideline.c +++ b/xorg-server/mi/miwideline.c @@ -52,6 +52,33 @@ from The Open Group. #include "miwideline.h" #include "mi.h" +/* + * interface data to span-merging polygon filler + */ + +typedef struct _SpanData { + SpanGroup fgGroup, bgGroup; +} SpanDataRec, *SpanDataPtr; + +static void +AppendSpanGroup(GCPtr pGC, unsigned long pixel, Spans *spanPtr, SpanDataPtr spanData) +{ + SpanGroup *group, *othergroup = NULL; + if (pixel == pGC->fgPixel) + { + group = &spanData->fgGroup; + if (pGC->lineStyle == LineDoubleDash) + othergroup = &spanData->bgGroup; + } + else + { + group = &spanData->bgGroup; + othergroup = &spanData->fgGroup; + } + miAppendSpans (group, othergroup, spanPtr); +} + + static void miLineArc(DrawablePtr pDraw, GCPtr pGC, unsigned long pixel, SpanDataPtr spanData, LineFacePtr leftFace, @@ -138,8 +165,31 @@ miFillPolyHelper (DrawablePtr pDrawable, GCPtr pGC, unsigned long pixel, while ((left_count || left_height) && (right_count || right_height)) { - MIPOLYRELOADLEFT - MIPOLYRELOADRIGHT + if (!left_height && left_count) + { + left_height = left->height; + left_x = left->x; + left_stepx = left->stepx; + left_signdx = left->signdx; + left_e = left->e; + left_dy = left->dy; + left_dx = left->dx; + --left_count; + ++left; + } + + if (!right_height && right_count) + { + right_height = right->height; + right_x = right->x; + right_stepx = right->stepx; + right_signdx = right->signdx; + right_e = right->e; + right_dy = right->dy; + right_dx = right->dx; + --right_count; + ++right; + } height = left_height; if (height > right_height) @@ -157,11 +207,23 @@ miFillPolyHelper (DrawablePtr pDrawable, GCPtr pGC, unsigned long pixel, ppt++; *pwidth++ = right_x - left_x + 1; } - y++; - - MIPOLYSTEPLEFT + y++; + + left_x += left_stepx; + left_e += left_dx; + if (left_e > 0) + { + left_x += left_signdx; + left_e -= left_dy; + } - MIPOLYSTEPRIGHT + right_x += right_stepx; + right_e += right_dx; + if (right_e > 0) + { + right_x += right_signdx; + right_e -= right_dy; + } } } if (!spanData) @@ -178,7 +240,7 @@ miFillPolyHelper (DrawablePtr pDrawable, GCPtr pGC, unsigned long pixel, else { spanRec.count = ppt - spanRec.points; - AppendSpanGroup (pGC, pixel, &spanRec, spanData) + AppendSpanGroup (pGC, pixel, &spanRec, spanData); } } @@ -247,7 +309,7 @@ miFillRectPolyHelper ( y++; } spanRec.count = ppt - spanRec.points; - AppendSpanGroup (pGC, pixel, &spanRec, spanData) + AppendSpanGroup (pGC, pixel, &spanRec, spanData); } } @@ -1097,7 +1159,7 @@ miLineArc ( else { spanRec.count = n; - AppendSpanGroup (pGC, pixel, &spanRec, spanData) + AppendSpanGroup (pGC, pixel, &spanRec, spanData); } } diff --git a/xorg-server/mi/miwideline.h b/xorg-server/mi/miwideline.h index 1f615d689..1665ebfb1 100644 --- a/xorg-server/mi/miwideline.h +++ b/xorg-server/mi/miwideline.h @@ -31,30 +31,6 @@ from The Open Group. #include "mispans.h" #include "mifpoly.h" /* for ICEIL */ -/* - * interface data to span-merging polygon filler - */ - -typedef struct _SpanData { - SpanGroup fgGroup, bgGroup; -} SpanDataRec, *SpanDataPtr; - -#define AppendSpanGroup(pGC, pixel, spanPtr, spanData) { \ - SpanGroup *group, *othergroup = NULL; \ - if (pixel == pGC->fgPixel) \ - { \ - group = &spanData->fgGroup; \ - if (pGC->lineStyle == LineDoubleDash) \ - othergroup = &spanData->bgGroup; \ - } \ - else \ - { \ - group = &spanData->bgGroup; \ - othergroup = &spanData->fgGroup; \ - } \ - miAppendSpans (group, othergroup, spanPtr); \ -} - /* * Polygon edge description for integer wide-line routines */ @@ -99,46 +75,6 @@ typedef struct _LineFace { * macros for polygon fillers */ -#define MIPOLYRELOADLEFT if (!left_height && left_count) { \ - left_height = left->height; \ - left_x = left->x; \ - left_stepx = left->stepx; \ - left_signdx = left->signdx; \ - left_e = left->e; \ - left_dy = left->dy; \ - left_dx = left->dx; \ - --left_count; \ - ++left; \ - } - -#define MIPOLYRELOADRIGHT if (!right_height && right_count) { \ - right_height = right->height; \ - right_x = right->x; \ - right_stepx = right->stepx; \ - right_signdx = right->signdx; \ - right_e = right->e; \ - right_dy = right->dy; \ - right_dx = right->dx; \ - --right_count; \ - ++right; \ - } - -#define MIPOLYSTEPLEFT left_x += left_stepx; \ - left_e += left_dx; \ - if (left_e > 0) \ - { \ - left_x += left_signdx; \ - left_e -= left_dy; \ - } - -#define MIPOLYSTEPRIGHT right_x += right_stepx; \ - right_e += right_dx; \ - if (right_e > 0) \ - { \ - right_x += right_signdx; \ - right_e -= right_dy; \ - } - #define MILINESETPIXEL(pDrawable, pGC, pixel, oldPixel) { \ oldPixel = pGC->fgPixel; \ if (pixel != oldPixel) { \ |