Revert "Suppress software cursor removal during rotated shadow buffer drawing."

This reverts commit 999b681cf3.
Replacing this with simpler code that just disables SourceValidate
during rotation redisplay.
This commit is contained in:
Keith Packard 2007-04-19 17:49:34 -07:00
parent 0a9239ec25
commit 806a537e64
4 changed files with 5 additions and 45 deletions

View File

@ -39,7 +39,6 @@
#include "xf86Crtc.h"
#include "xf86Modes.h"
#include "xf86RandR12.h"
#include "misprite.h"
#include "X11/extensions/render.h"
#define DPMS_SERVER
#include "X11/extensions/dpms.h"
@ -280,11 +279,7 @@ xf86RotateRedisplay(ScreenPtr pScreen)
if (REGION_NOTEMPTY(pScreen, region))
{
int c;
#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(7,2,0,0,dummy)
/* Disable software cursor removal for this drawing */
miSpriteDrawInternal(pScreen, TRUE);
#endif
for (c = 0; c < xf86_config->num_crtc; c++)
{
xf86CrtcPtr crtc = xf86_config->crtc[c];
@ -309,9 +304,6 @@ xf86RotateRedisplay(ScreenPtr pScreen)
REGION_UNINIT (pScreen, &crtc_damage);
}
}
#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(7,2,0,0,dummy)
miSpriteDrawInternal(pScreen, FALSE);
#endif
DamageEmpty(damage);
}
}

View File

@ -288,8 +288,7 @@ miSpriteGetImage (pDrawable, sx, sy, w, h, format, planemask, pdstLine)
pScreenPriv = (miSpriteScreenPtr) pScreen->devPrivates[miSpriteScreenIndex].ptr;
if (pScreenPriv->internalDraw == 0 &&
pDrawable->type == DRAWABLE_WINDOW &&
if (pDrawable->type == DRAWABLE_WINDOW &&
pScreenPriv->isUp &&
ORG_OVERLAP(&pScreenPriv->saved,pDrawable->x,pDrawable->y, sx, sy, w, h))
{
@ -319,8 +318,7 @@ miSpriteGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart)
pScreenPriv = (miSpriteScreenPtr) pScreen->devPrivates[miSpriteScreenIndex].ptr;
if (pScreenPriv->internalDraw == 0 &&
pDrawable->type == DRAWABLE_WINDOW && pScreenPriv->isUp)
if (pDrawable->type == DRAWABLE_WINDOW && pScreenPriv->isUp)
{
DDXPointPtr pts;
int *widths;
@ -362,8 +360,7 @@ miSpriteSourceValidate (pDrawable, x, y, width, height)
pScreenPriv = (miSpriteScreenPtr) pScreen->devPrivates[miSpriteScreenIndex].ptr;
if (pScreenPriv->internalDraw == 0 &&
pDrawable->type == DRAWABLE_WINDOW && pScreenPriv->isUp &&
if (pDrawable->type == DRAWABLE_WINDOW && pScreenPriv->isUp &&
ORG_OVERLAP(&pScreenPriv->saved, pDrawable->x, pDrawable->y,
x, y, width, height))
{
@ -389,8 +386,7 @@ miSpriteCopyWindow (WindowPtr pWindow, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
/*
* Damage will take care of destination check
*/
if (pScreenPriv->internalDraw == 0 &&
pScreenPriv->isUp &&
if (pScreenPriv->isUp &&
RECT_IN_REGION (pScreen, prgnSrc, &pScreenPriv->saved) != rgnOUT)
{
SPRITE_DEBUG (("CopyWindow remove\n"));
@ -831,28 +827,3 @@ miSpriteComputeSaved (pScreen)
pScreenPriv->saved.x2 = pScreenPriv->saved.x1 + w + wpad * 2;
pScreenPriv->saved.y2 = pScreenPriv->saved.y1 + h + hpad * 2;
}
/**
* Enables internal drawing support, which disables removal of the
* cursor when the screen pixmap is sourced from.
*
* This can be used to allow software cursors to be read by RandR rotation
* shadow code.
*/
void
miSpriteDrawInternal(ScreenPtr pScreen, Bool enable)
{
miSpriteScreenPtr pScreenPriv;
/* Check that miSprite has been set up this generation */
if (miSpriteGeneration != serverGeneration)
return;
pScreenPriv = (miSpriteScreenPtr)
pScreen->devPrivates[miSpriteScreenIndex].ptr;
if (enable)
pScreenPriv->internalDraw++;
else
pScreenPriv->internalDraw--;
}

View File

@ -92,5 +92,3 @@ extern Bool miSpriteInitialize(
miSpriteCursorFuncPtr /*cursorFuncs*/,
miPointerScreenFuncPtr /*screenFuncs*/
);
void miSpriteDrawInternal(ScreenPtr pScreen, Bool enable);

View File

@ -76,7 +76,6 @@ typedef struct {
WindowPtr pCacheWin; /* window the cursor last seen in */
Bool isInCacheWin;
Bool checkPixels; /* check colormap collision */
int internalDraw;
xColorItem colors[2];
ColormapPtr pInstalledMap;
ColormapPtr pColormap;