diff options
Diffstat (limited to 'xorg-server')
-rw-r--r-- | xorg-server/dix/devices.c | 6 | ||||
-rw-r--r-- | xorg-server/exa/exa_accel.c | 11 |
2 files changed, 14 insertions, 3 deletions
diff --git a/xorg-server/dix/devices.c b/xorg-server/dix/devices.c index 6329d2810..92b95ed69 100644 --- a/xorg-server/dix/devices.c +++ b/xorg-server/dix/devices.c @@ -842,6 +842,9 @@ CloseDevice(DeviceIntPtr dev) if(dev->valuator && dev->valuator->accelScheme.AccelCleanupProc) dev->valuator->accelScheme.AccelCleanupProc(dev); + while (dev->xkb_interest) + XkbRemoveResourceClient((DevicePtr)dev,dev->xkb_interest->resource); + xfree(dev->name); classes = (ClassesPtr)&dev->key; @@ -853,9 +856,6 @@ CloseDevice(DeviceIntPtr dev) FreeAllDeviceClasses(classes); } - while (dev->xkb_interest) - XkbRemoveResourceClient((DevicePtr)dev,dev->xkb_interest->resource); - if (DevHasCursor(dev) && dev->spriteInfo->sprite) { xfree(dev->spriteInfo->sprite->spriteTrace); xfree(dev->spriteInfo->sprite); diff --git a/xorg-server/exa/exa_accel.c b/xorg-server/exa/exa_accel.c index 4c55a4c54..4680c3709 100644 --- a/xorg-server/exa/exa_accel.c +++ b/xorg-server/exa/exa_accel.c @@ -172,6 +172,17 @@ exaDoPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, if (pExaScr->swappedOut) return FALSE; + if (pExaScr->do_migration) { + ExaMigrationRec pixmaps[1]; + + pixmaps[0].as_dst = TRUE; + pixmaps[0].as_src = FALSE; + pixmaps[0].pPix = pPix; + pixmaps[0].pReg = DamagePendingRegion(pExaPixmap->pDamage); + + exaDoMigration (pixmaps, 1, TRUE); + } + pPix = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff); if (!pPix) |