mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-02-05 05:20:28 +01:00
misprite: In SourceValidate, check that it's a Window first
It almost never is. However, you have _lots_ of input devices now, and walking them all on every Composite operation is not the cheapest thing in the world.
This commit is contained in:
parent
d698e62690
commit
4ab93f0566
1 changed files with 17 additions and 16 deletions
|
|
@ -422,23 +422,24 @@ miSpriteSourceValidate (DrawablePtr pDrawable, int x, int y, int width,
|
|||
|
||||
SCREEN_PROLOGUE (pScreen, SourceValidate);
|
||||
|
||||
pScreenPriv = (miSpriteScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
|
||||
miSpriteScreenKey);
|
||||
|
||||
for(pDev = inputInfo.devices; pDev; pDev = pDev->next)
|
||||
if (pDrawable->type == DRAWABLE_WINDOW)
|
||||
{
|
||||
if (DevHasCursor(pDev))
|
||||
{
|
||||
pCursorInfo = MISPRITE(pDev);
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && pCursorInfo->isUp &&
|
||||
pCursorInfo->pScreen == pScreen &&
|
||||
ORG_OVERLAP(&pCursorInfo->saved, pDrawable->x, pDrawable->y,
|
||||
x, y, width, height))
|
||||
{
|
||||
SPRITE_DEBUG (("SourceValidate remove\n"));
|
||||
miSpriteRemoveCursor (pDev, pScreen);
|
||||
}
|
||||
}
|
||||
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates,miSpriteScreenKey);
|
||||
|
||||
for(pDev = inputInfo.devices; pDev; pDev = pDev->next)
|
||||
{
|
||||
if (DevHasCursor(pDev))
|
||||
{
|
||||
pCursorInfo = MISPRITE(pDev);
|
||||
if (pCursorInfo->isUp && pCursorInfo->pScreen == pScreen &&
|
||||
ORG_OVERLAP(&pCursorInfo->saved, pDrawable->x, pDrawable->y,
|
||||
x, y, width, height))
|
||||
{
|
||||
SPRITE_DEBUG (("SourceValidate remove\n"));
|
||||
miSpriteRemoveCursor (pDev, pScreen);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pScreen->SourceValidate)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue