--- render/animcur.c~ 2011-08-02 09:09:21.000000000 +0200 +++ render/animcur.c 2011-08-10 22:13:24.878366650 +0200 @@ -207,11 +207,15 @@ { AnimCurScreenPtr as = GetAnimCurScreen(pScreen); Bool ret; + DeviceIntPtr pMasterDev = pDev->type == MASTER_POINTER ? pDev : pDev->master; + + if (!pMasterDev) + return FALSE; Unwrap (as, pScreen, DisplayCursor); if (IsAnimCur(pCursor)) { - if (pCursor != pDev->spriteInfo->anim.pCursor) + if (pCursor != pMasterDev->spriteInfo->anim.pCursor) { AnimCurPtr ac = GetAnimCur(pCursor); @@ -219,10 +223,10 @@ (pDev, pScreen, ac->elts[0].pCursor); if (ret) { - pDev->spriteInfo->anim.elt = 0; - pDev->spriteInfo->anim.time = GetTimeInMillis () + ac->elts[0].delay; - pDev->spriteInfo->anim.pCursor = pCursor; - pDev->spriteInfo->anim.pScreen = pScreen; + pMasterDev->spriteInfo->anim.elt = 0; + pMasterDev->spriteInfo->anim.time = GetTimeInMillis () + ac->elts[0].delay; + pMasterDev->spriteInfo->anim.pCursor = pCursor; + pMasterDev->spriteInfo->anim.pScreen = pScreen; if (!as->BlockHandler) Wrap(as, pScreen, BlockHandler, AnimCurScreenBlockHandler); @@ -233,8 +237,8 @@ } else { - pDev->spriteInfo->anim.pCursor = 0; - pDev->spriteInfo->anim.pScreen = 0; + pMasterDev->spriteInfo->anim.pCursor = 0; + pMasterDev->spriteInfo->anim.pScreen = 0; ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor); } Wrap (as, pScreen, DisplayCursor, AnimCurDisplayCursor);