Remove the PaintWindow optimization.
This was an attempt to avoid scratch gc creation and validation for paintwin because that was expensive. This is not the case in current servers, and the danger of failure to implement it correctly (as seen in all previous implementations) is high enough to justify removing it. No performance difference detected with x11perf -create -move -resize -circulate on Xvfb. Leave the screen hooks for PaintWindow* in for now to avoid ABI change.
This commit is contained in:
@@ -1009,52 +1009,6 @@ kaaFillRegionTiled (DrawablePtr pDrawable,
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
kaaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what)
|
||||
{
|
||||
|
||||
if (!REGION_NUM_RECTS(pRegion))
|
||||
return;
|
||||
switch (what) {
|
||||
case PW_BACKGROUND:
|
||||
switch (pWin->backgroundState) {
|
||||
case None:
|
||||
return;
|
||||
case ParentRelative:
|
||||
do {
|
||||
pWin = pWin->parent;
|
||||
} while (pWin->backgroundState == ParentRelative);
|
||||
(*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
|
||||
what);
|
||||
return;
|
||||
case BackgroundPixel:
|
||||
kaaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel);
|
||||
return;
|
||||
#if 0
|
||||
case BackgroundPixmap:
|
||||
kaaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap);
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case PW_BORDER:
|
||||
if (pWin->borderIsPixel)
|
||||
{
|
||||
kaaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel);
|
||||
return;
|
||||
}
|
||||
#if 0
|
||||
else
|
||||
{
|
||||
kaaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
KdCheckPaintWindow (pWin, pRegion, what);
|
||||
}
|
||||
|
||||
Bool
|
||||
kaaDrawInit (ScreenPtr pScreen,
|
||||
KaaScreenInfoPtr pScreenInfo)
|
||||
@@ -1091,8 +1045,6 @@ kaaDrawInit (ScreenPtr pScreen,
|
||||
*/
|
||||
pScreen->CreateGC = kaaCreateGC;
|
||||
pScreen->CopyWindow = kaaCopyWindow;
|
||||
pScreen->PaintWindowBackground = kaaPaintWindow;
|
||||
pScreen->PaintWindowBorder = kaaPaintWindow;
|
||||
#ifdef RENDER
|
||||
if (ps) {
|
||||
ps->Composite = kaaComposite;
|
||||
|
||||
@@ -223,14 +223,6 @@ KdCheckGetSpans (DrawablePtr pDrawable,
|
||||
fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
|
||||
}
|
||||
|
||||
void
|
||||
KdCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what)
|
||||
{
|
||||
kaaWaitSync (pWin->drawable.pScreen);
|
||||
kaaDrawableDirty ((DrawablePtr)pWin);
|
||||
fbPaintWindow (pWin, pRegion, what);
|
||||
}
|
||||
|
||||
void
|
||||
KdCheckCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
|
||||
{
|
||||
@@ -265,8 +257,6 @@ KdScreenInitAsync (ScreenPtr pScreen)
|
||||
{
|
||||
pScreen->GetImage = KdCheckGetImage;
|
||||
pScreen->GetSpans = KdCheckGetSpans;
|
||||
pScreen->PaintWindowBackground = KdCheckPaintWindow;
|
||||
pScreen->PaintWindowBorder = KdCheckPaintWindow;
|
||||
pScreen->CopyWindow = KdCheckCopyWindow;
|
||||
#ifdef RENDER
|
||||
KdPictureInitAsync (pScreen);
|
||||
|
||||
@@ -611,9 +611,6 @@ KdCheckGetSpans (DrawablePtr pDrawable,
|
||||
int nspans,
|
||||
char *pdstStart);
|
||||
|
||||
void
|
||||
KdCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what);
|
||||
|
||||
void
|
||||
KdCheckCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user