--- dri.c-orig 2006-10-16 20:42:12.000000000 +0200 +++ dri.c.new 2006-10-16 20:51:47.000000000 +0200 @@ -1378,7 +1378,8 @@ DRIDoWakeupHandler(int screenNum, pointe DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); DRILock(pScreen, 0); - if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { + if (pDRIPriv && + pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { /* hide X context by swapping 2D component here */ (*pDRIPriv->pDriverInfo->SwapContext)(pScreen, DRI_3D_SYNC, @@ -1396,7 +1397,8 @@ DRIDoBlockHandler(int screenNum, pointer ScreenPtr pScreen = screenInfo.screens[screenNum]; DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); - if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { + if (pDRIPriv) { + if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { /* hide X context by swapping 2D component here */ (*pDRIPriv->pDriverInfo->SwapContext)(pScreen, DRI_2D_SYNC, @@ -1404,12 +1406,14 @@ DRIDoBlockHandler(int screenNum, pointer NULL, DRI_2D_CONTEXT, pDRIPriv->partial3DContextStore); - } + } - if (pDRIPriv->windowsTouched) + if (pDRIPriv->windowsTouched) DRM_SPINUNLOCK(&pDRIPriv->pSAREA->drawable_lock, 1); - pDRIPriv->windowsTouched = FALSE; - + pDRIPriv->windowsTouched = FALSE; + } else { + fprintf(stderr,"DRIDoBlockHandler: pDRIPriv is NULL"); + } DRIUnlock(pScreen); }