Only in .: orig diff -u orig/tdfx_dri.c ./tdfx_dri.c --- orig/tdfx_dri.c 2006-11-15 17:25:24.386683040 -0500 +++ ./tdfx_dri.c 2006-11-15 17:39:32.960680184 -0500 @@ -249,6 +249,12 @@ { ScreenPtr pScreen = screenInfo.screens[screenNum]; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + TDFXPtr pTDFX = TDFXPTR(pScrn); + + pTDFX->pDRIInfo->wrap.WakeupHandler = pTDFX->coreWakeupHandler; + (*pTDFX->pDRIInfo->wrap.WakeupHandler) (screenNum, wakeupData, result, pReadmask); + pTDFX->pDRIInfo->wrap.WakeupHandler = TDFXDoWakeupHandler; + TDFXNeedSync(pScrn); } @@ -259,8 +265,14 @@ { ScreenPtr pScreen = screenInfo.screens[screenNum]; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + TDFXPtr pTDFX = TDFXPTR(pScrn); TDFXCheckSync(pScrn); + + pTDFX->pDRIInfo->wrap.BlockHandler = pTDFX->coreBlockHandler; + (*pTDFX->pDRIInfo->wrap.BlockHandler) (screenNum, blockData, pTimeout, pReadmask); + pTDFX->pDRIInfo->wrap.BlockHandler = TDFXDoBlockHandler; + } Bool TDFXDRIScreenInit(ScreenPtr pScreen) @@ -352,7 +364,9 @@ pDRIInfo->wrap.ValidateTree = 0; pDRIInfo->wrap.PostValidateTree = 0; + pTDFX->coreBlockHandler = pDRIInfo->wrap.BlockHandler; pDRIInfo->wrap.BlockHandler = TDFXDoBlockHandler; + pTDFX->coreWakeupHandler = pDRIInfo->wrap.WakeupHandler; pDRIInfo->wrap.WakeupHandler = TDFXDoWakeupHandler; if (SAREA_MAX_DRAWABLES < TDFX_MAX_DRAWABLES) Only in .: tdfx_fixlocking.diff diff -u orig/tdfx.h ./tdfx.h --- orig/tdfx.h 2006-11-15 17:25:24.386683040 -0500 +++ ./tdfx.h 2006-11-15 17:26:25.281425632 -0500 @@ -229,6 +229,10 @@ XF86VideoAdaptorPtr textureAdaptor; ScreenBlockHandlerProcPtr BlockHandler; OptionInfoPtr Options; + + ScreenWakeupHandlerProcPtr coreWakeupHandler; + ScreenBlockHandlerProcPtr coreBlockHandler; + } TDFXRec; typedef struct {